@@ -6874,7 +6874,8 @@ getFuncs(Archive *fout)
68746874 */
68756875static RelStatsInfo *
68766876getRelationStatistics(Archive *fout, DumpableObject *rel, int32 relpages,
6877- char *reltuples, int32 relallvisible, char relkind,
6877+ char *reltuples, int32 relallvisible,
6878+ int32 relallfrozen, char relkind,
68786879 char **indAttNames, int nindAttNames)
68796880{
68806881 if (!fout->dopt->dumpStatistics)
@@ -6903,6 +6904,7 @@ getRelationStatistics(Archive *fout, DumpableObject *rel, int32 relpages,
69036904 info->relpages = relpages;
69046905 info->reltuples = pstrdup(reltuples);
69056906 info->relallvisible = relallvisible;
6907+ info->relallfrozen = relallfrozen;
69066908 info->relkind = relkind;
69076909 info->indAttNames = indAttNames;
69086910 info->nindAttNames = nindAttNames;
@@ -6967,6 +6969,7 @@ getTables(Archive *fout, int *numTables)
69676969 int i_relpages;
69686970 int i_reltuples;
69696971 int i_relallvisible;
6972+ int i_relallfrozen;
69706973 int i_toastpages;
69716974 int i_owning_tab;
69726975 int i_owning_col;
@@ -7017,8 +7020,15 @@ getTables(Archive *fout, int *numTables)
70177020 "c.relowner, "
70187021 "c.relchecks, "
70197022 "c.relhasindex, c.relhasrules, c.relpages, "
7020- "c.reltuples, c.relallvisible, c.relhastriggers, "
7021- "c.relpersistence, "
7023+ "c.reltuples, c.relallvisible, ");
7024+
7025+ if (fout->remoteVersion >= 180000)
7026+ appendPQExpBufferStr(query, "c.relallfrozen, ");
7027+ else
7028+ appendPQExpBufferStr(query, "0 AS relallfrozen, ");
7029+
7030+ appendPQExpBufferStr(query,
7031+ "c.relhastriggers, c.relpersistence, "
70227032 "c.reloftype, "
70237033 "c.relacl, "
70247034 "acldefault(CASE WHEN c.relkind = " CppAsString2(RELKIND_SEQUENCE)
@@ -7183,6 +7193,7 @@ getTables(Archive *fout, int *numTables)
71837193 i_relpages = PQfnumber(res, "relpages");
71847194 i_reltuples = PQfnumber(res, "reltuples");
71857195 i_relallvisible = PQfnumber(res, "relallvisible");
7196+ i_relallfrozen = PQfnumber(res, "relallfrozen");
71867197 i_toastpages = PQfnumber(res, "toastpages");
71877198 i_owning_tab = PQfnumber(res, "owning_tab");
71887199 i_owning_col = PQfnumber(res, "owning_col");
@@ -7230,6 +7241,7 @@ getTables(Archive *fout, int *numTables)
72307241 for (i = 0; i < ntups; i++)
72317242 {
72327243 int32 relallvisible = atoi(PQgetvalue(res, i, i_relallvisible));
7244+ int32 relallfrozen = atoi(PQgetvalue(res, i, i_relallfrozen));
72337245
72347246 tblinfo[i].dobj.objType = DO_TABLE;
72357247 tblinfo[i].dobj.catId.tableoid = atooid(PQgetvalue(res, i, i_reltableoid));
@@ -7336,7 +7348,7 @@ getTables(Archive *fout, int *numTables)
73367348 stats = getRelationStatistics(fout, &tblinfo[i].dobj,
73377349 tblinfo[i].relpages,
73387350 PQgetvalue(res, i, i_reltuples),
7339- relallvisible,
7351+ relallvisible, relallfrozen,
73407352 tblinfo[i].relkind, NULL, 0);
73417353 if (tblinfo[i].relkind == RELKIND_MATVIEW)
73427354 tblinfo[i].stats = stats;
@@ -7609,6 +7621,7 @@ getIndexes(Archive *fout, TableInfo tblinfo[], int numTables)
76097621 i_relpages,
76107622 i_reltuples,
76117623 i_relallvisible,
7624+ i_relallfrozen,
76127625 i_parentidx,
76137626 i_indexdef,
76147627 i_indnkeyatts,
@@ -7663,7 +7676,14 @@ getIndexes(Archive *fout, TableInfo tblinfo[], int numTables)
76637676 appendPQExpBufferStr(query,
76647677 "SELECT t.tableoid, t.oid, i.indrelid, "
76657678 "t.relname AS indexname, "
7666- "t.relpages, t.reltuples, t.relallvisible, "
7679+ "t.relpages, t.reltuples, t.relallvisible, ");
7680+
7681+ if (fout->remoteVersion >= 180000)
7682+ appendPQExpBufferStr(query, "t.relallfrozen, ");
7683+ else
7684+ appendPQExpBufferStr(query, "0 AS relallfrozen, ");
7685+
7686+ appendPQExpBufferStr(query,
76677687 "pg_catalog.pg_get_indexdef(i.indexrelid) AS indexdef, "
76687688 "i.indkey, i.indisclustered, "
76697689 "c.contype, c.conname, "
@@ -7779,6 +7799,7 @@ getIndexes(Archive *fout, TableInfo tblinfo[], int numTables)
77797799 i_relpages = PQfnumber(res, "relpages");
77807800 i_reltuples = PQfnumber(res, "reltuples");
77817801 i_relallvisible = PQfnumber(res, "relallvisible");
7802+ i_relallfrozen = PQfnumber(res, "relallfrozen");
77827803 i_parentidx = PQfnumber(res, "parentidx");
77837804 i_indexdef = PQfnumber(res, "indexdef");
77847805 i_indnkeyatts = PQfnumber(res, "indnkeyatts");
@@ -7850,6 +7871,7 @@ getIndexes(Archive *fout, TableInfo tblinfo[], int numTables)
78507871 RelStatsInfo *relstats;
78517872 int32 relpages = atoi(PQgetvalue(res, j, i_relpages));
78527873 int32 relallvisible = atoi(PQgetvalue(res, j, i_relallvisible));
7874+ int32 relallfrozen = atoi(PQgetvalue(res, j, i_relallfrozen));
78537875
78547876 indxinfo[j].dobj.objType = DO_INDEX;
78557877 indxinfo[j].dobj.catId.tableoid = atooid(PQgetvalue(res, j, i_tableoid));
@@ -7892,7 +7914,7 @@ getIndexes(Archive *fout, TableInfo tblinfo[], int numTables)
78927914
78937915 relstats = getRelationStatistics(fout, &indxinfo[j].dobj, relpages,
78947916 PQgetvalue(res, j, i_reltuples),
7895- relallvisible, indexkind,
7917+ relallvisible, relallfrozen, indexkind,
78967918 indAttNames, nindAttNames);
78977919
78987920 contype = *(PQgetvalue(res, j, i_contype));
@@ -10618,9 +10640,15 @@ dumpRelationStats(Archive *fout, const RelStatsInfo *rsinfo)
1061810640 appendPQExpBufferStr(out, ",\n");
1061910641 appendPQExpBuffer(out, "\t'relpages', '%d'::integer,\n", rsinfo->relpages);
1062010642 appendPQExpBuffer(out, "\t'reltuples', '%s'::real,\n", rsinfo->reltuples);
10621- appendPQExpBuffer(out, "\t'relallvisible', '%d'::integer\n);\n ",
10643+ appendPQExpBuffer(out, "\t'relallvisible', '%d'::integer",
1062210644 rsinfo->relallvisible);
1062310645
10646+ if (fout->remoteVersion >= 180000)
10647+ appendPQExpBuffer(out, ",\n\t'relallfrozen', '%d'::integer", rsinfo->relallfrozen);
10648+
10649+ appendPQExpBufferStr(out, "\n);\n");
10650+
10651+
1062410652 /* fetch attribute stats */
1062510653 appendPQExpBufferStr(query, "EXECUTE getAttributeStats(");
1062610654 appendStringLiteralAH(query, dobj->namespace->dobj.name, fout);
0 commit comments