Perform line wrapping and indenting by default in ruleutils.c.

This patch changes pg_get_viewdef() and allied functions so that
PRETTY_INDENT processing is always enabled.  Per discussion, only the
PRETTY_PAREN processing (that is, stripping of "unnecessary" parentheses)
poses any real forward-compatibility risk, so we may as well make dump
output look as nice as we safely can.

Also, set the default wrap length to zero (i.e, wrap after each SELECT
or FROM list item), since there's no very principled argument for the
former default of 80-column wrapping, and most people seem to agree this
way looks better.

Marko Tiikkaja, reviewed by Jeevan Chalke, further hacking by Tom Lane
This commit is contained in:
Tom Lane 2013-02-03 15:56:45 -05:00
parent 330ed4ac6c
commit 62e666400d
12 changed files with 1496 additions and 348 deletions

View File

@ -13872,8 +13872,7 @@ SELECT pg_type_is_visible('myschema.widget'::regtype);
<row>
<entry><literal><function>pg_get_viewdef(<parameter>view_name</parameter>, <parameter>pretty_bool</>)</function></literal></entry>
<entry><type>text</type></entry>
<entry>get underlying <command>SELECT</command> command for view;
lines with fields are wrapped to 80 columns if <parameter>pretty_bool</parameter> is true (<emphasis>deprecated</emphasis>)</entry>
<entry>get underlying <command>SELECT</command> command for view (<emphasis>deprecated</emphasis>)</entry>
</row>
<row>
<entry><literal><function>pg_get_viewdef(<parameter>view_oid</parameter>)</function></literal></entry>
@ -13883,15 +13882,14 @@ SELECT pg_type_is_visible('myschema.widget'::regtype);
<row>
<entry><literal><function>pg_get_viewdef(<parameter>view_oid</parameter>, <parameter>pretty_bool</>)</function></literal></entry>
<entry><type>text</type></entry>
<entry>get underlying <command>SELECT</command> command for view;
lines with fields are wrapped to 80 columns if <parameter>pretty_bool</parameter> is true</entry>
<entry>get underlying <command>SELECT</command> command for view</entry>
</row>
<row>
<entry><literal><function>pg_get_viewdef(<parameter>view_oid</parameter>, <parameter>wrap_column_int</>)</function></literal></entry>
<entry><type>text</type></entry>
<entry>get underlying <command>SELECT</command> command for view;
lines with fields are wrapped to specified number of columns,
pretty printing is implied</entry>
pretty-printing is implied</entry>
</row>
<row>
<entry><literal><function>pg_options_to_table(<parameter>reloptions</parameter>)</function></literal></entry>

View File

