I have found that the per-column atttypmod tracking in pg_dump isn't actually used anywhere. (The values are read but not used for writing out any commands.) This is because some time ago we started formatting all types through format_type() on the server. So this dead code can be removed.
From 62d5ead1cb9166730819d0d7656ef734e99e889e Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <pe...@eisentraut.org>
Date: Tue, 21 Feb 2023 22:25:18 +0100
Subject: [PATCH] pg_dump: Remove dead code

Client-side tracking of atttypmod has been unused since 64f3524, when
server-side format_type() started being used exclusively.
---
 src/bin/pg_dump/pg_dump.c | 5 -----
 src/bin/pg_dump/pg_dump.h | 1 -
 2 files changed, 6 deletions(-)

diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c
index 527c7651ab..1a06eeaf6a 100644
--- a/src/bin/pg_dump/pg_dump.c
+++ b/src/bin/pg_dump/pg_dump.c
@@ -8182,7 +8182,6 @@ getTableAttrs(Archive *fout, TableInfo *tblinfo, int 
numTables)
        int                     i_attnum;
        int                     i_attname;
        int                     i_atttypname;
-       int                     i_atttypmod;
        int                     i_attstattarget;
        int                     i_attstorage;
        int                     i_typstorage;
@@ -8252,7 +8251,6 @@ getTableAttrs(Archive *fout, TableInfo *tblinfo, int 
numTables)
                                                 "a.attrelid,\n"
                                                 "a.attnum,\n"
                                                 "a.attname,\n"
-                                                "a.atttypmod,\n"
                                                 "a.attstattarget,\n"
                                                 "a.attstorage,\n"
                                                 "t.typstorage,\n"
@@ -8320,7 +8318,6 @@ getTableAttrs(Archive *fout, TableInfo *tblinfo, int 
numTables)
        i_attnum = PQfnumber(res, "attnum");
        i_attname = PQfnumber(res, "attname");
        i_atttypname = PQfnumber(res, "atttypname");
-       i_atttypmod = PQfnumber(res, "atttypmod");
        i_attstattarget = PQfnumber(res, "attstattarget");
        i_attstorage = PQfnumber(res, "attstorage");
        i_typstorage = PQfnumber(res, "typstorage");
@@ -8381,7 +8378,6 @@ getTableAttrs(Archive *fout, TableInfo *tblinfo, int 
numTables)
                tbinfo->numatts = numatts;
                tbinfo->attnames = (char **) pg_malloc(numatts * sizeof(char 
*));
                tbinfo->atttypnames = (char **) pg_malloc(numatts * sizeof(char 
*));
-               tbinfo->atttypmod = (int *) pg_malloc(numatts * sizeof(int));
                tbinfo->attstattarget = (int *) pg_malloc(numatts * 
sizeof(int));
                tbinfo->attstorage = (char *) pg_malloc(numatts * sizeof(char));
                tbinfo->typstorage = (char *) pg_malloc(numatts * sizeof(char));
@@ -8408,7 +8404,6 @@ getTableAttrs(Archive *fout, TableInfo *tblinfo, int 
numTables)
                                                 tbinfo->dobj.name);
                        tbinfo->attnames[j] = pg_strdup(PQgetvalue(res, r, 
i_attname));
                        tbinfo->atttypnames[j] = pg_strdup(PQgetvalue(res, r, 
i_atttypname));
-                       tbinfo->atttypmod[j] = atoi(PQgetvalue(res, r, 
i_atttypmod));
                        tbinfo->attstattarget[j] = atoi(PQgetvalue(res, r, 
i_attstattarget));
                        tbinfo->attstorage[j] = *(PQgetvalue(res, r, 
i_attstorage));
                        tbinfo->typstorage[j] = *(PQgetvalue(res, r, 
i_typstorage));
diff --git a/src/bin/pg_dump/pg_dump.h b/src/bin/pg_dump/pg_dump.h
index e7cbd8d7ed..cdca0b993d 100644
--- a/src/bin/pg_dump/pg_dump.h
+++ b/src/bin/pg_dump/pg_dump.h
@@ -326,7 +326,6 @@ typedef struct _tableInfo
        int                     numatts;                /* number of attributes 
*/
        char      **attnames;           /* the attribute names */
        char      **atttypnames;        /* attribute type names */
-       int                *atttypmod;          /* type-specific type modifiers 
*/
        int                *attstattarget;      /* attribute statistics targets 
*/
        char       *attstorage;         /* attribute storage scheme */
        char       *typstorage;         /* type storage scheme */
-- 
2.39.2

Reply via email to