]> granicus.if.org Git - postgresql/commitdiff
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))