90
90
#define PRETTYFLAG_INDENT 0x0002
91
91
#define PRETTYFLAG_SCHEMA 0x0004
92
92
93
+ /* Standard conversion of a "bool pretty" option to detailed flags */
94
+ #define GET_PRETTY_FLAGS (pretty ) \
95
+ ((pretty) ? (PRETTYFLAG_PAREN | PRETTYFLAG_INDENT | PRETTYFLAG_SCHEMA) \
96
+ : PRETTYFLAG_INDENT)
97
+
93
98
/* Default line length for pretty-print wrapping: 0 means wrap always */
94
99
#define WRAP_COLUMN_DEFAULT 0
95
100
@@ -532,7 +537,7 @@ pg_get_ruledef_ext(PG_FUNCTION_ARGS)
532
537
int prettyFlags ;
533
538
char * res ;
534
539
535
- prettyFlags = pretty ? ( PRETTYFLAG_PAREN | PRETTYFLAG_INDENT | PRETTYFLAG_SCHEMA ) : PRETTYFLAG_INDENT ;
540
+ prettyFlags = GET_PRETTY_FLAGS ( pretty ) ;
536
541
537
542
res = pg_get_ruledef_worker (ruleoid , prettyFlags );
538
543
@@ -653,7 +658,7 @@ pg_get_viewdef_ext(PG_FUNCTION_ARGS)
653
658
int prettyFlags ;
654
659
char * res ;
655
660
656
- prettyFlags = pretty ? ( PRETTYFLAG_PAREN | PRETTYFLAG_INDENT | PRETTYFLAG_SCHEMA ) : PRETTYFLAG_INDENT ;
661
+ prettyFlags = GET_PRETTY_FLAGS ( pretty ) ;
657
662
658
663
res = pg_get_viewdef_worker (viewoid , prettyFlags , WRAP_COLUMN_DEFAULT );
659
664
@@ -673,7 +678,7 @@ pg_get_viewdef_wrap(PG_FUNCTION_ARGS)
673
678
char * res ;
674
679
675
680
/* calling this implies we want pretty printing */
676
- prettyFlags = PRETTYFLAG_PAREN | PRETTYFLAG_INDENT | PRETTYFLAG_SCHEMA ;
681
+ prettyFlags = GET_PRETTY_FLAGS (true) ;
677
682
678
683
res = pg_get_viewdef_worker (viewoid , prettyFlags , wrap );
679
684
@@ -719,7 +724,7 @@ pg_get_viewdef_name_ext(PG_FUNCTION_ARGS)
719
724
Oid viewoid ;
720
725
char * res ;
721
726
722
- prettyFlags = pretty ? ( PRETTYFLAG_PAREN | PRETTYFLAG_INDENT | PRETTYFLAG_SCHEMA ) : PRETTYFLAG_INDENT ;
727
+ prettyFlags = GET_PRETTY_FLAGS ( pretty ) ;
723
728
724
729
/* Look up view name. Can't lock it - we might not have privileges. */
725
730
viewrel = makeRangeVarFromNameList (textToQualifiedNameList (viewname ));
@@ -1062,7 +1067,7 @@ pg_get_triggerdef_worker(Oid trigid, bool pretty)
1062
1067
context .windowClause = NIL ;
1063
1068
context .windowTList = NIL ;
1064
1069
context .varprefix = true;
1065
- context .prettyFlags = pretty ? ( PRETTYFLAG_PAREN | PRETTYFLAG_INDENT | PRETTYFLAG_SCHEMA ) : PRETTYFLAG_INDENT ;
1070
+ context .prettyFlags = GET_PRETTY_FLAGS ( pretty ) ;
1066
1071
context .wrapColumn = WRAP_COLUMN_DEFAULT ;
1067
1072
context .indentLevel = PRETTYINDENT_STD ;
1068
1073
context .special_exprkind = EXPR_KIND_NONE ;
@@ -1152,7 +1157,7 @@ pg_get_indexdef_ext(PG_FUNCTION_ARGS)
1152
1157
int prettyFlags ;
1153
1158
char * res ;
1154
1159
1155
- prettyFlags = pretty ? ( PRETTYFLAG_PAREN | PRETTYFLAG_INDENT | PRETTYFLAG_SCHEMA ) : PRETTYFLAG_INDENT ;
1160
+ prettyFlags = GET_PRETTY_FLAGS ( pretty ) ;
1156
1161
1157
1162
res = pg_get_indexdef_worker (indexrelid , colno , NULL ,
1158
1163
colno != 0 , false,
@@ -1185,7 +1190,7 @@ pg_get_indexdef_columns(Oid indexrelid, bool pretty)
1185
1190
{
1186
1191
int prettyFlags ;
1187
1192
1188
- prettyFlags = pretty ? ( PRETTYFLAG_PAREN | PRETTYFLAG_INDENT | PRETTYFLAG_SCHEMA ) : PRETTYFLAG_INDENT ;
1193
+ prettyFlags = GET_PRETTY_FLAGS ( pretty ) ;
1189
1194
1190
1195
return pg_get_indexdef_worker (indexrelid , 0 , NULL ,
1191
1196
true, true,
@@ -1516,6 +1521,30 @@ pg_get_indexdef_worker(Oid indexrelid, int colno,
1516
1521
return buf .data ;
1517
1522
}
1518
1523
1524
+ /* ----------
1525
+ * pg_get_querydef
1526
+ *
1527
+ * Public entry point to deparse one query parsetree.
1528
+ * The pretty flags are determined by GET_PRETTY_FLAGS(pretty).
1529
+ *
1530
+ * The result is a palloc'd C string.
1531
+ * ----------
1532
+ */
1533
+ char *
1534
+ pg_get_querydef (Query * query , bool pretty )
1535
+ {
1536
+ StringInfoData buf ;
1537
+ int prettyFlags ;
1538
+
1539
+ prettyFlags = GET_PRETTY_FLAGS (pretty );
1540
+
1541
+ initStringInfo (& buf );
1542
+
1543
+ get_query_def (query , & buf , NIL , NULL , prettyFlags , WRAP_COLUMN_DEFAULT , 0 );
1544
+
1545
+ return buf .data ;
1546
+ }
1547
+
1519
1548
/*
1520
1549
* pg_get_statisticsobjdef
1521
1550
* Get the definition of an extended statistics object
@@ -1848,7 +1877,7 @@ pg_get_partkeydef_columns(Oid relid, bool pretty)
1848
1877
{
1849
1878
int prettyFlags ;
1850
1879
1851
- prettyFlags = pretty ? ( PRETTYFLAG_PAREN | PRETTYFLAG_INDENT | PRETTYFLAG_SCHEMA ) : PRETTYFLAG_INDENT ;
1880
+ prettyFlags = GET_PRETTY_FLAGS ( pretty ) ;
1852
1881
1853
1882
return pg_get_partkeydef_worker (relid , prettyFlags , true, false);
1854
1883
}
@@ -2095,7 +2124,7 @@ pg_get_constraintdef_ext(PG_FUNCTION_ARGS)
2095
2124
int prettyFlags ;
2096
2125
char * res ;
2097
2126
2098
- prettyFlags = pretty ? ( PRETTYFLAG_PAREN | PRETTYFLAG_INDENT | PRETTYFLAG_SCHEMA ) : PRETTYFLAG_INDENT ;
2127
+ prettyFlags = GET_PRETTY_FLAGS ( pretty ) ;
2099
2128
2100
2129
res = pg_get_constraintdef_worker (constraintId , false, prettyFlags , true);
2101
2130
@@ -2625,7 +2654,7 @@ pg_get_expr_ext(PG_FUNCTION_ARGS)
2625
2654
int prettyFlags ;
2626
2655
char * relname ;
2627
2656
2628
- prettyFlags = pretty ? ( PRETTYFLAG_PAREN | PRETTYFLAG_INDENT | PRETTYFLAG_SCHEMA ) : PRETTYFLAG_INDENT ;
2657
+ prettyFlags = GET_PRETTY_FLAGS ( pretty ) ;
2629
2658
2630
2659
if (OidIsValid (relid ))
2631
2660
{
@@ -11210,9 +11239,10 @@ get_from_clause_item(Node *jtnode, Query *query, deparse_context *context)
11210
11239
*/
11211
11240
printalias = true;
11212
11241
}
11213
- else if (rte -> rtekind == RTE_VALUES )
11242
+ else if (rte -> rtekind == RTE_SUBQUERY ||
11243
+ rte -> rtekind == RTE_VALUES )
11214
11244
{
11215
- /* Alias is syntactically required for VALUES */
11245
+ /* Alias is syntactically required for SUBQUERY and VALUES */
11216
11246
printalias = true;
11217
11247
}
11218
11248
else if (rte -> rtekind == RTE_CTE )
0 commit comments