*/
static RelStatsInfo *
getRelationStatistics(Archive *fout, DumpableObject *rel, int32 relpages,
- char *reltuples, int32 relallvisible, char relkind,
+ char *reltuples, int32 relallvisible,
+ int32 relallfrozen, char relkind,
char **indAttNames, int nindAttNames)
{
if (!fout->dopt->dumpStatistics)
info->relpages = relpages;
info->reltuples = pstrdup(reltuples);
info->relallvisible = relallvisible;
+ info->relallfrozen = relallfrozen;
info->relkind = relkind;
info->indAttNames = indAttNames;
info->nindAttNames = nindAttNames;
int i_relpages;
int i_reltuples;
int i_relallvisible;
+ int i_relallfrozen;
int i_toastpages;
int i_owning_tab;
int i_owning_col;
"c.relowner, "
"c.relchecks, "
"c.relhasindex, c.relhasrules, c.relpages, "
- "c.reltuples, c.relallvisible, c.relhastriggers, "
- "c.relpersistence, "
+ "c.reltuples, c.relallvisible, ");
+
+ if (fout->remoteVersion >= 180000)
+ appendPQExpBufferStr(query, "c.relallfrozen, ");
+ else
+ appendPQExpBufferStr(query, "0 AS relallfrozen, ");
+
+ appendPQExpBufferStr(query,
+ "c.relhastriggers, c.relpersistence, "
"c.reloftype, "
"c.relacl, "
"acldefault(CASE WHEN c.relkind = " CppAsString2(RELKIND_SEQUENCE)
i_relpages = PQfnumber(res, "relpages");
i_reltuples = PQfnumber(res, "reltuples");
i_relallvisible = PQfnumber(res, "relallvisible");
+ i_relallfrozen = PQfnumber(res, "relallfrozen");
i_toastpages = PQfnumber(res, "toastpages");
i_owning_tab = PQfnumber(res, "owning_tab");
i_owning_col = PQfnumber(res, "owning_col");
for (i = 0; i < ntups; i++)
{
int32 relallvisible = atoi(PQgetvalue(res, i, i_relallvisible));
+ int32 relallfrozen = atoi(PQgetvalue(res, i, i_relallfrozen));
tblinfo[i].dobj.objType = DO_TABLE;
tblinfo[i].dobj.catId.tableoid = atooid(PQgetvalue(res, i, i_reltableoid));
stats = getRelationStatistics(fout, &tblinfo[i].dobj,
tblinfo[i].relpages,
PQgetvalue(res, i, i_reltuples),
- relallvisible,
+ relallvisible, relallfrozen,
tblinfo[i].relkind, NULL, 0);
if (tblinfo[i].relkind == RELKIND_MATVIEW)
tblinfo[i].stats = stats;
i_relpages,
i_reltuples,
i_relallvisible,
+ i_relallfrozen,
i_parentidx,
i_indexdef,
i_indnkeyatts,
appendPQExpBufferStr(query,
"SELECT t.tableoid, t.oid, i.indrelid, "
"t.relname AS indexname, "
- "t.relpages, t.reltuples, t.relallvisible, "
+ "t.relpages, t.reltuples, t.relallvisible, ");
+
+ if (fout->remoteVersion >= 180000)
+ appendPQExpBufferStr(query, "t.relallfrozen, ");
+ else
+ appendPQExpBufferStr(query, "0 AS relallfrozen, ");
+
+ appendPQExpBufferStr(query,
"pg_catalog.pg_get_indexdef(i.indexrelid) AS indexdef, "
"i.indkey, i.indisclustered, "
"c.contype, c.conname, "
i_relpages = PQfnumber(res, "relpages");
i_reltuples = PQfnumber(res, "reltuples");
i_relallvisible = PQfnumber(res, "relallvisible");
+ i_relallfrozen = PQfnumber(res, "relallfrozen");
i_parentidx = PQfnumber(res, "parentidx");
i_indexdef = PQfnumber(res, "indexdef");
i_indnkeyatts = PQfnumber(res, "indnkeyatts");
RelStatsInfo *relstats;
int32 relpages = atoi(PQgetvalue(res, j, i_relpages));
int32 relallvisible = atoi(PQgetvalue(res, j, i_relallvisible));
+ int32 relallfrozen = atoi(PQgetvalue(res, j, i_relallfrozen));
indxinfo[j].dobj.objType = DO_INDEX;
indxinfo[j].dobj.catId.tableoid = atooid(PQgetvalue(res, j, i_tableoid));
relstats = getRelationStatistics(fout, &indxinfo[j].dobj, relpages,
PQgetvalue(res, j, i_reltuples),
- relallvisible, indexkind,
+ relallvisible, relallfrozen, indexkind,
indAttNames, nindAttNames);
contype = *(PQgetvalue(res, j, i_contype));
appendPQExpBufferStr(out, ",\n");
appendPQExpBuffer(out, "\t'relpages', '%d'::integer,\n", rsinfo->relpages);
appendPQExpBuffer(out, "\t'reltuples', '%s'::real,\n", rsinfo->reltuples);
- appendPQExpBuffer(out, "\t'relallvisible', '%d'::integer\n);\n",
+ appendPQExpBuffer(out, "\t'relallvisible', '%d'::integer",
rsinfo->relallvisible);
+ if (fout->remoteVersion >= 180000)
+ appendPQExpBuffer(out, ",\n\t'relallfrozen', '%d'::integer", rsinfo->relallfrozen);
+
+ appendPQExpBufferStr(out, "\n);\n");
+
+
/* fetch attribute stats */
appendPQExpBufferStr(query, "EXECUTE getAttributeStats(");
appendStringLiteralAH(query, dobj->namespace->dobj.name, fout);