Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
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 eecd64e4b57266d66524d4030cf119f5a898bb4f..01ad716605ca78b3dcd1cf57b642b225d018576e 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))