summaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/ruleutils.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/utils/adt/ruleutils.c')
-rw-r--r--src/backend/utils/adt/ruleutils.c51
1 files changed, 36 insertions, 15 deletions
diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c
index 9d1a9e8c8ac..728b649e291 100644
--- a/src/backend/utils/adt/ruleutils.c
+++ b/src/backend/utils/adt/ruleutils.c
@@ -75,15 +75,17 @@
#define PRETTYINDENT_LIMIT 40 /* wrap limit */
/* Pretty flags */
-#define PRETTYFLAG_PAREN 1
-#define PRETTYFLAG_INDENT 2
+#define PRETTYFLAG_PAREN 0x0001
+#define PRETTYFLAG_INDENT 0x0002
+#define PRETTYFLAG_SCHEMA 0x0004
/* Default line length for pretty-print wrapping: 0 means wrap always */
#define WRAP_COLUMN_DEFAULT 0
-/* macro to test if pretty action needed */
+/* macros to test if pretty action needed */
#define PRETTY_PAREN(context) ((context)->prettyFlags & PRETTYFLAG_PAREN)
#define PRETTY_INDENT(context) ((context)->prettyFlags & PRETTYFLAG_INDENT)
+#define PRETTY_SCHEMA(context) ((context)->prettyFlags & PRETTYFLAG_SCHEMA)
/* ----------
@@ -456,7 +458,8 @@ pg_get_ruledef_ext(PG_FUNCTION_ARGS)
bool pretty = PG_GETARG_BOOL(1);
int prettyFlags;
- prettyFlags = pretty ? PRETTYFLAG_PAREN | PRETTYFLAG_INDENT : PRETTYFLAG_INDENT;
+ prettyFlags = pretty ? (PRETTYFLAG_PAREN | PRETTYFLAG_INDENT | PRETTYFLAG_SCHEMA) : PRETTYFLAG_INDENT;
+
PG_RETURN_TEXT_P(string_to_text(pg_get_ruledef_worker(ruleoid, prettyFlags)));
}
@@ -555,7 +558,8 @@ pg_get_viewdef_ext(PG_FUNCTION_ARGS)
bool pretty = PG_GETARG_BOOL(1);
int prettyFlags;
- prettyFlags = pretty ? PRETTYFLAG_PAREN | PRETTYFLAG_INDENT : PRETTYFLAG_INDENT;
+ prettyFlags = pretty ? (PRETTYFLAG_PAREN | PRETTYFLAG_INDENT | PRETTYFLAG_SCHEMA) : PRETTYFLAG_INDENT;
+
PG_RETURN_TEXT_P(string_to_text(pg_get_viewdef_worker(viewoid, prettyFlags, WRAP_COLUMN_DEFAULT)));
}
@@ -568,7 +572,8 @@ pg_get_viewdef_wrap(PG_FUNCTION_ARGS)
int prettyFlags;
/* calling this implies we want pretty printing */
- prettyFlags = PRETTYFLAG_PAREN | PRETTYFLAG_INDENT;
+ prettyFlags = PRETTYFLAG_PAREN | PRETTYFLAG_INDENT | PRETTYFLAG_SCHEMA;
+
PG_RETURN_TEXT_P(string_to_text(pg_get_viewdef_worker(viewoid, prettyFlags, wrap)));
}
@@ -601,7 +606,7 @@ pg_get_viewdef_name_ext(PG_FUNCTION_ARGS)
RangeVar *viewrel;
Oid viewoid;
- prettyFlags = pretty ? PRETTYFLAG_PAREN | PRETTYFLAG_INDENT : PRETTYFLAG_INDENT;
+ prettyFlags = pretty ? (PRETTYFLAG_PAREN | PRETTYFLAG_INDENT | PRETTYFLAG_SCHEMA) : PRETTYFLAG_INDENT;
/* Look up view name. Can't lock it - we might not have privileges. */
viewrel = makeRangeVarFromNameList(textToQualifiedNameList(viewname));
@@ -805,8 +810,15 @@ pg_get_triggerdef_worker(Oid trigid, bool pretty)
appendStringInfo(&buf, " TRUNCATE");
findx++;
}
+
+ /*
+ * In non-pretty mode, always schema-qualify the target table name for
+ * safety. In pretty mode, schema-qualify only if not visible.
+ */
appendStringInfo(&buf, " ON %s ",
- generate_relation_name(trigrec->tgrelid, NIL));
+ pretty ?
+ generate_relation_name(trigrec->tgrelid, NIL) :
+ generate_qualified_relation_name(trigrec->tgrelid));
if (OidIsValid(trigrec->tgconstraint))
{
@@ -879,7 +891,7 @@ pg_get_triggerdef_worker(Oid trigid, bool pretty)
context.windowClause = NIL;
context.windowTList = NIL;
context.varprefix = true;
- context.prettyFlags = pretty ? PRETTYFLAG_PAREN | PRETTYFLAG_INDENT : PRETTYFLAG_INDENT;
+ context.prettyFlags = pretty ? (PRETTYFLAG_PAREN | PRETTYFLAG_INDENT | PRETTYFLAG_SCHEMA) : PRETTYFLAG_INDENT;
context.wrapColumn = WRAP_COLUMN_DEFAULT;
context.indentLevel = PRETTYINDENT_STD;
@@ -959,7 +971,8 @@ pg_get_indexdef_ext(PG_FUNCTION_ARGS)
bool pretty = PG_GETARG_BOOL(2);
int prettyFlags;
- prettyFlags = pretty ? PRETTYFLAG_PAREN | PRETTYFLAG_INDENT : PRETTYFLAG_INDENT;
+ prettyFlags = pretty ? (PRETTYFLAG_PAREN | PRETTYFLAG_INDENT | PRETTYFLAG_SCHEMA) : PRETTYFLAG_INDENT;
+
PG_RETURN_TEXT_P(string_to_text(pg_get_indexdef_worker(indexrelid, colno,
NULL,
colno != 0,
@@ -984,7 +997,8 @@ pg_get_indexdef_columns(Oid indexrelid, bool pretty)
{
int prettyFlags;
- prettyFlags = pretty ? PRETTYFLAG_PAREN | PRETTYFLAG_INDENT : PRETTYFLAG_INDENT;
+ prettyFlags = pretty ? (PRETTYFLAG_PAREN | PRETTYFLAG_INDENT | PRETTYFLAG_SCHEMA) : PRETTYFLAG_INDENT;
+
return pg_get_indexdef_worker(indexrelid, 0, NULL, true, false, prettyFlags);
}
@@ -1105,7 +1119,9 @@ pg_get_indexdef_worker(Oid indexrelid, int colno,
appendStringInfo(&buf, "CREATE %sINDEX %s ON %s USING %s (",
idxrec->indisunique ? "UNIQUE " : "",
quote_identifier(NameStr(idxrelrec->relname)),
- generate_relation_name(indrelid, NIL),
+ (prettyFlags & PRETTYFLAG_SCHEMA) ?
+ generate_relation_name(indrelid, NIL) :
+ generate_qualified_relation_name(indrelid),
quote_identifier(NameStr(amrec->amname)));
else /* currently, must be EXCLUDE constraint */
appendStringInfo(&buf, "EXCLUDE USING %s (",
@@ -1297,7 +1313,8 @@ pg_get_constraintdef_ext(PG_FUNCTION_ARGS)
bool pretty = PG_GETARG_BOOL(1);
int prettyFlags;
- prettyFlags = pretty ? PRETTYFLAG_PAREN | PRETTYFLAG_INDENT : PRETTYFLAG_INDENT;
+ prettyFlags = pretty ? (PRETTYFLAG_PAREN | PRETTYFLAG_INDENT | PRETTYFLAG_SCHEMA) : PRETTYFLAG_INDENT;
+
PG_RETURN_TEXT_P(string_to_text(pg_get_constraintdef_worker(constraintId,
false,
prettyFlags)));
@@ -1698,7 +1715,7 @@ pg_get_expr_ext(PG_FUNCTION_ARGS)
int prettyFlags;
char *relname;
- prettyFlags = pretty ? PRETTYFLAG_PAREN | PRETTYFLAG_INDENT : PRETTYFLAG_INDENT;
+ prettyFlags = pretty ? (PRETTYFLAG_PAREN | PRETTYFLAG_INDENT | PRETTYFLAG_SCHEMA) : PRETTYFLAG_INDENT;
if (OidIsValid(relid))
{
@@ -3970,7 +3987,11 @@ make_ruledef(StringInfo buf, HeapTuple ruletup, TupleDesc rulettc,
}
/* The relation the rule is fired on */
- appendStringInfo(buf, " TO %s", generate_relation_name(ev_class, NIL));
+ appendStringInfo(buf, " TO %s",
+ (prettyFlags & PRETTYFLAG_SCHEMA) ?
+ generate_relation_name(ev_class, NIL) :
+ generate_qualified_relation_name(ev_class));
+
if (ev_attr > 0)
appendStringInfo(buf, ".%s",
quote_identifier(get_relid_attribute_name(ev_class,