Add missing quote_identifier calls for CREATE TRIGGER ... REFERENCING.
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 19 Oct 2018 04:50:16 +0000 (00:50 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 19 Oct 2018 04:50:16 +0000 (00:50 -0400)
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

src/backend/utils/adt/ruleutils.c

index f6693eaa796e91291c7575d42fba705301b6416f..29884f1c8b6e67f837ec9d0fd9c66319fadef6bf 100644 (file)
@@ -954,22 +954,24 @@ pg_get_triggerdef_worker(Oid trigid, bool pretty)
    value = fastgetattr(ht_trig, Anum_pg_trigger_tgoldtable,
                        tgrel->rd_att, &isnull);
    if (!isnull)
-       tgoldtable = NameStr(*((NameData *) DatumGetPointer(value)));
+       tgoldtable = NameStr(*DatumGetName(value));
    else
        tgoldtable = NULL;
    value = fastgetattr(ht_trig, Anum_pg_trigger_tgnewtable,
                        tgrel->rd_att, &isnull);
    if (!isnull)
-       tgnewtable = NameStr(*((NameData *) DatumGetPointer(value)));
+       tgnewtable = NameStr(*DatumGetName(value));
    else
        tgnewtable = NULL;
    if (tgoldtable != NULL || tgnewtable != NULL)
    {
        appendStringInfoString(&buf, "REFERENCING ");
        if (tgoldtable != NULL)
-           appendStringInfo(&buf, "OLD TABLE AS %s ", tgoldtable);
+           appendStringInfo(&buf, "OLD TABLE AS %s ",
+                            quote_identifier(tgoldtable));
        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))