pg_dump: Remove obsolete trigger support
authorPeter Eisentraut <peter@eisentraut.org>
Sun, 14 Jan 2024 06:53:59 +0000 (07:53 +0100)
committerPeter Eisentraut <peter@eisentraut.org>
Sun, 14 Jan 2024 06:57:48 +0000 (07:57 +0100)
Remove for dumping triggers from pre-9.2 servers.  This should have
been removed as part of 30e7c175b81.

Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Discussion: https://www.postgresql.org/message-id/flat/56c8f5bf-de47-48c1-a592-588fb526e9e6%40eisentraut.org

src/bin/pg_dump/pg_dump.c
src/bin/pg_dump/pg_dump.h

index d4a888f5f137c08e8a5dc0a6b904d87a0d693ea9..bc20a025ce43dafb0db41090447852c05e5045a0 100644 (file)
@@ -7988,18 +7988,8 @@ getTriggers(Archive *fout, TableInfo tblinfo[], int numTables)
                i_oid,
                i_tgrelid,
                i_tgname,
-               i_tgfname,
-               i_tgtype,
-               i_tgnargs,
-               i_tgargs,
-               i_tgisconstraint,
-               i_tgconstrname,
-               i_tgconstrrelid,
-               i_tgconstrrelname,
                i_tgenabled,
                i_tgispartition,
