Add missing quote_identifier calls for CREATE TRIGGER ... REFERENCING.

Mixed-case names for transition tables weren't dumped correctly.
Oversight in commit 8c48375e5, per bug #15440 from Karl Czajkowski.

In passing, I couldn't resist a bit of code beautification.

Back-patch to v10 where this was introduced.

Discussion: https://postgr.es/m/15440-02d1468e94d63d76@postgresql.org
This commit is contained in:
Tom Lane 2018-10-19 00:50:16 -04:00
parent d1e869d1ef
commit 06292bb949

View File

@ -954,22 +954,24 @@ pg_get_triggerdef_worker(Oid trigid, bool pretty)
value = fastgetattr(ht_trig, Anum_pg_trigger_tgoldtable, value = fastgetattr(ht_trig, Anum_pg_trigger_tgoldtable,
tgrel->rd_att, &isnull); tgrel->rd_att, &isnull);
if (!isnull) if (!isnull)
tgoldtable = NameStr(*((NameData *) DatumGetPointer(value))); tgoldtable = NameStr(*DatumGetName(value));
else else
tgoldtable = NULL; tgoldtable = NULL;
value = fastgetattr(ht_trig, Anum_pg_trigger_tgnewtable, value = fastgetattr(ht_trig, Anum_pg_trigger_tgnewtable,
tgrel->rd_att, &isnull); tgrel->rd_att, &isnull);
if (!isnull) if (!isnull)
tgnewtable = NameStr(*((NameData *) DatumGetPointer(value))); tgnewtable = NameStr(*DatumGetName(value));
else else
tgnewtable = NULL; tgnewtable = NULL;
if (tgoldtable != NULL || tgnewtable != NULL) if (tgoldtable != NULL || tgnewtable != NULL)
{ {
appendStringInfoString(&buf, "REFERENCING "); appendStringInfoString(&buf, "REFERENCING ");
if (tgoldtable != NULL) if (tgoldtable != NULL)
appendStringInfo(&buf, "OLD TABLE AS %s ", tgoldtable); appendStringInfo(&buf, "OLD TABLE AS %s ",
quote_identifier(tgoldtable));
if (tgnewtable != NULL) if (tgnewtable != NULL)
appendStringInfo(&buf, "NEW TABLE AS %s ", tgnewtable); appendStringInfo(&buf, "NEW TABLE AS %s ",
quote_identifier(tgnewtable));
} }
if (TRIGGER_FOR_ROW(trigrec->tgtype)) if (TRIGGER_FOR_ROW(trigrec->tgtype))