@ -74,8 +74,8 @@
#define PRETTYFLAG_PAREN 1
#define PRETTYFLAG_INDENT 2
/* Default line length for pretty-print wrapping */
#define WRAP_COLUMN_DEFAULT 79
/* Default line length for pretty-print wrapping: 0 means wrap always */
#define WRAP_COLUMN_DEFAULT 0
/* macro to test if pretty action needed */
#define PRETTY_PAREN(context) ((context)->prettyFlags & PRETTYFLAG_PAREN)
@ -416,8 +416,10 @@ Datum
pg_get_ruledef(PG_FUNCTION_ARGS)
{
Oid ruleoid = PG_GETARG_OID(0);
int prettyFlags;
PG_RETURN_TEXT_P(string_to_text(pg_get_ruledef_worker(ruleoid, 0)));
prettyFlags = PRETTYFLAG_INDENT;
PG_RETURN_TEXT_P(string_to_text(pg_get_ruledef_worker(ruleoid, prettyFlags)));
}
@ -428,7 +430,7 @@ pg_get_ruledef_ext(PG_FUNCTION_ARGS)
bool pretty = PG_GETARG_BOOL(1);
int prettyFlags;
prettyFlags = pretty ? PRETTYFLAG_PAREN | PRETTYFLAG_INDENT : 0;
prettyFlags = pretty ? PRETTYFLAG_PAREN | PRETTYFLAG_INDENT : PRETTYFLAG_INDENT;
PG_RETURN_TEXT_P(string_to_text(pg_get_ruledef_worker(ruleoid, prettyFlags)));
}
@ -512,8 +514,10 @@ pg_get_viewdef(PG_FUNCTION_ARGS)
{
/* By OID */
Oid viewoid = PG_GETARG_OID(0);
int prettyFlags;
PG_RETURN_TEXT_P(string_to_text(pg_get_viewdef_worker(viewoid, 0, -1)));
prettyFlags = PRETTYFLAG_INDENT;
PG_RETURN_TEXT_P(string_to_text(pg_get_viewdef_worker(viewoid, prettyFlags, WRAP_COLUMN_DEFAULT)));
}
@ -525,7 +529,7 @@ pg_get_viewdef_ext(PG_FUNCTION_ARGS)
bool pretty = PG_GETARG_BOOL(1);
int prettyFlags;
prettyFlags = pretty ? PRETTYFLAG_PAREN | PRETTYFLAG_INDENT : 0;
prettyFlags = pretty ? PRETTYFLAG_PAREN | PRETTYFLAG_INDENT : PRETTYFLAG_INDENT;
PG_RETURN_TEXT_P(string_to_text(pg_get_viewdef_worker(viewoid, prettyFlags, WRAP_COLUMN_DEFAULT)));
}
@ -536,12 +540,10 @@ pg_get_viewdef_wrap(PG_FUNCTION_ARGS)
Oid viewoid = PG_GETARG_OID(0);
int wrap = PG_GETARG_INT32(1);
int prettyFlags;
char *result;
/* calling this implies we want pretty printing */
prettyFlags = PRETTYFLAG_PAREN | PRETTYFLAG_INDENT;
result = pg_get_viewdef_worker(viewoid, prettyFlags, wrap);
PG_RETURN_TEXT_P(string_to_text(result));
PG_RETURN_TEXT_P(string_to_text(pg_get_viewdef_worker(viewoid, prettyFlags, wrap)));
}
Datum
@ -549,14 +551,17 @@ pg_get_viewdef_name(PG_FUNCTION_ARGS)
{
/* By qualified name */
text *viewname = PG_GETARG_TEXT_P(0);
int prettyFlags;
RangeVar *viewrel;
Oid viewoid;
prettyFlags = PRETTYFLAG_INDENT;
/* Look up view name. Can't lock it - we might not have privileges. */
viewrel = makeRangeVarFromNameList(textToQualifiedNameList(viewname));
viewoid = RangeVarGetRelid(viewrel, NoLock, false);
PG_RETURN_TEXT_P(string_to_text(pg_get_viewdef_worker(viewoid, 0, -1)));
PG_RETURN_TEXT_P(string_to_text(pg_get_viewdef_worker(viewoid, prettyFlags, WRAP_COLUMN_DEFAULT)));
}
@ -570,7 +575,7 @@ pg_get_viewdef_name_ext(PG_FUNCTION_ARGS)
RangeVar *viewrel;
Oid viewoid;
prettyFlags = pretty ? PRETTYFLAG_PAREN | PRETTYFLAG_INDENT : 0;
prettyFlags = pretty ? PRETTYFLAG_PAREN | PRETTYFLAG_INDENT : PRETTYFLAG_INDENT;
/* Look up view name. Can't lock it - we might not have privileges. */
viewrel = makeRangeVarFromNameList(textToQualifiedNameList(viewname));
@ -848,7 +853,7 @@ pg_get_triggerdef_worker(Oid trigid, bool pretty)
context.windowClause = NIL;
context.windowTList = NIL;
context.varprefix = true;
context.prettyFlags = pretty ? PRETTYFLAG_PAREN : 0;
context.prettyFlags = pretty ? PRETTYFLAG_PAREN | PRETTYFLAG_INDENT : PRETTYFLAG_INDENT;
context.wrapColumn = WRAP_COLUMN_DEFAULT;
context.indentLevel = PRETTYINDENT_STD;
@ -911,10 +916,13 @@ Datum
pg_get_indexdef(PG_FUNCTION_ARGS)
{
Oid indexrelid = PG_GETARG_OID(0);
int prettyFlags;
prettyFlags = PRETTYFLAG_INDENT;
PG_RETURN_TEXT_P(string_to_text(pg_get_indexdef_worker(indexrelid, 0,
NULL,
false, false, 0)));
false, false,
prettyFlags)));
}
Datum
@ -925,7 +933,7 @@ pg_get_indexdef_ext(PG_FUNCTION_ARGS)
bool pretty = PG_GETARG_BOOL(2);
int prettyFlags;
prettyFlags = pretty ? PRETTYFLAG_PAREN | PRETTYFLAG_INDENT : 0;
prettyFlags = pretty ? PRETTYFLAG_PAREN | PRETTYFLAG_INDENT : PRETTYFLAG_INDENT;
PG_RETURN_TEXT_P(string_to_text(pg_get_indexdef_worker(indexrelid, colno,
NULL,
colno != 0,
@ -933,7 +941,7 @@ pg_get_indexdef_ext(PG_FUNCTION_ARGS)
prettyFlags)));
}
/* Internal version that returns a palloc'd C string */
/* Internal version that returns a palloc'd C string; no pretty-printing */
char *
pg_get_indexdef_string(Oid indexrelid)
{
@ -946,7 +954,7 @@ pg_get_indexdef_columns(Oid indexrelid, bool pretty)
{
int prettyFlags;
prettyFlags = pretty ? PRETTYFLAG_PAREN | PRETTYFLAG_INDENT : 0;
prettyFlags = pretty ? PRETTYFLAG_PAREN | PRETTYFLAG_INDENT : PRETTYFLAG_INDENT;
return pg_get_indexdef_worker(indexrelid, 0, NULL, true, false, prettyFlags);
}
@ -1245,9 +1253,12 @@ Datum
pg_get_constraintdef(PG_FUNCTION_ARGS)
{
Oid constraintId = PG_GETARG_OID(0);
int prettyFlags;
prettyFlags = PRETTYFLAG_INDENT;
PG_RETURN_TEXT_P(string_to_text(pg_get_constraintdef_worker(constraintId,
false, 0)));
false,
prettyFlags)));
}
Datum
@ -1257,12 +1268,13 @@ pg_get_constraintdef_ext(PG_FUNCTION_ARGS)
bool pretty = PG_GETARG_BOOL(1);
int prettyFlags;
prettyFlags = pretty ? PRETTYFLAG_PAREN | PRETTYFLAG_INDENT : 0;
prettyFlags = pretty ? PRETTYFLAG_PAREN | PRETTYFLAG_INDENT : PRETTYFLAG_INDENT;
PG_RETURN_TEXT_P(string_to_text(pg_get_constraintdef_worker(constraintId,
false, prettyFlags)));
false,
prettyFlags)));
}
/* Internal version that returns a palloc'd C string */
/* Internal version that returns a palloc'd C string; no pretty-printing */
char *
pg_get_constraintdef_string(Oid constraintId)
{
@ -1615,8 +1627,11 @@ pg_get_expr(PG_FUNCTION_ARGS)
{
text *expr = PG_GETARG_TEXT_P(0);
Oid relid = PG_GETARG_OID(1);
int prettyFlags;
char *relname;
prettyFlags = PRETTYFLAG_INDENT;
if (OidIsValid(relid))
{
/* Get the name for the relation */
@ -1634,7 +1649,7 @@ pg_get_expr(PG_FUNCTION_ARGS)
else
relname = NULL;
PG_RETURN_TEXT_P(pg_get_expr_worker(expr, relid, relname, 0));
PG_RETURN_TEXT_P(pg_get_expr_worker(expr, relid, relname, prettyFlags));
}
Datum
@ -1646,7 +1661,7 @@ pg_get_expr_ext(PG_FUNCTION_ARGS)
int prettyFlags;
char *relname;
prettyFlags = pretty ? PRETTYFLAG_PAREN | PRETTYFLAG_INDENT : 0;
prettyFlags = pretty ? PRETTYFLAG_PAREN | PRETTYFLAG_INDENT : PRETTYFLAG_INDENT;
if (OidIsValid(relid))
{

View File

@ -943,9 +943,10 @@ select * from agg_view1;
(1 row)
select pg_get_viewdef('agg_view1'::regclass);
pg_get_viewdef
--------------------------------------------------------------------------------------------------------------------------------------------------------
SELECT aggfns(v.a, v.b, v.c) AS aggfns FROM (VALUES (1,3,'foo'::text), (0,NULL::integer,NULL::text), (2,2,'bar'::text), (3,1,'baz'::text)) v(a, b, c);
pg_get_viewdef
---------------------------------------------------------------------------------------------------------------------
SELECT aggfns(v.a, v.b, v.c) AS aggfns +
FROM ( VALUES (1,3,'foo'::text), (0,NULL::integer,NULL::text), (2,2,'bar'::text), (3,1,'baz'::text)) v(a, b, c);
(1 row)
create or replace view agg_view1 as
@ -959,9 +960,11 @@ select * from agg_view1;
(1 row)
select pg_get_viewdef('agg_view1'::regclass);
pg_get_viewdef
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SELECT aggfns(DISTINCT v.a, v.b, v.c) AS aggfns FROM (VALUES (1,3,'foo'::text), (0,NULL::integer,NULL::text), (2,2,'bar'::text), (3,1,'baz'::text)) v(a, b, c), generate_series(1, 3) i(i);
pg_get_viewdef
----------------------------------------------------------------------------------------------------------------------
SELECT aggfns(DISTINCT v.a, v.b, v.c) AS aggfns +
FROM ( VALUES (1,3,'foo'::text), (0,NULL::integer,NULL::text), (2,2,'bar'::text), (3,1,'baz'::text)) v(a, b, c), +
generate_series(1, 3) i(i);
(1 row)
create or replace view agg_view1 as
@ -975,9 +978,11 @@ select * from agg_view1;
(1 row)
select pg_get_viewdef('agg_view1'::regclass);
pg_get_viewdef
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SELECT aggfns(DISTINCT v.a, v.b, v.c ORDER BY v.b) AS aggfns FROM (VALUES (1,3,'foo'::text), (0,NULL::integer,NULL::text), (2,2,'bar'::text), (3,1,'baz'::text)) v(a, b, c), generate_series(1, 3) i(i);
pg_get_viewdef
----------------------------------------------------------------------------------------------------------------------
SELECT aggfns(DISTINCT v.a, v.b, v.c ORDER BY v.b) AS aggfns +
FROM ( VALUES (1,3,'foo'::text), (0,NULL::integer,NULL::text), (2,2,'bar'::text), (3,1,'baz'::text)) v(a, b, c), +
generate_series(1, 3) i(i);
(1 row)
create or replace view agg_view1 as
@ -990,9 +995,10 @@ select * from agg_view1;
(1 row)
select pg_get_viewdef('agg_view1'::regclass);
pg_get_viewdef
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SELECT aggfns(v.a, v.b, v.c ORDER BY (v.b + 1)) AS aggfns FROM (VALUES (1,3,'foo'::text), (0,NULL::integer,NULL::text), (2,2,'bar'::text), (3,1,'baz'::text)) v(a, b, c);
pg_get_viewdef
---------------------------------------------------------------------------------------------------------------------
SELECT aggfns(v.a, v.b, v.c ORDER BY (v.b + 1)) AS aggfns +
FROM ( VALUES (1,3,'foo'::text), (0,NULL::integer,NULL::text), (2,2,'bar'::text), (3,1,'baz'::text)) v(a, b, c);
(1 row)
create or replace view agg_view1 as
@ -1005,9 +1011,10 @@ select * from agg_view1;
(1 row)
select pg_get_viewdef('agg_view1'::regclass);
pg_get_viewdef
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
SELECT aggfns(v.a, v.a, v.c ORDER BY v.b) AS aggfns FROM (VALUES (1,3,'foo'::text), (0,NULL::integer,NULL::text), (2,2,'bar'::text), (3,1,'baz'::text)) v(a, b, c);
pg_get_viewdef
---------------------------------------------------------------------------------------------------------------------
SELECT aggfns(v.a, v.a, v.c ORDER BY v.b) AS aggfns +
FROM ( VALUES (1,3,'foo'::text), (0,NULL::integer,NULL::text), (2,2,'bar'::text), (3,1,'baz'::text)) v(a, b, c);
(1 row)
create or replace view agg_view1 as
@ -1020,9 +1027,10 @@ select * from agg_view1;
(1 row)
select pg_get_viewdef('agg_view1'::regclass);
pg_get_viewdef
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SELECT aggfns(v.a, v.b, v.c ORDER BY v.c USING ~<~ NULLS LAST) AS aggfns FROM (VALUES (1,3,'foo'::text), (0,NULL::integer,NULL::text), (2,2,'bar'::text), (3,1,'baz'::text)) v(a, b, c);
pg_get_viewdef
---------------------------------------------------------------------------------------------------------------------
SELECT aggfns(v.a, v.b, v.c ORDER BY v.c USING ~<~ NULLS LAST) AS aggfns +
FROM ( VALUES (1,3,'foo'::text), (0,NULL::integer,NULL::text), (2,2,'bar'::text), (3,1,'baz'::text)) v(a, b, c);
(1 row)
create or replace view agg_view1 as
@ -1036,9 +1044,11 @@ select * from agg_view1;
(1 row)
select pg_get_viewdef('agg_view1'::regclass);
pg_get_viewdef
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SELECT aggfns(DISTINCT v.a, v.b, v.c ORDER BY v.a, v.c USING ~<~ NULLS LAST, v.b) AS aggfns FROM (VALUES (1,3,'foo'::text), (0,NULL::integer,NULL::text), (2,2,'bar'::text), (3,1,'baz'::text)) v(a, b, c), generate_series(1, 2) i(i);
pg_get_viewdef
----------------------------------------------------------------------------------------------------------------------
SELECT aggfns(DISTINCT v.a, v.b, v.c ORDER BY v.a, v.c USING ~<~ NULLS LAST, v.b) AS aggfns +
FROM ( VALUES (1,3,'foo'::text), (0,NULL::integer,NULL::text), (2,2,'bar'::text), (3,1,'baz'::text)) v(a, b, c), +
generate_series(1, 2) i(i);
(1 row)
drop view agg_view1;

View File

@ -194,11 +194,19 @@ CREATE VIEW collview2 AS SELECT a, b FROM collate_test1 ORDER BY b COLLATE "C";
CREATE VIEW collview3 AS SELECT a, lower((x || x) COLLATE "POSIX") FROM collate_test10;
SELECT table_name, view_definition FROM information_schema.views
WHERE table_name LIKE 'collview%' ORDER BY 1;
table_name | view_definition
------------+------------------------------------------------------------------------------------------------------------------------
collview1 | SELECT collate_test1.a, collate_test1.b FROM collate_test1 WHERE ((collate_test1.b COLLATE "C") >= 'bbc'::text);
collview2 | SELECT collate_test1.a, collate_test1.b FROM collate_test1 ORDER BY (collate_test1.b COLLATE "C");
collview3 | SELECT collate_test10.a, lower(((collate_test10.x || collate_test10.x) COLLATE "POSIX")) AS lower FROM collate_test10;
table_name | view_definition
------------+------------------------------------------------------------------------------
collview1 | SELECT collate_test1.a, +
| collate_test1.b +
| FROM collate_test1 +
| WHERE ((collate_test1.b COLLATE "C") >= 'bbc'::text);
collview2 | SELECT collate_test1.a, +
| collate_test1.b +
| FROM collate_test1 +
| ORDER BY (collate_test1.b COLLATE "C");
collview3 | SELECT collate_test10.a, +
| lower(((collate_test10.x || collate_test10.x) COLLATE "POSIX")) AS lower+
| FROM collate_test10;
(3 rows)
-- collation propagation in various expression types

View File

@ -312,7 +312,9 @@ CREATE VIEW aliased_view_4 AS
f2 | integer | | plain |
f3 | text | | extended |
View definition:
SELECT tt1.f1, tt1.f2, tt1.f3
SELECT tt1.f1,
tt1.f2,
tt1.f3
FROM tt1
WHERE (EXISTS ( SELECT 1
FROM tx1
@ -326,7 +328,9 @@ View definition:
f2 | integer | | plain |
f3 | text | | extended |
View definition:
SELECT a1.f1, a1.f2, a1.f3
SELECT a1.f1,
a1.f2,
a1.f3
FROM tt1 a1
WHERE (EXISTS ( SELECT 1
FROM tx1
@ -340,7 +344,9 @@ View definition:
f2 | integer | | plain |
f3 | text | | extended |
View definition:
SELECT tt1.f1, tt1.f2, tt1.f3
SELECT tt1.f1,
tt1.f2,
tt1.f3
FROM tt1
WHERE (EXISTS ( SELECT 1
FROM tx1 a2
@ -354,7 +360,9 @@ View definition:
f2 | integer | | plain |
f3 | text | | extended |
View definition:
SELECT tt1.y1, tt1.f2, tt1.f3
SELECT tt1.y1,
tt1.f2,
tt1.f3
FROM temp_view_test.tt1
WHERE (EXISTS ( SELECT 1
FROM tt1 tt1_1
@ -369,7 +377,9 @@ ALTER TABLE tx1 RENAME TO a1;
f2 | integer | | plain |
f3 | text | | extended |
View definition:
SELECT tt1.f1, tt1.f2, tt1.f3
SELECT tt1.f1,
tt1.f2,
tt1.f3
FROM tt1
WHERE (EXISTS ( SELECT 1
FROM a1
@ -383,7 +393,9 @@ View definition:
f2 | integer | | plain |
f3 | text | | extended |
View definition:
SELECT a1.f1, a1.f2, a1.f3
SELECT a1.f1,
a1.f2,
a1.f3
FROM tt1 a1
WHERE (EXISTS ( SELECT 1
FROM a1 a1_1
@ -397,7 +409,9 @@ View definition:
f2 | integer | | plain |
f3 | text | | extended |
View definition:
SELECT tt1.f1, tt1.f2, tt1.f3
SELECT tt1.f1,
tt1.f2,
tt1.f3
FROM tt1
WHERE (EXISTS ( SELECT 1
FROM a1 a2
@ -411,7 +425,9 @@ View definition:
f2 | integer | | plain |
f3 | text | | extended |
View definition:
SELECT tt1.y1, tt1.f2, tt1.f3
SELECT tt1.y1,
tt1.f2,
tt1.f3
FROM temp_view_test.tt1
WHERE (EXISTS ( SELECT 1
FROM tt1 tt1_1
@ -426,7 +442,9 @@ ALTER TABLE tt1 RENAME TO a2;
f2 | integer | | plain |
f3 | text | | extended |
View definition:
SELECT a2.f1, a2.f2, a2.f3
SELECT a2.f1,
a2.f2,
a2.f3
FROM a2
WHERE (EXISTS ( SELECT 1
FROM a1
@ -440,7 +458,9 @@ View definition:
f2 | integer | | plain |
f3 | text | | extended |
View definition:
SELECT a1.f1, a1.f2, a1.f3
SELECT a1.f1,
a1.f2,
a1.f3
FROM a2 a1
WHERE (EXISTS ( SELECT 1
FROM a1 a1_1
@ -454,7 +474,9 @@ View definition:
f2 | integer | | plain |
f3 | text | | extended |
View definition:
SELECT a2.f1, a2.f2, a2.f3
SELECT a2.f1,
a2.f2,
a2.f3
FROM a2
WHERE (EXISTS ( SELECT 1
FROM a1 a2_1
@ -468,7 +490,9 @@ View definition:
f2 | integer | | plain |
f3 | text | | extended |
View definition:
SELECT tt1.y1, tt1.f2, tt1.f3
SELECT tt1.y1,
tt1.f2,
tt1.f3
FROM temp_view_test.tt1
WHERE (EXISTS ( SELECT 1
FROM a2
@ -483,7 +507,9 @@ ALTER TABLE a1 RENAME TO tt1;
f2 | integer | | plain |
f3 | text | | extended |
View definition:
SELECT a2.f1, a2.f2, a2.f3
SELECT a2.f1,
a2.f2,
a2.f3
FROM a2
WHERE (EXISTS ( SELECT 1
FROM tt1
@ -497,7 +523,9 @@ View definition:
f2 | integer | | plain |
f3 | text | | extended |
View definition:
SELECT a1.f1, a1.f2, a1.f3
SELECT a1.f1,
a1.f2,
a1.f3
FROM a2 a1
WHERE (EXISTS ( SELECT 1
FROM tt1
@ -511,7 +539,9 @@ View definition:
f2 | integer | | plain |
f3 | text | | extended |
View definition:
SELECT a2.f1, a2.f2, a2.f3
SELECT a2.f1,
a2.f2,
a2.f3
FROM a2
WHERE (EXISTS ( SELECT 1
FROM tt1 a2_1
@ -525,7 +555,9 @@ View definition:
f2 | integer | | plain |
f3 | text | | extended |
View definition:
SELECT tt1.y1, tt1.f2, tt1.f3
SELECT tt1.y1,
tt1.f2,
tt1.f3
FROM temp_view_test.tt1
WHERE (EXISTS ( SELECT 1
FROM a2
@ -541,7 +573,9 @@ ALTER TABLE tx1 SET SCHEMA temp_view_test;
f2 | integer | | plain |
f3 | text | | extended |
View definition:
SELECT tx1.f1, tx1.f2, tx1.f3
SELECT tx1.f1,
tx1.f2,
tx1.f3
FROM temp_view_test.tx1
WHERE (EXISTS ( SELECT 1
FROM tt1
@ -555,7 +589,9 @@ View definition:
f2 | integer | | plain |
f3 | text | | extended |
View definition:
SELECT a1.f1, a1.f2, a1.f3
SELECT a1.f1,
a1.f2,
a1.f3
FROM temp_view_test.tx1 a1
WHERE (EXISTS ( SELECT 1
FROM tt1
@ -569,7 +605,9 @@ View definition:
f2 | integer | | plain |
f3 | text | | extended |
View definition:
SELECT tx1.f1, tx1.f2, tx1.f3
SELECT tx1.f1,
tx1.f2,
tx1.f3
FROM temp_view_test.tx1
WHERE (EXISTS ( SELECT 1
FROM tt1 a2
@ -583,7 +621,9 @@ View definition:
f2 | integer | | plain |
f3 | text | | extended |
View definition:
SELECT tt1.y1, tt1.f2, tt1.f3
SELECT tt1.y1,
tt1.f2,
tt1.f3
FROM temp_view_test.tt1
WHERE (EXISTS ( SELECT 1
FROM temp_view_test.tx1
@ -600,7 +640,9 @@ ALTER TABLE tmp1 RENAME TO tx1;
f2 | integer | | plain |
f3 | text | | extended |
View definition:
SELECT tx1.f1, tx1.f2, tx1.f3
SELECT tx1.f1,
tx1.f2,
tx1.f3
FROM temp_view_test.tx1
WHERE (EXISTS ( SELECT 1
FROM tt1
@ -614,7 +656,9 @@ View definition:
f2 | integer | | plain |
f3 | text | | extended |
View definition:
SELECT a1.f1, a1.f2, a1.f3
SELECT a1.f1,
a1.f2,
a1.f3
FROM temp_view_test.tx1 a1
WHERE (EXISTS ( SELECT 1
FROM tt1
@ -628,7 +672,9 @@ View definition:
f2 | integer | | plain |
f3 | text | | extended |
View definition:
SELECT tx1.f1, tx1.f2, tx1.f3
SELECT tx1.f1,
tx1.f2,
tx1.f3
FROM temp_view_test.tx1
WHERE (EXISTS ( SELECT 1
FROM tt1 a2
@ -642,7 +688,9 @@ View definition:
f2 | integer | | plain |
f3 | text | | extended |
View definition:
SELECT tx1.y1, tx1.f2, tx1.f3
SELECT tx1.y1,
tx1.f2,
tx1.f3
FROM tx1
WHERE (EXISTS ( SELECT 1
FROM temp_view_test.tx1 tx1_1
@ -658,90 +706,132 @@ create view v2 as select * from tt2 join tt3 using (b,c) join tt4 using (b);
create view v2a as select * from (tt2 join tt3 using (b,c) join tt4 using (b)) j;
create view v3 as select * from tt2 join tt3 using (b,c) full join tt4 using (b);
select pg_get_viewdef('v1', true);
pg_get_viewdef
-------------------------------------
SELECT tt2.b, tt3.c, tt2.a, tt3.ax+
FROM tt2 +
pg_get_viewdef
---------------------------
SELECT tt2.b, +
tt3.c, +
tt2.a, +
tt3.ax +
FROM tt2 +
JOIN tt3 USING (b, c);
(1 row)
select pg_get_viewdef('v1a', true);
pg_get_viewdef
------------------------------
SELECT j.b, j.c, j.a, j.ax +
SELECT j.b, +
j.c, +
j.a, +
j.ax +
FROM (tt2 +
JOIN tt3 USING (b, c)) j;
(1 row)
select pg_get_viewdef('v2', true);
pg_get_viewdef
----------------------------------------------------
SELECT tt2.b, tt3.c, tt2.a, tt3.ax, tt4.ay, tt4.q+
FROM tt2 +
JOIN tt3 USING (b, c) +
pg_get_viewdef
--------------------------
SELECT tt2.b, +
tt3.c, +
tt2.a, +
tt3.ax, +
tt4.ay, +
tt4.q +
FROM tt2 +
JOIN tt3 USING (b, c)+
JOIN tt4 USING (b);
(1 row)
select pg_get_viewdef('v2a', true);
pg_get_viewdef
----------------------------------------
SELECT j.b, j.c, j.a, j.ax, j.ay, j.q+
FROM (tt2 +
JOIN tt3 USING (b, c) +
pg_get_viewdef
---------------------------
SELECT j.b, +
j.c, +
j.a, +
j.ax, +
j.ay, +
j.q +
FROM (tt2 +
JOIN tt3 USING (b, c) +
JOIN tt4 USING (b)) j;
(1 row)
select pg_get_viewdef('v3', true);
pg_get_viewdef
------------------------------------------------
SELECT b, tt3.c, tt2.a, tt3.ax, tt4.ay, tt4.q+
FROM tt2 +
JOIN tt3 USING (b, c) +
pg_get_viewdef
-----------------------------
SELECT b, +
tt3.c, +
tt2.a, +
tt3.ax, +
tt4.ay, +
tt4.q +
FROM tt2 +
JOIN tt3 USING (b, c) +
FULL JOIN tt4 USING (b);
(1 row)
alter table tt2 add column d int;
alter table tt2 add column e int;
select pg_get_viewdef('v1', true);
pg_get_viewdef
-------------------------------------
SELECT tt2.b, tt3.c, tt2.a, tt3.ax+
FROM tt2 +
pg_get_viewdef
---------------------------
SELECT tt2.b, +
tt3.c, +
tt2.a, +
tt3.ax +
FROM tt2 +
JOIN tt3 USING (b, c);
(1 row)
select pg_get_viewdef('v1a', true);
pg_get_viewdef
------------------------------
SELECT j.b, j.c, j.a, j.ax +
SELECT j.b, +
j.c, +
j.a, +
j.ax +
FROM (tt2 +
JOIN tt3 USING (b, c)) j;
(1 row)
select pg_get_viewdef('v2', true);
pg_get_viewdef
----------------------------------------------------
SELECT tt2.b, tt3.c, tt2.a, tt3.ax, tt4.ay, tt4.q+
FROM tt2 +
JOIN tt3 USING (b, c) +
pg_get_viewdef
--------------------------
SELECT tt2.b, +
tt3.c, +
tt2.a, +
tt3.ax, +
tt4.ay, +
tt4.q +
FROM tt2 +
JOIN tt3 USING (b, c)+
JOIN tt4 USING (b);
(1 row)
select pg_get_viewdef('v2a', true);
pg_get_viewdef
----------------------------------------
SELECT j.b, j.c, j.a, j.ax, j.ay, j.q+
FROM (tt2 +
JOIN tt3 USING (b, c) +
pg_get_viewdef
---------------------------
SELECT j.b, +
j.c, +
j.a, +
j.ax, +
j.ay, +
j.q +
FROM (tt2 +
JOIN tt3 USING (b, c) +
JOIN tt4 USING (b)) j;
(1 row)
select pg_get_viewdef('v3', true);
pg_get_viewdef
------------------------------------------------
SELECT b, tt3.c, tt2.a, tt3.ax, tt4.ay, tt4.q+
FROM tt2 +
JOIN tt3 USING (b, c) +
pg_get_viewdef
-----------------------------
SELECT b, +
tt3.c, +
tt2.a, +
tt3.ax, +
tt4.ay, +
tt4.q +
FROM tt2 +
JOIN tt3 USING (b, c) +
FULL JOIN tt4 USING (b);
(1 row)
@ -749,7 +839,10 @@ alter table tt3 rename c to d;
select pg_get_viewdef('v1', true);
pg_get_viewdef
-----------------------------------------
SELECT tt2.b, tt3.c, tt2.a, tt3.ax +
SELECT tt2.b, +
tt3.c, +
tt2.a, +
tt3.ax +
FROM tt2 +
JOIN tt3 tt3(ax, b, c) USING (b, c);
(1 row)
@ -757,35 +850,53 @@ select pg_get_viewdef('v1', true);
select pg_get_viewdef('v1a', true);
pg_get_viewdef
--------------------------------------------
SELECT j.b, j.c, j.a, j.ax +
SELECT j.b, +
j.c, +
j.a, +
j.ax +
FROM (tt2 +
JOIN tt3 tt3(ax, b, c) USING (b, c)) j;
(1 row)
select pg_get_viewdef('v2', true);
pg_get_viewdef
----------------------------------------------------
SELECT tt2.b, tt3.c, tt2.a, tt3.ax, tt4.ay, tt4.q+
FROM tt2 +
JOIN tt3 tt3(ax, b, c) USING (b, c) +
pg_get_viewdef
----------------------------------------
SELECT tt2.b, +
tt3.c, +
tt2.a, +
tt3.ax, +
tt4.ay, +
tt4.q +
FROM tt2 +
JOIN tt3 tt3(ax, b, c) USING (b, c)+
JOIN tt4 USING (b);
(1 row)
select pg_get_viewdef('v2a', true);
pg_get_viewdef
----------------------------------------
SELECT j.b, j.c, j.a, j.ax, j.ay, j.q+
SELECT j.b, +
j.c, +
j.a, +
j.ax, +
j.ay, +
j.q +
FROM (tt2 +
JOIN tt3 tt3(ax, b, c) USING (b, c)+
JOIN tt4 USING (b)) j;
(1 row)
select pg_get_viewdef('v3', true);
pg_get_viewdef
------------------------------------------------
SELECT b, tt3.c, tt2.a, tt3.ax, tt4.ay, tt4.q+
FROM tt2 +
JOIN tt3 tt3(ax, b, c) USING (b, c) +
pg_get_viewdef
----------------------------------------
SELECT b, +
tt3.c, +
tt2.a, +
tt3.ax, +
tt4.ay, +
tt4.q +
FROM tt2 +
JOIN tt3 tt3(ax, b, c) USING (b, c)+
FULL JOIN tt4 USING (b);
(1 row)
@ -794,7 +905,10 @@ alter table tt3 add column e int;
select pg_get_viewdef('v1', true);
pg_get_viewdef
-------------------------------------------------
SELECT tt2.b, tt3.c, tt2.a, tt3.ax +
SELECT tt2.b, +
tt3.c, +
tt2.a, +
tt3.ax +
FROM tt2 +
JOIN tt3 tt3(ax, b, c, c_1, e) USING (b, c);
(1 row)
@ -802,24 +916,37 @@ select pg_get_viewdef('v1', true);
select pg_get_viewdef('v1a', true);
pg_get_viewdef
---------------------------------------------------------------------------------
SELECT j.b, j.c, j.a, j.ax +
SELECT j.b, +
j.c, +
j.a, +
j.ax +
FROM (tt2 +
JOIN tt3 tt3(ax, b, c, c_1, e) USING (b, c)) j(b, c, a, d, e, ax, c_1, e_1);
(1 row)
select pg_get_viewdef('v2', true);
pg_get_viewdef
----------------------------------------------------
SELECT tt2.b, tt3.c, tt2.a, tt3.ax, tt4.ay, tt4.q+
FROM tt2 +
JOIN tt3 tt3(ax, b, c, c_1, e) USING (b, c) +
pg_get_viewdef
------------------------------------------------
SELECT tt2.b, +
tt3.c, +
tt2.a, +
tt3.ax, +
tt4.ay, +
tt4.q +
FROM tt2 +
JOIN tt3 tt3(ax, b, c, c_1, e) USING (b, c)+
JOIN tt4 USING (b);
(1 row)
select pg_get_viewdef('v2a', true);
pg_get_viewdef
---------------------------------------------------------------
SELECT j.b, j.c, j.a, j.ax, j.ay, j.q +
SELECT j.b, +
j.c, +
j.a, +
j.ax, +
j.ay, +
j.q +
FROM (tt2 +
JOIN tt3 tt3(ax, b, c, c_1, e) USING (b, c) +
JOIN tt4 USING (b)) j(b, c, a, d, e, ax, c_1, e_1, ay, q);
@ -828,7 +955,12 @@ select pg_get_viewdef('v2a', true);
select pg_get_viewdef('v3', true);
pg_get_viewdef
------------------------------------------------
SELECT b, tt3.c, tt2.a, tt3.ax, tt4.ay, tt4.q+
SELECT b, +
tt3.c, +
tt2.a, +
tt3.ax, +
tt4.ay, +
tt4.q +
FROM tt2 +
JOIN tt3 tt3(ax, b, c, c_1, e) USING (b, c)+
FULL JOIN tt4 USING (b);
@ -838,7 +970,10 @@ alter table tt2 drop column d;
select pg_get_viewdef('v1', true);
pg_get_viewdef
-------------------------------------------------
SELECT tt2.b, tt3.c, tt2.a, tt3.ax +
SELECT tt2.b, +
tt3.c, +
tt2.a, +
tt3.ax +
FROM tt2 +
JOIN tt3 tt3(ax, b, c, c_1, e) USING (b, c);
(1 row)
@ -846,24 +981,37 @@ select pg_get_viewdef('v1', true);
select pg_get_viewdef('v1a', true);
pg_get_viewdef
------------------------------------------------------------------------------
SELECT j.b, j.c, j.a, j.ax +
SELECT j.b, +
j.c, +
j.a, +
j.ax +
FROM (tt2 +
JOIN tt3 tt3(ax, b, c, c_1, e) USING (b, c)) j(b, c, a, e, ax, c_1, e_1);
(1 row)
select pg_get_viewdef('v2', true);
pg_get_viewdef
----------------------------------------------------
SELECT tt2.b, tt3.c, tt2.a, tt3.ax, tt4.ay, tt4.q+
FROM tt2 +
JOIN tt3 tt3(ax, b, c, c_1, e) USING (b, c) +
pg_get_viewdef
------------------------------------------------
SELECT tt2.b, +
tt3.c, +
tt2.a, +
tt3.ax, +
tt4.ay, +
tt4.q +
FROM tt2 +
JOIN tt3 tt3(ax, b, c, c_1, e) USING (b, c)+
JOIN tt4 USING (b);
(1 row)
select pg_get_viewdef('v2a', true);
pg_get_viewdef
------------------------------------------------------------
SELECT j.b, j.c, j.a, j.ax, j.ay, j.q +
SELECT j.b, +
j.c, +
j.a, +
j.ax, +
j.ay, +
j.q +
FROM (tt2 +
JOIN tt3 tt3(ax, b, c, c_1, e) USING (b, c) +
JOIN tt4 USING (b)) j(b, c, a, e, ax, c_1, e_1, ay, q);
@ -872,7 +1020,12 @@ select pg_get_viewdef('v2a', true);
select pg_get_viewdef('v3', true);
pg_get_viewdef
------------------------------------------------
SELECT b, tt3.c, tt2.a, tt3.ax, tt4.ay, tt4.q+
SELECT b, +
tt3.c, +
tt2.a, +
tt3.ax, +
tt4.ay, +
tt4.q +
FROM tt2 +
JOIN tt3 tt3(ax, b, c, c_1, e) USING (b, c)+
FULL JOIN tt4 USING (b);
@ -884,7 +1037,10 @@ create view vv1 as select * from (tt5 cross join tt6) j(aa,bb,cc,dd);
select pg_get_viewdef('vv1', true);
pg_get_viewdef
--------------------------------------
SELECT j.aa, j.bb, j.cc, j.dd +
SELECT j.aa, +
j.bb, +
j.cc, +
j.dd +
FROM (tt5 +
CROSS JOIN tt6) j(aa, bb, cc, dd);
(1 row)
@ -893,7 +1049,10 @@ alter table tt5 add column c int;
select pg_get_viewdef('vv1', true);
pg_get_viewdef
-----------------------------------------
SELECT j.aa, j.bb, j.cc, j.dd +
SELECT j.aa, +
j.bb, +
j.cc, +
j.dd +
FROM (tt5 +
CROSS JOIN tt6) j(aa, bb, c, cc, dd);
(1 row)
@ -902,7 +1061,10 @@ alter table tt5 add column cc int;
select pg_get_viewdef('vv1', true);
pg_get_viewdef
-----------------------------------------------
SELECT j.aa, j.bb, j.cc, j.dd +
SELECT j.aa, +
j.bb, +
j.cc, +
j.dd +
FROM (tt5 +
CROSS JOIN tt6) j(aa, bb, c, cc_1, cc, dd);
(1 row)
@ -911,7 +1073,10 @@ alter table tt5 drop column c;
select pg_get_viewdef('vv1', true);
pg_get_viewdef
--------------------------------------------
SELECT j.aa, j.bb, j.cc, j.dd +
SELECT j.aa, +
j.bb, +
j.cc, +
j.dd +
FROM (tt5 +
CROSS JOIN tt6) j(aa, bb, cc_1, cc, dd);
(1 row)
@ -925,14 +1090,23 @@ select * from (values(1,2,3,4,5)) v(a,b,c,d,e)
union all
select * from tt7 full join tt8 using (x), tt8 tt8x;
select pg_get_viewdef('vv2', true);
pg_get_viewdef
----------------------------------------------------------------------------
SELECT v.a, v.b, v.c, v.d, v.e +
FROM ( VALUES (1,2,3,4,5)) v(a, b, c, d, e) +
UNION ALL +
SELECT x AS a, tt7.y AS b, tt8.z AS c, tt8x.x_1 AS d, tt8x.z AS e+
FROM tt7 +
FULL JOIN tt8 USING (x), tt8 tt8x(x_1, z);
pg_get_viewdef
--------------------------------------------------------
SELECT v.a, +
v.b, +
v.c, +
v.d, +
v.e +
FROM ( VALUES (1,2,3,4,5)) v(a, b, c, d, e)+
UNION ALL +
SELECT x AS a, +
tt7.y AS b, +
tt8.z AS c, +
tt8x.x_1 AS d, +
tt8x.z AS e +
FROM tt7 +
FULL JOIN tt8 USING (x), +
tt8 tt8x(x_1, z);
(1 row)
create view vv3 as
@ -942,16 +1116,25 @@ select * from
tt7 full join tt8 using (x),
tt7 tt7x full join tt8 tt8x using (x);
select pg_get_viewdef('vv3', true);
pg_get_viewdef
-------------------------------------------------------------------------
SELECT v.a, v.b, v.c, v.x, v.e, v.f +
FROM ( VALUES (1,2,3,4,5,6)) v(a, b, c, x, e, f) +
UNION ALL +
SELECT x AS a, tt7.y AS b, tt8.z AS c, x_1 AS x, tt7x.y AS e, +
tt8x.z AS f +
FROM tt7 +
FULL JOIN tt8 USING (x), +
tt7 tt7x(x_1, y) +
pg_get_viewdef
-------------------------------------------------------------
SELECT v.a, +
v.b, +
v.c, +
v.x, +
v.e, +
v.f +
FROM ( VALUES (1,2,3,4,5,6)) v(a, b, c, x, e, f)+
UNION ALL +
SELECT x AS a, +
tt7.y AS b, +
tt8.z AS c, +
x_1 AS x, +
tt7x.y AS e, +
tt8x.z AS f +
FROM tt7 +
FULL JOIN tt8 USING (x), +
tt7 tt7x(x_1, y) +
FULL JOIN tt8 tt8x(x_1, z) USING (x_1);
(1 row)
@ -962,17 +1145,28 @@ select * from
tt7 full join tt8 using (x),
tt7 tt7x full join tt8 tt8x using (x) full join tt8 tt8y using (x);
select pg_get_viewdef('vv4', true);
pg_get_viewdef
-------------------------------------------------------------------------
SELECT v.a, v.b, v.c, v.x, v.e, v.f, v.g +
FROM ( VALUES (1,2,3,4,5,6,7)) v(a, b, c, x, e, f, g) +
UNION ALL +
SELECT x AS a, tt7.y AS b, tt8.z AS c, x_1 AS x, tt7x.y AS e, +
tt8x.z AS f, tt8y.z AS g +
FROM tt7 +
FULL JOIN tt8 USING (x), +
tt7 tt7x(x_1, y) +
FULL JOIN tt8 tt8x(x_1, z) USING (x_1) +
pg_get_viewdef
------------------------------------------------------------------
SELECT v.a, +
v.b, +
v.c, +
v.x, +
v.e, +
v.f, +
v.g +
FROM ( VALUES (1,2,3,4,5,6,7)) v(a, b, c, x, e, f, g)+
UNION ALL +
SELECT x AS a, +
tt7.y AS b, +
tt8.z AS c, +
x_1 AS x, +
tt7x.y AS e, +
tt8x.z AS f, +
tt8y.z AS g +
FROM tt7 +
FULL JOIN tt8 USING (x), +
tt7 tt7x(x_1, y) +
FULL JOIN tt8 tt8x(x_1, z) USING (x_1) +
FULL JOIN tt8 tt8y(x_1, z) USING (x_1);
(1 row)
@ -981,42 +1175,71 @@ alter table tt7 add column z int;
alter table tt7 drop column zz;
alter table tt8 add column z2 int;
select pg_get_viewdef('vv2', true);
pg_get_viewdef
----------------------------------------------------------------------------
SELECT v.a, v.b, v.c, v.d, v.e +
FROM ( VALUES (1,2,3,4,5)) v(a, b, c, d, e) +
UNION ALL +
SELECT x AS a, tt7.y AS b, tt8.z AS c, tt8x.x_1 AS d, tt8x.z AS e+
FROM tt7 +
FULL JOIN tt8 USING (x), tt8 tt8x(x_1, z, z2);
pg_get_viewdef
--------------------------------------------------------
SELECT v.a, +
v.b, +
v.c, +
v.d, +
v.e +
FROM ( VALUES (1,2,3,4,5)) v(a, b, c, d, e)+
UNION ALL +
SELECT x AS a, +
tt7.y AS b, +
tt8.z AS c, +
tt8x.x_1 AS d, +
tt8x.z AS e +
FROM tt7 +
FULL JOIN tt8 USING (x), +
tt8 tt8x(x_1, z, z2);
(1 row)
select pg_get_viewdef('vv3', true);
pg_get_viewdef
-------------------------------------------------------------------------
SELECT v.a, v.b, v.c, v.x, v.e, v.f +
FROM ( VALUES (1,2,3,4,5,6)) v(a, b, c, x, e, f) +
UNION ALL +
SELECT x AS a, tt7.y AS b, tt8.z AS c, x_1 AS x, tt7x.y AS e, +
tt8x.z AS f +
FROM tt7 +
FULL JOIN tt8 USING (x), +
tt7 tt7x(x_1, y, z) +
pg_get_viewdef
-------------------------------------------------------------
SELECT v.a, +
v.b, +
v.c, +
v.x, +
v.e, +
v.f +
FROM ( VALUES (1,2,3,4,5,6)) v(a, b, c, x, e, f)+
UNION ALL +
SELECT x AS a, +
tt7.y AS b, +
tt8.z AS c, +
x_1 AS x, +
tt7x.y AS e, +
tt8x.z AS f +
FROM tt7 +
FULL JOIN tt8 USING (x), +
tt7 tt7x(x_1, y, z) +
FULL JOIN tt8 tt8x(x_1, z, z2) USING (x_1);
(1 row)
select pg_get_viewdef('vv4', true);
pg_get_viewdef
-------------------------------------------------------------------------
SELECT v.a, v.b, v.c, v.x, v.e, v.f, v.g +
FROM ( VALUES (1,2,3,4,5,6,7)) v(a, b, c, x, e, f, g) +
UNION ALL +
SELECT x AS a, tt7.y AS b, tt8.z AS c, x_1 AS x, tt7x.y AS e, +
tt8x.z AS f, tt8y.z AS g +
FROM tt7 +
FULL JOIN tt8 USING (x), +
tt7 tt7x(x_1, y, z) +
FULL JOIN tt8 tt8x(x_1, z, z2) USING (x_1) +
pg_get_viewdef
------------------------------------------------------------------
SELECT v.a, +
v.b, +
v.c, +
v.x, +
v.e, +
v.f, +
v.g +
FROM ( VALUES (1,2,3,4,5,6,7)) v(a, b, c, x, e, f, g)+
UNION ALL +
SELECT x AS a, +
tt7.y AS b, +
tt8.z AS c, +
x_1 AS x, +
tt7x.y AS e, +
tt8x.z AS f, +
tt8y.z AS g +
FROM tt7 +
FULL JOIN tt8 USING (x), +
tt7 tt7x(x_1, y, z) +
FULL JOIN tt8 tt8x(x_1, z, z2) USING (x_1) +
FULL JOIN tt8 tt8y(x_1, z, z2) USING (x_1);
(1 row)

View File

@ -1381,7 +1381,8 @@ select * from dfview;
c3 | bigint | | plain |
c4 | bigint | | plain |
View definition:
SELECT int8_tbl.q1, int8_tbl.q2,
SELECT int8_tbl.q1,
int8_tbl.q2,
dfunc(int8_tbl.q1, int8_tbl.q2, flag := int8_tbl.q1 > int8_tbl.q2) AS c3,
dfunc(int8_tbl.q1, flag := int8_tbl.q1 < int8_tbl.q2, b := int8_tbl.q2) AS c4
FROM int8_tbl;

File diff suppressed because it is too large Load Diff

View File

@ -1119,7 +1119,8 @@ DROP TRIGGER instead_of_delete_trig ON main_view;
a | integer | | plain |
b | integer | | plain |
View definition:
SELECT main_table.a, main_table.b
SELECT main_table.a,
main_table.b
FROM main_table;
Triggers:
after_del_stmt_trig AFTER DELETE ON main_view FOR EACH STATEMENT EXECUTE PROCEDURE view_trigger('after_view_del_stmt')

View File

@ -950,9 +950,11 @@ SELECT * FROM v_window;
(10 rows)
SELECT pg_get_viewdef('v_window');
pg_get_viewdef
---------------------------------------------------------------------------------------------------------------------------------
SELECT i.i, sum(i.i) OVER (ORDER BY i.i ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS sum_rows FROM generate_series(1, 10) i(i);
pg_get_viewdef
---------------------------------------------------------------------------------------
SELECT i.i, +
sum(i.i) OVER (ORDER BY i.i ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS sum_rows+
FROM generate_series(1, 10) i(i);
(1 row)
-- with UNION

View File

@ -300,25 +300,48 @@ SELECT * FROM vsubdepartment ORDER BY name;
-- Check reverse listing
SELECT pg_get_viewdef('vsubdepartment'::regclass);
pg_get_viewdef
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
WITH RECURSIVE subdepartment AS (SELECT department.id, department.parent_department, department.name FROM department WHERE (department.name = 'A'::text) UNION ALL SELECT d.id, d.parent_department, d.name FROM department d, subdepartment sd WHERE (d.parent_department = sd.id)) SELECT subdepartment.id, subdepartment.parent_department, subdepartment.name FROM subdepartment;
pg_get_viewdef
-------------------------------------------------------
WITH RECURSIVE subdepartment AS ( +
SELECT department.id, +
department.parent_department, +
department.name +
FROM department +
WHERE (department.name = 'A'::text)+
UNION ALL +
SELECT d.id, +
d.parent_department, +
d.name +
FROM department d, +
subdepartment sd +
WHERE (d.parent_department = sd.id)+
) +
SELECT subdepartment.id, +
subdepartment.parent_department, +
subdepartment.name +
FROM subdepartment;
(1 row)
SELECT pg_get_viewdef('vsubdepartment'::regclass, true);
pg_get_viewdef
-------------------------------------------------------------------------------
WITH RECURSIVE subdepartment AS ( +
SELECT department.id, department.parent_department, +
department.name +
FROM department +
WHERE department.name = 'A'::text +
UNION ALL +
SELECT d.id, d.parent_department, d.name +
FROM department d, subdepartment sd +
WHERE d.parent_department = sd.id +
) +
SELECT subdepartment.id, subdepartment.parent_department, subdepartment.name+
pg_get_viewdef
-----------------------------------------------------
WITH RECURSIVE subdepartment AS ( +
SELECT department.id, +
department.parent_department, +
department.name +
FROM department +
WHERE department.name = 'A'::text+
UNION ALL +
SELECT d.id, +
d.parent_department, +
d.name +
FROM department d, +
subdepartment sd +
WHERE d.parent_department = sd.id+
) +
SELECT subdepartment.id, +
subdepartment.parent_department, +
subdepartment.name +
FROM subdepartment;
(1 row)

View File

@ -540,17 +540,18 @@ CREATE VIEW xmlview8 AS SELECT xmlserialize(content 'good' as char(10));
CREATE VIEW xmlview9 AS SELECT xmlserialize(content 'good' as text);
SELECT table_name, view_definition FROM information_schema.views
WHERE table_name LIKE 'xmlview%' ORDER BY 1;
table_name | view_definition
------------+----------------------------------------------------------------------------------------------------------------------------
xmlview1 | SELECT xmlcomment('test'::text) AS xmlcomment;
xmlview2 | SELECT XMLCONCAT('hello'::xml, 'you'::xml) AS "xmlconcat";
xmlview3 | SELECT XMLELEMENT(NAME element, XMLATTRIBUTES(1 AS ":one:", 'deuce' AS two), 'content&') AS "xmlelement";
xmlview4 | SELECT XMLELEMENT(NAME employee, XMLFOREST(emp.name AS name, emp.age AS age, emp.salary AS pay)) AS "xmlelement" FROM emp;
xmlview5 | SELECT XMLPARSE(CONTENT '<abc>x</abc>'::text STRIP WHITESPACE) AS "xmlparse";
xmlview6 | SELECT XMLPI(NAME foo, 'bar'::text) AS "xmlpi";
xmlview7 | SELECT XMLROOT('<foo/>'::xml, VERSION NO VALUE, STANDALONE YES) AS "xmlroot";
xmlview8 | SELECT (XMLSERIALIZE(CONTENT 'good'::xml AS character(10)))::character(10) AS "xmlserialize";
xmlview9 | SELECT XMLSERIALIZE(CONTENT 'good'::xml AS text) AS "xmlserialize";
table_name | view_definition
------------+-------------------------------------------------------------------------------------------------------------------
xmlview1 | SELECT xmlcomment('test'::text) AS xmlcomment;
xmlview2 | SELECT XMLCONCAT('hello'::xml, 'you'::xml) AS "xmlconcat";
xmlview3 | SELECT XMLELEMENT(NAME element, XMLATTRIBUTES(1 AS ":one:", 'deuce' AS two), 'content&') AS "xmlelement";
xmlview4 | SELECT XMLELEMENT(NAME employee, XMLFOREST(emp.name AS name, emp.age AS age, emp.salary AS pay)) AS "xmlelement"+
| FROM emp;
xmlview5 | SELECT XMLPARSE(CONTENT '<abc>x</abc>'::text STRIP WHITESPACE) AS "xmlparse";
xmlview6 | SELECT XMLPI(NAME foo, 'bar'::text) AS "xmlpi";
xmlview7 | SELECT XMLROOT('<foo/>'::xml, VERSION NO VALUE, STANDALONE YES) AS "xmlroot";
xmlview8 | SELECT (XMLSERIALIZE(CONTENT 'good'::xml AS character(10)))::character(10) AS "xmlserialize";
xmlview9 | SELECT XMLSERIALIZE(CONTENT 'good'::xml AS text) AS "xmlserialize";
(9 rows)
-- Text XPath expressions evaluation

View File

@ -463,10 +463,10 @@ DETAIL: This functionality requires the server to be built with libxml support.
HINT: You need to rebuild PostgreSQL using --with-libxml.
SELECT table_name, view_definition FROM information_schema.views
WHERE table_name LIKE 'xmlview%' ORDER BY 1;
table_name | view_definition
------------+-------------------------------------------------------------------------------
xmlview1 | SELECT xmlcomment('test'::text) AS xmlcomment;
xmlview5 | SELECT XMLPARSE(CONTENT '<abc>x</abc>'::text STRIP WHITESPACE) AS "xmlparse";
table_name | view_definition
------------+--------------------------------------------------------------------------------
xmlview1 | SELECT xmlcomment('test'::text) AS xmlcomment;
xmlview5 | SELECT XMLPARSE(CONTENT '<abc>x</abc>'::text STRIP WHITESPACE) AS "xmlparse";
(2 rows)
-- Text XPath expressions evaluation