-               i_tgdeferrable,
-               i_tginitdeferred,
                i_tgdef;
 
    /*
@@ -8038,7 +8028,6 @@ getTriggers(Archive *fout, TableInfo tblinfo[], int numTables)
         */
        appendPQExpBuffer(query,
                          "SELECT t.tgrelid, t.tgname, "
-                         "t.tgfoid::pg_catalog.regproc AS tgfname, "
                          "pg_catalog.pg_get_triggerdef(t.oid, false) AS tgdef, "
                          "t.tgenabled, t.tableoid, t.oid, "
                          "t.tgparentid <> 0 AS tgispartition\n"
@@ -8062,7 +8051,6 @@ getTriggers(Archive *fout, TableInfo tblinfo[], int numTables)
         */
        appendPQExpBuffer(query,
                          "SELECT t.tgrelid, t.tgname, "
-                         "t.tgfoid::pg_catalog.regproc AS tgfname, "
                          "pg_catalog.pg_get_triggerdef(t.oid, false) AS tgdef, "
                          "t.tgenabled, t.tableoid, t.oid, t.tgisinternal as tgispartition\n"
                          "FROM unnest('%s'::pg_catalog.oid[]) AS src(tbloid)\n"
@@ -8083,7 +8071,6 @@ getTriggers(Archive *fout, TableInfo tblinfo[], int numTables)
         */
        appendPQExpBuffer(query,
                          "SELECT t.tgrelid, t.tgname, "
-                         "t.tgfoid::pg_catalog.regproc AS tgfname, "
                          "pg_catalog.pg_get_triggerdef(t.oid, false) AS tgdef, "
                          "t.tgenabled, t.tableoid, t.oid, t.tgisinternal as tgispartition "
                          "FROM unnest('%s'::pg_catalog.oid[]) AS src(tbloid)\n"
@@ -8102,7 +8089,6 @@ getTriggers(Archive *fout, TableInfo tblinfo[], int numTables)
        /* See above about pretty=true in pg_get_triggerdef */
        appendPQExpBuffer(query,
                          "SELECT t.tgrelid, t.tgname, "
-                         "t.tgfoid::pg_catalog.regproc AS tgfname, "
                          "pg_catalog.pg_get_triggerdef(t.oid, false) AS tgdef, "
                          "t.tgenabled, false as tgispartition, "
                          "t.tableoid, t.oid "
@@ -8121,18 +8107,8 @@ getTriggers(Archive *fout, TableInfo tblinfo[], int numTables)
    i_oid = PQfnumber(res, "oid");
    i_tgrelid = PQfnumber(res, "tgrelid");
    i_tgname = PQfnumber(res, "tgname");
-   i_tgfname = PQfnumber(res, "tgfname");
-   i_tgtype = PQfnumber(res, "tgtype");
-   i_tgnargs = PQfnumber(res, "tgnargs");
-   i_tgargs = PQfnumber(res, "tgargs");
-   i_tgisconstraint = PQfnumber(res, "tgisconstraint");
-   i_tgconstrname = PQfnumber(res, "tgconstrname");
-   i_tgconstrrelid = PQfnumber(res, "tgconstrrelid");
-   i_tgconstrrelname = PQfnumber(res, "tgconstrrelname");
    i_tgenabled = PQfnumber(res, "tgenabled");
    i_tgispartition = PQfnumber(res, "tgispartition");
-   i_tgdeferrable = PQfnumber(res, "tgdeferrable");
-   i_tginitdeferred = PQfnumber(res, "tginitdeferred");
    i_tgdef = PQfnumber(res, "tgdef");
 
    tginfo = (TriggerInfo *) pg_malloc(ntups * sizeof(TriggerInfo));
@@ -8181,57 +8157,7 @@ getTriggers(Archive *fout, TableInfo tblinfo[], int numTables)
            tginfo[j].tgtable = tbinfo;
            tginfo[j].tgenabled = *(PQgetvalue(res, j, i_tgenabled));
            tginfo[j].tgispartition = *(PQgetvalue(res, j, i_tgispartition)) == 't';
-           if (i_tgdef >= 0)
-           {
-               tginfo[j].tgdef = pg_strdup(PQgetvalue(res, j, i_tgdef));
-
-               /* remaining fields are not valid if we have tgdef */
-               tginfo[j].tgfname = NULL;
-               tginfo[j].tgtype = 0;
-               tginfo[j].tgnargs = 0;
-               tginfo[j].tgargs = NULL;
-               tginfo[j].tgisconstraint = false;
-               tginfo[j].tgdeferrable = false;
-               tginfo[j].tginitdeferred = false;
-               tginfo[j].tgconstrname = NULL;
-               tginfo[j].tgconstrrelid = InvalidOid;
-               tginfo[j].tgconstrrelname = NULL;
-           }
-           else
-           {
-               tginfo[j].tgdef = NULL;
-
-               tginfo[j].tgfname = pg_strdup(PQgetvalue(res, j, i_tgfname));
-               tginfo[j].tgtype = atoi(PQgetvalue(res, j, i_tgtype));
-               tginfo[j].tgnargs = atoi(PQgetvalue(res, j, i_tgnargs));
-               tginfo[j].tgargs = pg_strdup(PQgetvalue(res, j, i_tgargs));
-               tginfo[j].tgisconstraint = *(PQgetvalue(res, j, i_tgisconstraint)) == 't';
-               tginfo[j].tgdeferrable = *(PQgetvalue(res, j, i_tgdeferrable)) == 't';
-               tginfo[j].tginitdeferred = *(PQgetvalue(res, j, i_tginitdeferred)) == 't';
-
-               if (tginfo[j].tgisconstraint)
-               {
-                   tginfo[j].tgconstrname = pg_strdup(PQgetvalue(res, j, i_tgconstrname));
-                   tginfo[j].tgconstrrelid = atooid(PQgetvalue(res, j, i_tgconstrrelid));
-                   if (OidIsValid(tginfo[j].tgconstrrelid))
-                   {
-                       if (PQgetisnull(res, j, i_tgconstrrelname))
-                           pg_fatal("query produced null referenced table name for foreign key trigger \"%s\" on table \"%s\" (OID of table: %u)",
-                                    tginfo[j].dobj.name,
-                                    tbinfo->dobj.name,
-                                    tginfo[j].tgconstrrelid);
-                       tginfo[j].tgconstrrelname = pg_strdup(PQgetvalue(res, j, i_tgconstrrelname));
-                   }
-                   else
-                       tginfo[j].tgconstrrelname = NULL;
-               }
-               else
-               {
-                   tginfo[j].tgconstrname = NULL;
-                   tginfo[j].tgconstrrelid = InvalidOid;
-                   tginfo[j].tgconstrrelname = NULL;
-               }
-           }
+           tginfo[j].tgdef = pg_strdup(PQgetvalue(res, j, i_tgdef));
        }
    }
 
@@ -17776,10 +17702,6 @@ dumpTrigger(Archive *fout, const TriggerInfo *tginfo)
    PQExpBuffer trigprefix;
    PQExpBuffer trigidentity;
    char       *qtabname;
-   char       *tgargs;
-   size_t      lentgargs;
-   const char *p;
-   int         findx;
    char       *tag;
 
    /* Do nothing in data-only dump */
@@ -17796,121 +17718,9 @@ dumpTrigger(Archive *fout, const TriggerInfo *tginfo)
    appendPQExpBuffer(trigidentity, "%s ", fmtId(tginfo->dobj.name));
    appendPQExpBuffer(trigidentity, "ON %s", fmtQualifiedDumpable(tbinfo));
 
+   appendPQExpBuffer(query, "%s;\n", tginfo->tgdef);
    appendPQExpBuffer(delqry, "DROP TRIGGER %s;\n", trigidentity->data);
 
-   if (tginfo->tgdef)
-   {
-       appendPQExpBuffer(query, "%s;\n", tginfo->tgdef);
-   }
-   else
-   {
-       if (tginfo->tgisconstraint)
-       {
-           appendPQExpBufferStr(query, "CREATE CONSTRAINT TRIGGER ");
-           appendPQExpBufferStr(query, fmtId(tginfo->tgconstrname));
-       }
-       else
-       {
-           appendPQExpBufferStr(query, "CREATE TRIGGER ");
-           appendPQExpBufferStr(query, fmtId(tginfo->dobj.name));
-       }
-       appendPQExpBufferStr(query, "\n    ");
-
-       /* Trigger type */
-       if (TRIGGER_FOR_BEFORE(tginfo->tgtype))
-           appendPQExpBufferStr(query, "BEFORE");
-       else if (TRIGGER_FOR_AFTER(tginfo->tgtype))
-           appendPQExpBufferStr(query, "AFTER");
-       else if (TRIGGER_FOR_INSTEAD(tginfo->tgtype))
-           appendPQExpBufferStr(query, "INSTEAD OF");
-       else
-           pg_fatal("unexpected tgtype value: %d", tginfo->tgtype);
-
-       findx = 0;
-       if (TRIGGER_FOR_INSERT(tginfo->tgtype))
-       {
-           appendPQExpBufferStr(query, " INSERT");
-           findx++;
-       }
-       if (TRIGGER_FOR_DELETE(tginfo->tgtype))
-       {
-           if (findx > 0)
-               appendPQExpBufferStr(query, " OR DELETE");
-           else
-               appendPQExpBufferStr(query, " DELETE");
-           findx++;
-       }
-       if (TRIGGER_FOR_UPDATE(tginfo->tgtype))
-       {
-           if (findx > 0)
-               appendPQExpBufferStr(query, " OR UPDATE");
-           else
-               appendPQExpBufferStr(query, " UPDATE");
-           findx++;
-       }
-       if (TRIGGER_FOR_TRUNCATE(tginfo->tgtype))
-       {
-           if (findx > 0)
-               appendPQExpBufferStr(query, " OR TRUNCATE");
-           else
-               appendPQExpBufferStr(query, " TRUNCATE");
-           findx++;
-       }
-       appendPQExpBuffer(query, " ON %s\n",
-                         fmtQualifiedDumpable(tbinfo));
-
-       if (tginfo->tgisconstraint)
-       {
-           if (OidIsValid(tginfo->tgconstrrelid))
-           {
-               /* regclass output is already quoted */
-               appendPQExpBuffer(query, "    FROM %s\n    ",
-                                 tginfo->tgconstrrelname);
-           }
-           if (!tginfo->tgdeferrable)
-               appendPQExpBufferStr(query, "NOT ");
-           appendPQExpBufferStr(query, "DEFERRABLE INITIALLY ");
-           if (tginfo->tginitdeferred)
-               appendPQExpBufferStr(query, "DEFERRED\n");
-           else
-               appendPQExpBufferStr(query, "IMMEDIATE\n");
-       }
-
-       if (TRIGGER_FOR_ROW(tginfo->tgtype))
-           appendPQExpBufferStr(query, "    FOR EACH ROW\n    ");
-       else
-           appendPQExpBufferStr(query, "    FOR EACH STATEMENT\n    ");
-
-       /* regproc output is already sufficiently quoted */
-       appendPQExpBuffer(query, "EXECUTE FUNCTION %s(",
-                         tginfo->tgfname);
-
-       tgargs = (char *) PQunescapeBytea((unsigned char *) tginfo->tgargs,
-                                         &lentgargs);
-       p = tgargs;
-       for (findx = 0; findx < tginfo->tgnargs; findx++)
-       {
-           /* find the embedded null that terminates this trigger argument */
-           size_t      tlen = strlen(p);
-
-           if (p + tlen >= tgargs + lentgargs)
-           {
-               /* hm, not found before end of bytea value... */
-               pg_fatal("invalid argument string (%s) for trigger \"%s\" on table \"%s\"",
-                        tginfo->tgargs,
-                        tginfo->dobj.name,
-                        tbinfo->dobj.name);
-           }
-
-           if (findx > 0)
-               appendPQExpBufferStr(query, ", ");
-           appendStringLiteralAH(query, p, fout);
-           p += tlen + 1;
-       }
-       free(tgargs);
-       appendPQExpBufferStr(query, ");\n");
-   }
-
    /* Triggers can depend on extensions */
    append_depends_on_extension(fout, query, &tginfo->dobj,
                                "pg_catalog.pg_trigger", "TRIGGER",
index 9a34347cfc7f7daffe2a20979be542031a26d420..f0772d21579525c5a0af8e7dad5bb129fc596c7b 100644 (file)
@@ -444,18 +444,8 @@ typedef struct _triggerInfo
 {
    DumpableObject dobj;
    TableInfo  *tgtable;        /* link to table the trigger is for */
-   char       *tgfname;
-   int         tgtype;
-   int         tgnargs;
-   char       *tgargs;
-   bool        tgisconstraint;
-   char       *tgconstrname;
-   Oid         tgconstrrelid;
-   char       *tgconstrrelname;
    char        tgenabled;
    bool        tgispartition;
-   bool        tgdeferrable;
-   bool        tginitdeferred;
    char       *tgdef;
 } TriggerInfo;