aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2016-10-12 12:19:56 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2016-10-12 12:20:02 -0400
commit64f3524e2c8deebc02808aa5ebdfa17859473add (patch)
treecf263da1216e5044c9f9af675e595b287384e960 /src
parentbb55dd6059dddf2cd44423da6a3f6946826953cf (diff)
downloadpostgresql-64f3524e2c8deebc02808aa5ebdfa17859473add.tar.gz
postgresql-64f3524e2c8deebc02808aa5ebdfa17859473add.zip
Remove pg_dump/pg_dumpall support for dumping from pre-8.0 servers.
The need for dumping from such ancient servers has decreased to about nil in the field, so let's remove all the code that catered to it. Aside from removing a lot of boilerplate variant queries, this allows us to not have to cope with servers that don't have (a) schemas or (b) pg_depend. That means we can get rid of assorted squishy code around that. There may be some nonobvious additional simplifications possible, but this patch already removes about 1500 lines of code. I did not remove the ability for pg_restore to read custom-format archives generated by these old versions (and light testing says that that does still work). If you have an old server, you probably also have a pg_dump that will work with it; but you have an old custom-format backup file, that might be all you have. It'd be possible at this point to remove fmtQualifiedId()'s version argument, but I refrained since that would affect code outside pg_dump. Discussion: <2661.1475849167@sss.pgh.pa.us>
Diffstat (limited to 'src')
-rw-r--r--src/bin/pg_dump/dumputils.c50
-rw-r--r--src/bin/pg_dump/pg_backup_archiver.c2
-rw-r--r--src/bin/pg_dump/pg_dump.c1727
-rw-r--r--src/bin/pg_dump/pg_dump.h1
-rw-r--r--src/bin/pg_dump/pg_dump_sort.c96
-rw-r--r--src/bin/pg_dump/pg_dumpall.c110
6 files changed, 230 insertions, 1756 deletions
diff --git a/src/bin/pg_dump/dumputils.c b/src/bin/pg_dump/dumputils.c
index cd1e8c4a680..0d5166891e8 100644
--- a/src/bin/pg_dump/dumputils.c
+++ b/src/bin/pg_dump/dumputils.c
@@ -18,8 +18,6 @@
#include "fe_utils/string_utils.h"
-#define supports_grant_options(version) ((version) >= 70400)
-
static bool parseAclItem(const char *item, const char *type,
const char *name, const char *subname, int remoteVersion,
PQExpBuffer grantee, PQExpBuffer grantor,
@@ -246,11 +244,9 @@ buildACLCommands(const char *name, const char *subname,
/*
* For the owner, the default privilege level is ALL WITH
- * GRANT OPTION (only ALL prior to 7.4).
+ * GRANT OPTION.
*/
- if (supports_grant_options(remoteVersion)
- ? strcmp(privswgo->data, "ALL") != 0
- : strcmp(privs->data, "ALL") != 0)
+ if (strcmp(privswgo->data, "ALL") != 0)
{
appendPQExpBuffer(firstsql, "%sREVOKE ALL", prefix);
if (subname)
@@ -403,16 +399,19 @@ buildDefaultACLCommands(const char *type, const char *nspname,
* username=privilegecodes/grantor
* or
* group groupname=privilegecodes/grantor
- * (the /grantor part will not be present if pre-7.4 database).
+ * (the "group" case occurs only with servers before 8.1).
+ *
+ * Returns true on success, false on parse error. On success, the components
+ * of the string are returned in the PQExpBuffer parameters.
*
* The returned grantee string will be the dequoted username or groupname
- * (preceded with "group " in the latter case). The returned grantor is
- * the dequoted grantor name or empty. Privilege characters are decoded
- * and split between privileges with grant option (privswgo) and without
- * (privs).
+ * (preceded with "group " in the latter case). Note that a grant to PUBLIC
+ * is represented by an empty grantee string. The returned grantor is the
+ * dequoted grantor name. Privilege characters are decoded and split between
+ * privileges with grant option (privswgo) and without (privs).
*
- * Note: for cross-version compatibility, it's important to use ALL when
- * appropriate.
+ * Note: for cross-version compatibility, it's important to use ALL to
+ * represent the privilege sets whenever appropriate.
*/
static bool
parseAclItem(const char *item, const char *type,
@@ -439,7 +438,7 @@ parseAclItem(const char *item, const char *type,
return false;
}
- /* grantor may be listed after / */
+ /* grantor should appear after / */
slpos = strchr(eqpos + 1, '/');
if (slpos)
{
@@ -452,7 +451,10 @@ parseAclItem(const char *item, const char *type,
}
}
else
- resetPQExpBuffer(grantor);
+ {
+ free(buf);
+ return false;
+ }
/* privilege codes */
#define CONVERT_PRIV(code, keywd) \
@@ -490,29 +492,19 @@ do { \
{
/* table only */
CONVERT_PRIV('a', "INSERT");
- if (remoteVersion >= 70200)
- CONVERT_PRIV('x', "REFERENCES");
+ CONVERT_PRIV('x', "REFERENCES");
/* rest are not applicable to columns */
if (subname == NULL)
{
- if (remoteVersion >= 70200)
- {
- CONVERT_PRIV('d', "DELETE");
- CONVERT_PRIV('t', "TRIGGER");
- }
+ CONVERT_PRIV('d', "DELETE");
+ CONVERT_PRIV('t', "TRIGGER");
if (remoteVersion >= 80400)
CONVERT_PRIV('D', "TRUNCATE");
}
}
/* UPDATE */
- if (remoteVersion >= 70200 ||
- strcmp(type, "SEQUENCE") == 0 ||
- strcmp(type, "SEQUENCES") == 0)
- CONVERT_PRIV('w', "UPDATE");
- else
- /* 7.0 and 7.1 have a simpler worldview */
- CONVERT_PRIV('w', "UPDATE,DELETE");
+ CONVERT_PRIV('w', "UPDATE");
}
else if (strcmp(type, "FUNCTION") == 0 ||
strcmp(type, "FUNCTIONS") == 0)
diff --git a/src/bin/pg_dump/pg_backup_archiver.c b/src/bin/pg_dump/pg_backup_archiver.c
index bba8b6ca9f9..e237b4a9c90 100644
--- a/src/bin/pg_dump/pg_backup_archiver.c
+++ b/src/bin/pg_dump/pg_backup_archiver.c
@@ -388,7 +388,7 @@ RestoreArchive(Archive *AHX)
* target.
*/
AHX->minRemoteVersion = 0;
- AHX->maxRemoteVersion = 999999;
+ AHX->maxRemoteVersion = 9999999;
ConnectDatabase(AHX, ropt->dbname,
ropt->pghost, ropt->pgport, ropt->username,
diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c
index fde7f59c3d0..c821f3b0ee1 100644
--- a/src/bin/pg_dump/pg_dump.c
+++ b/src/bin/pg_dump/pg_dump.c
@@ -96,9 +96,6 @@ bool g_verbose; /* User wants verbose narration of our
/* subquery used to convert user ID (eg, datdba) to user name */
static const char *username_subquery;
-/* obsolete as of 7.3: */
-static Oid g_last_builtin_oid; /* value of the last builtin oid */
-
/* The specified names/patterns should to match at least one entity */
static int strict_names = 0;
@@ -142,7 +139,7 @@ static void expand_table_name_patterns(Archive *fout,
SimpleStringList *patterns,
SimpleOidList *oids,
bool strict_names);
-static NamespaceInfo *findNamespace(Archive *fout, Oid nsoid, Oid objoid);
+static NamespaceInfo *findNamespace(Archive *fout, Oid nsoid);
static void dumpTableData(Archive *fout, TableDataInfo *tdinfo);
static void refreshMatViewData(Archive *fout, TableDataInfo *tdinfo);
static void guessConstraintInheritance(TableInfo *tblinfo, int numTables);
@@ -236,11 +233,8 @@ static char *convertRegProcReference(Archive *fout,
const char *proc);
static char *convertOperatorReference(Archive *fout, const char *opr);
static char *convertTSFunction(Archive *fout, Oid funcOid);
-static Oid findLastBuiltinOid_V71(Archive *fout, const char *);
-static Oid findLastBuiltinOid_V70(Archive *fout);
static void selectSourceSchema(Archive *fout, const char *schemaName);
static char *getFormattedTypeName(Archive *fout, Oid oid, OidOptions opts);
-static char *myFormatType(const char *typname, int32 typmod);
static void getBlobs(Archive *fout);
static void dumpBlob(Archive *fout, BlobInfo *binfo);
static int dumpBlobs(Archive *fout, void *arg);
@@ -633,10 +627,10 @@ main(int argc, char **argv)
fout->verbose = g_verbose;
/*
- * We allow the server to be back to 7.0, and up to any minor release of
+ * We allow the server to be back to 8.0, and up to any minor release of
* our own major version. (See also version check in pg_dumpall.c.)
*/
- fout->minRemoteVersion = 70000;
+ fout->minRemoteVersion = 80000;
fout->maxRemoteVersion = (PG_VERSION_NUM / 100) * 100 + 99;
fout->numWorkers = numWorkers;
@@ -665,10 +659,8 @@ main(int argc, char **argv)
/* Select the appropriate subquery to convert user IDs to names */
if (fout->remoteVersion >= 80100)
username_subquery = "SELECT rolname FROM pg_catalog.pg_roles WHERE oid =";
- else if (fout->remoteVersion >= 70300)
- username_subquery = "SELECT usename FROM pg_catalog.pg_user WHERE usesysid =";
else
- username_subquery = "SELECT usename FROM pg_user WHERE usesysid =";
+ username_subquery = "SELECT usename FROM pg_catalog.pg_user WHERE usesysid =";
/* check the version for the synchronized snapshots feature */
if (numWorkers > 1 && fout->remoteVersion < 90200
@@ -683,18 +675,6 @@ main(int argc, char **argv)
exit_horribly(NULL,
"Exported snapshots are not supported by this server version.\n");
- /* Find the last built-in OID, if needed */
- if (fout->remoteVersion < 70300)
- {
- if (fout->remoteVersion >= 70100)
- g_last_builtin_oid = findLastBuiltinOid_V71(fout,
- PQdb(GetConnection(fout)));
- else
- g_last_builtin_oid = findLastBuiltinOid_V70(fout);
- if (g_verbose)
- write_msg(NULL, "last built-in OID is %u\n", g_last_builtin_oid);
- }
-
/* Expand schema selection patterns into OID lists */
if (schema_include_patterns.head != NULL)
{
@@ -774,16 +754,11 @@ main(int argc, char **argv)
/*
* Sort the objects into a safe dump order (no forward references).
*
- * In 7.3 or later, we can rely on dependency information to help us
- * determine a safe order, so the initial sort is mostly for cosmetic
- * purposes: we sort by name to ensure that logically identical schemas
- * will dump identically. Before 7.3 we don't have dependencies and we
- * use OID ordering as an (unreliable) guide to creation order.
+ * We rely on dependency information to help us determine a safe order, so
+ * the initial sort is mostly for cosmetic purposes: we sort by name to
+ * ensure that logically identical schemas will dump identically.
*/
- if (fout->remoteVersion >= 70300)
- sortDumpableObjectsByTypeName(dobjs, numObjs);
- else
- sortDumpableObjectsByTypeOid(dobjs, numObjs);
+ sortDumpableObjectsByTypeName(dobjs, numObjs);
/* If we do a parallel dump, we want the largest tables to go first */
if (archiveFormat == archDirectory && numWorkers > 1)
@@ -1000,12 +975,12 @@ setup_connection(Archive *AH, const char *dumpencoding,
ExecuteSqlStatement(AH, "SET INTERVALSTYLE = POSTGRES");
/*
- * If supported, set extra_float_digits so that we can dump float data
- * exactly (given correctly implemented float I/O code, anyway)
+ * Set extra_float_digits so that we can dump float data exactly (given
+ * correctly implemented float I/O code, anyway)
*/
if (AH->remoteVersion >= 90000)
ExecuteSqlStatement(AH, "SET extra_float_digits TO 3");
- else if (AH->remoteVersion >= 70400)
+ else
ExecuteSqlStatement(AH, "SET extra_float_digits TO 2");
/*
@@ -1018,8 +993,7 @@ setup_connection(Archive *AH, const char *dumpencoding,
/*
* Disable timeouts if supported.
*/
- if (AH->remoteVersion >= 70300)
- ExecuteSqlStatement(AH, "SET statement_timeout = 0");
+ ExecuteSqlStatement(AH, "SET statement_timeout = 0");
if (AH->remoteVersion >= 90300)
ExecuteSqlStatement(AH, "SET lock_timeout = 0");
if (AH->remoteVersion >= 90600)
@@ -1065,16 +1039,12 @@ setup_connection(Archive *AH, const char *dumpencoding,
"SET TRANSACTION ISOLATION LEVEL "
"REPEATABLE READ, READ ONLY");
}
- else if (AH->remoteVersion >= 70400)
+ else
{
- /* note: comma was not accepted in SET TRANSACTION before 8.0 */
ExecuteSqlStatement(AH,
"SET TRANSACTION ISOLATION LEVEL "
- "SERIALIZABLE READ ONLY");
+ "SERIALIZABLE, READ ONLY");
}
- else
- ExecuteSqlStatement(AH,
- "SET TRANSACTION ISOLATION LEVEL SERIALIZABLE");
/*
* If user specified a snapshot to use, select that. In a parallel dump
@@ -1190,9 +1160,6 @@ expand_schema_name_patterns(Archive *fout,
if (patterns->head == NULL)
return; /* nothing to do */
- if (fout->remoteVersion < 70300)
- exit_horribly(NULL, "server version must be at least 7.3 to use schema selection switches\n");
-
query = createPQExpBuffer();
/*
@@ -1661,15 +1628,12 @@ dumpTableData_copy(Archive *fout, void *dcontext)
selectSourceSchema(fout, tbinfo->dobj.namespace->dobj.name);
/*
- * If possible, specify the column list explicitly so that we have no
- * possibility of retrieving data in the wrong column order. (The default
- * column ordering of COPY will not be what we want in certain corner
- * cases involving ADD COLUMN and inheritance.)
+ * Specify the column list explicitly so that we have no possibility of
+ * retrieving data in the wrong column order. (The default column
+ * ordering of COPY will not be what we want in certain corner cases
+ * involving ADD COLUMN and inheritance.)
*/
- if (fout->remoteVersion >= 70300)
- column_list = fmtCopyColumnList(tbinfo, clistBuf);
- else
- column_list = ""; /* can't select columns in COPY */
+ column_list = fmtCopyColumnList(tbinfo, clistBuf);
if (oids && hasoids)
{
@@ -1829,22 +1793,11 @@ dumpTableData_insert(Archive *fout, void *dcontext)
*/
selectSourceSchema(fout, tbinfo->dobj.namespace->dobj.name);
- if (fout->remoteVersion >= 70100)
- {
- appendPQExpBuffer(q, "DECLARE _pg_dump_cursor CURSOR FOR "
- "SELECT * FROM ONLY %s",
- fmtQualifiedId(fout->remoteVersion,
- tbinfo->dobj.namespace->dobj.name,
- classname));
- }
- else
- {
- appendPQExpBuffer(q, "DECLARE _pg_dump_cursor CURSOR FOR "
- "SELECT * FROM %s",
- fmtQualifiedId(fout->remoteVersion,
- tbinfo->dobj.namespace->dobj.name,
- classname));
- }
+ appendPQExpBuffer(q, "DECLARE _pg_dump_cursor CURSOR FOR "
+ "SELECT * FROM ONLY %s",
+ fmtQualifiedId(fout->remoteVersion,
+ tbinfo->dobj.namespace->dobj.name,
+ classname));
if (tdinfo->filtercond)
appendPQExpBuffer(q, " %s", tdinfo->filtercond);
@@ -2480,7 +2433,7 @@ dumpDatabase(Archive *fout)
username_subquery);
appendStringLiteralAH(dbQry, datname, fout);
}
- else if (fout->remoteVersion >= 80000)
+ else
{
appendPQExpBuffer(dbQry, "SELECT tableoid, oid, "
"(%s datdba) AS dba, "
@@ -2492,34 +2445,6 @@ dumpDatabase(Archive *fout)
username_subquery);
appendStringLiteralAH(dbQry, datname, fout);
}
- else if (fout->remoteVersion >= 70100)
- {
- appendPQExpBuffer(dbQry, "SELECT tableoid, oid, "
- "(%s datdba) AS dba, "
- "pg_encoding_to_char(encoding) AS encoding, "
- "NULL AS datcollate, NULL AS datctype, "
- "0 AS datfrozenxid, 0 AS datminmxid, "
- "NULL AS tablespace "
- "FROM pg_database "
- "WHERE datname = ",
- username_subquery);
- appendStringLiteralAH(dbQry, datname, fout);
- }
- else
- {
- appendPQExpBuffer(dbQry, "SELECT "
- "(SELECT oid FROM pg_class WHERE relname = 'pg_database') AS tableoid, "
- "oid, "
- "(%s datdba) AS dba, "
- "pg_encoding_to_char(encoding) AS encoding, "
- "NULL AS datcollate, NULL AS datctype, "
- "0 AS datfrozenxid, 0 AS datminmxid, "
- "NULL AS tablespace "
- "FROM pg_database "
- "WHERE datname = ",
- username_subquery);
- appendStringLiteralAH(dbQry, datname, fout);
- }
res = ExecuteSqlQueryForSingleRow(fout, dbQry->data);
@@ -2879,19 +2804,13 @@ getBlobs(Archive *fout)
"NULL AS initrlomacl "
" FROM pg_largeobject_metadata",
username_subquery);
- else if (fout->remoteVersion >= 70100)
+ else
appendPQExpBufferStr(blobQry,
"SELECT DISTINCT loid AS oid, "
"NULL::name AS rolname, NULL::oid AS lomacl, "
"NULL::oid AS rlomacl, NULL::oid AS initlomacl, "
"NULL::oid AS initrlomacl "
" FROM pg_largeobject");
- else
- appendPQExpBufferStr(blobQry,
- "SELECT oid, NULL AS rolname, NULL AS lomacl, "
- "NULL AS rlomacl, NULL AS initlomacl, "
- "NULL AS initrlomacl "
- " FROM pg_class WHERE relkind = 'l'");
res = ExecuteSqlQuery(fout, blobQry->data, PGRES_TUPLES_OK);
@@ -3031,10 +2950,8 @@ dumpBlobs(Archive *fout, void *arg)
*/
if (fout->remoteVersion >= 90000)
blobQry = "DECLARE bloboid CURSOR FOR SELECT oid FROM pg_largeobject_metadata";
- else if (fout->remoteVersion >= 70100)
- blobQry = "DECLARE bloboid CURSOR FOR SELECT DISTINCT loid FROM pg_largeobject";
else
- blobQry = "DECLARE bloboid CURSOR FOR SELECT oid FROM pg_class WHERE relkind = 'l'";
+ blobQry = "DECLARE bloboid CURSOR FOR SELECT DISTINCT loid FROM pg_largeobject";
ExecuteSqlStatement(fout, blobQry);
@@ -3536,45 +3453,6 @@ getNamespaces(Archive *fout, int *numNamespaces)
int i_initnspacl;
int i_initrnspacl;
- /*
- * Before 7.3, there are no real namespaces; create two dummy entries, one
- * for user stuff and one for system stuff.
- */
- if (fout->remoteVersion < 70300)
- {
- nsinfo = (NamespaceInfo *) pg_malloc(2 * sizeof(NamespaceInfo));
-
- nsinfo[0].dobj.objType = DO_NAMESPACE;
- nsinfo[0].dobj.catId.tableoid = 0;
- nsinfo[0].dobj.catId.oid = 0;
- AssignDumpId(&nsinfo[0].dobj);
- nsinfo[0].dobj.name = pg_strdup("public");
- nsinfo[0].rolname = pg_strdup("");
- nsinfo[0].nspacl = pg_strdup("");
- nsinfo[0].rnspacl = pg_strdup("");
- nsinfo[0].initnspacl = pg_strdup("");
- nsinfo[0].initrnspacl = pg_strdup("");
-
- selectDumpableNamespace(&nsinfo[0], fout);
-
- nsinfo[1].dobj.objType = DO_NAMESPACE;
- nsinfo[1].dobj.catId.tableoid = 0;
- nsinfo[1].dobj.catId.oid = 1;
- AssignDumpId(&nsinfo[1].dobj);
- nsinfo[1].dobj.name = pg_strdup("pg_catalog");
- nsinfo[1].rolname = pg_strdup("");
- nsinfo[1].nspacl = pg_strdup("");
- nsinfo[1].rnspacl = pg_strdup("");
- nsinfo[1].initnspacl = pg_strdup("");
- nsinfo[1].initrnspacl = pg_strdup("");
-
- selectDumpableNamespace(&nsinfo[1], fout);
-
- *numNamespaces = 2;
-
- return nsinfo;
- }
-
query = createPQExpBuffer();
/* Make sure we are in proper schema */
@@ -3684,37 +3562,16 @@ getNamespaces(Archive *fout, int *numNamespaces)
/*
* findNamespace:
- * given a namespace OID and an object OID, look up the info read by
- * getNamespaces
- *
- * NB: for pre-7.3 source database, we use object OID to guess whether it's
- * a system object or not. In 7.3 and later there is no guessing, and we
- * don't use objoid at all.
+ * given a namespace OID, look up the info read by getNamespaces
*/
static NamespaceInfo *
-findNamespace(Archive *fout, Oid nsoid, Oid objoid)
+findNamespace(Archive *fout, Oid nsoid)
{
NamespaceInfo *nsinfo;
- if (fout->remoteVersion >= 70300)
- {
- nsinfo = findNamespaceByOid(nsoid);
- }
- else
- {
- /* This code depends on the dummy objects set up by getNamespaces. */
- Oid i;
-
- if (objoid > g_last_builtin_oid)
- i = 0; /* user object */
- else
- i = 1; /* system object */
- nsinfo = findNamespaceByOid(i);
- }
-
+ nsinfo = findNamespaceByOid(nsoid);
if (nsinfo == NULL)
exit_horribly(NULL, "schema with OID %u does not exist\n", nsoid);
-
return nsinfo;
}
@@ -3932,7 +3789,7 @@ getTypes(Archive *fout, int *numTypes)
"FROM pg_type",
username_subquery);
}
- else if (fout->remoteVersion >= 70300)
+ else
{
appendPQExpBuffer(query, "SELECT tableoid, oid, typname, "
"typnamespace, NULL AS typacl, NULL as rtypacl, "
@@ -3947,38 +3804,6 @@ getTypes(Archive *fout, int *numTypes)
"FROM pg_type",
username_subquery);
}
- else if (fout->remoteVersion >= 70100)
- {
- appendPQExpBuffer(query, "SELECT tableoid, oid, typname, "
- "0::oid AS typnamespace, NULL AS typacl, NULL as rtypacl, "
- "NULL AS inittypacl, NULL AS initrtypacl, "
- "(%s typowner) AS rolname, "
- "typinput::oid AS typinput, "
- "typoutput::oid AS typoutput, typelem, typrelid, "
- "CASE WHEN typrelid = 0 THEN ' '::\"char\" "
- "ELSE (SELECT relkind FROM pg_class WHERE oid = typrelid) END AS typrelkind, "
- "typtype, typisdefined, "
- "typname[0] = '_' AND typelem != 0 AS isarray "
- "FROM pg_type",
- username_subquery);
- }
- else
- {
- appendPQExpBuffer(query, "SELECT "
- "(SELECT oid FROM pg_class WHERE relname = 'pg_type') AS tableoid, "
- "oid, typname, "
- "0::oid AS typnamespace, NULL AS typacl, NULL as rtypacl, "
- "NULL AS inittypacl, NULL AS initrtypacl, "
- "(%s typowner) AS rolname, "
- "typinput::oid AS typinput, "
- "typoutput::oid AS typoutput, typelem, typrelid, "
- "CASE WHEN typrelid = 0 THEN ' '::\"char\" "
- "ELSE (SELECT relkind FROM pg_class WHERE oid = typrelid) END AS typrelkind, "
- "typtype, typisdefined, "
- "typname[0] = '_' AND typelem != 0 AS isarray "
- "FROM pg_type",
- username_subquery);
- }
res = ExecuteSqlQuery(fout, query->data, PGRES_TUPLES_OK);
@@ -4013,8 +3838,7 @@ getTypes(Archive *fout, int *numTypes)
tyinfo[i].dobj.name = pg_strdup(PQgetvalue(res, i, i_typname));
tyinfo[i].dobj.namespace =
findNamespace(fout,
- atooid(PQgetvalue(res, i, i_typnamespace)),
- tyinfo[i].dobj.catId.oid);
+ atooid(PQgetvalue(res, i, i_typnamespace)));
tyinfo[i].rolname = pg_strdup(PQgetvalue(res, i, i_rolname));
tyinfo[i].typacl = pg_strdup(PQgetvalue(res, i, i_typacl));
tyinfo[i].rtypacl = pg_strdup(PQgetvalue(res, i, i_rtypacl));
@@ -4083,48 +3907,6 @@ getTypes(Archive *fout, int *numTypes)
* this is taken care of while sorting dependencies.
*/
stinfo->dobj.dump = DUMP_COMPONENT_NONE;
-
- /*
- * However, if dumping from pre-7.3, there will be no dependency
- * info so we have to fake it here. We only need to worry about
- * typinput and typoutput since the other functions only exist
- * post-7.3.
- */
- if (fout->remoteVersion < 70300)
- {
- Oid typinput;
- Oid typoutput;
- FuncInfo *funcInfo;
-
- typinput = atooid(PQgetvalue(res, i, i_typinput));
- typoutput = atooid(PQgetvalue(res, i, i_typoutput));
-
- funcInfo = findFuncByOid(typinput);
- if (funcInfo && funcInfo->dobj.dump & DUMP_COMPONENT_DEFINITION)
- {
- /* base type depends on function */
- addObjectDependency(&tyinfo[i].dobj,
- funcInfo->dobj.dumpId);
- /* function depends on shell type */
- addObjectDependency(&funcInfo->dobj,
- stinfo->dobj.dumpId);
- /* mark shell type as to be dumped */
- stinfo->dobj.dump = DUMP_COMPONENT_ALL;
- }
-
- funcInfo = findFuncByOid(typoutput);
- if (funcInfo && funcInfo->dobj.dump & DUMP_COMPONENT_DEFINITION)
- {
- /* base type depends on function */
- addObjectDependency(&tyinfo[i].dobj,
- funcInfo->dobj.dumpId);
- /* function depends on shell type */
- addObjectDependency(&funcInfo->dobj,
- stinfo->dobj.dumpId);
- /* mark shell type as to be dumped */
- stinfo->dobj.dump = DUMP_COMPONENT_ALL;
- }
- }
}
if (strlen(tyinfo[i].rolname) == 0)
@@ -4172,38 +3954,13 @@ getOperators(Archive *fout, int *numOprs)
/* Make sure we are in proper schema */
selectSourceSchema(fout, "pg_catalog");
- if (fout->remoteVersion >= 70300)
- {
- appendPQExpBuffer(query, "SELECT tableoid, oid, oprname, "
- "oprnamespace, "
- "(%s oprowner) AS rolname, "
- "oprkind, "
- "oprcode::oid AS oprcode "
- "FROM pg_operator",
- username_subquery);
- }
- else if (fout->remoteVersion >= 70100)
- {
- appendPQExpBuffer(query, "SELECT tableoid, oid, oprname, "
- "0::oid AS oprnamespace, "
- "(%s oprowner) AS rolname, "
- "oprkind, "
- "oprcode::oid AS oprcode "
- "FROM pg_operator",
- username_subquery);
- }
- else
- {
- appendPQExpBuffer(query, "SELECT "
- "(SELECT oid FROM pg_class WHERE relname = 'pg_operator') AS tableoid, "
- "oid, oprname, "
- "0::oid AS oprnamespace, "
- "(%s oprowner) AS rolname, "
- "oprkind, "
- "oprcode::oid AS oprcode "
- "FROM pg_operator",
- username_subquery);
- }
+ appendPQExpBuffer(query, "SELECT tableoid, oid, oprname, "
+ "oprnamespace, "
+ "(%s oprowner) AS rolname, "
+ "oprkind, "
+ "oprcode::oid AS oprcode "
+ "FROM pg_operator",
+ username_subquery);
res = ExecuteSqlQuery(fout, query->data, PGRES_TUPLES_OK);
@@ -4229,8 +3986,7 @@ getOperators(Archive *fout, int *numOprs)
oprinfo[i].dobj.name = pg_strdup(PQgetvalue(res, i, i_oprname));
oprinfo[i].dobj.namespace =
findNamespace(fout,
- atooid(PQgetvalue(res, i, i_oprnamespace)),
- oprinfo[i].dobj.catId.oid);
+ atooid(PQgetvalue(res, i, i_oprnamespace)));
oprinfo[i].rolname = pg_strdup(PQgetvalue(res, i, i_rolname));
oprinfo[i].oprkind = (PQgetvalue(res, i, i_oprkind))[0];
oprinfo[i].oprcode = atooid(PQgetvalue(res, i, i_oprcode));
@@ -4319,8 +4075,7 @@ getCollations(Archive *fout, int *numCollations)
collinfo[i].dobj.name = pg_strdup(PQgetvalue(res, i, i_collname));
collinfo[i].dobj.namespace =
findNamespace(fout,
- atooid(PQgetvalue(res, i, i_collnamespace)),
- collinfo[i].dobj.catId.oid);
+ atooid(PQgetvalue(res, i, i_collnamespace)));
collinfo[i].rolname = pg_strdup(PQgetvalue(res, i, i_rolname));
/* Decide whether we want to dump it */
@@ -4358,13 +4113,6 @@ getConversions(Archive *fout, int *numConversions)
int i_connamespace;
int i_rolname;
- /* Conversions didn't exist pre-7.3 */
- if (fout->remoteVersion < 70300)
- {
- *numConversions = 0;
- return NULL;
- }
-
query = createPQExpBuffer();
/*
@@ -4403,8 +4151,7 @@ getConversions(Archive *fout, int *numConversions)
convinfo[i].dobj.name = pg_strdup(PQgetvalue(res, i, i_conname));
convinfo[i].dobj.namespace =
findNamespace(fout,
- atooid(PQgetvalue(res, i, i_connamespace)),
- convinfo[i].dobj.catId.oid);
+ atooid(PQgetvalue(res, i, i_connamespace)));
convinfo[i].rolname = pg_strdup(PQgetvalue(res, i, i_rolname));
/* Decide whether we want to dump it */
@@ -4527,30 +4274,11 @@ getOpclasses(Archive *fout, int *numOpclasses)
/* Make sure we are in proper schema */
selectSourceSchema(fout, "pg_catalog");
- if (fout->remoteVersion >= 70300)
- {
- appendPQExpBuffer(query, "SELECT tableoid, oid, opcname, "
- "opcnamespace, "
- "(%s opcowner) AS rolname "
- "FROM pg_opclass",
- username_subquery);
- }
- else if (fout->remoteVersion >= 70100)
- {
- appendPQExpBufferStr(query, "SELECT tableoid, oid, opcname, "
- "0::oid AS opcnamespace, "
- "''::name AS rolname "
- "FROM pg_opclass");
- }
- else
- {
- appendPQExpBufferStr(query, "SELECT "
- "(SELECT oid FROM pg_class WHERE relname = 'pg_opclass') AS tableoid, "
- "oid, opcname, "
- "0::oid AS opcnamespace, "
- "''::name AS rolname "
- "FROM pg_opclass");
- }
+ appendPQExpBuffer(query, "SELECT tableoid, oid, opcname, "
+ "opcnamespace, "
+ "(%s opcowner) AS rolname "
+ "FROM pg_opclass",
+ username_subquery);
res = ExecuteSqlQuery(fout, query->data, PGRES_TUPLES_OK);
@@ -4574,8 +4302,7 @@ getOpclasses(Archive *fout, int *numOpclasses)
opcinfo[i].dobj.name = pg_strdup(PQgetvalue(res, i, i_opcname));
opcinfo[i].dobj.namespace =
findNamespace(fout,
- atooid(PQgetvalue(res, i, i_opcnamespace)),
- opcinfo[i].dobj.catId.oid);
+ atooid(PQgetvalue(res, i, i_opcnamespace)));
opcinfo[i].rolname = pg_strdup(PQgetvalue(res, i, i_rolname));
/* Decide whether we want to dump it */
@@ -4584,12 +4311,9 @@ getOpclasses(Archive *fout, int *numOpclasses)
/* Op Classes do not currently have ACLs. */
opcinfo[i].dobj.dump &= ~DUMP_COMPONENT_ACL;
- if (fout->remoteVersion >= 70300)
- {
- if (strlen(opcinfo[i].rolname) == 0)
- write_msg(NULL, "WARNING: owner of operator class \"%s\" appears to be invalid\n",
- opcinfo[i].dobj.name);
- }
+ if (strlen(opcinfo[i].rolname) == 0)
+ write_msg(NULL, "WARNING: owner of operator class \"%s\" appears to be invalid\n",
+ opcinfo[i].dobj.name);
}
PQclear(res);
@@ -4665,8 +4389,7 @@ getOpfamilies(Archive *fout, int *numOpfamilies)
opfinfo[i].dobj.name = pg_strdup(PQgetvalue(res, i, i_opfname));
opfinfo[i].dobj.namespace =
findNamespace(fout,
- atooid(PQgetvalue(res, i, i_opfnamespace)),
- opfinfo[i].dobj.catId.oid);
+ atooid(PQgetvalue(res, i, i_opfnamespace)));
opfinfo[i].rolname = pg_strdup(PQgetvalue(res, i, i_rolname));
/* Decide whether we want to dump it */
@@ -4675,12 +4398,9 @@ getOpfamilies(Archive *fout, int *numOpfamilies)
/* Extensions do not currently have ACLs. */
opfinfo[i].dobj.dump &= ~DUMP_COMPONENT_ACL;
- if (fout->remoteVersion >= 70300)
- {
- if (strlen(opfinfo[i].rolname) == 0)
- write_msg(NULL, "WARNING: owner of operator family \"%s\" appears to be invalid\n",
- opfinfo[i].dobj.name);
- }
+ if (strlen(opfinfo[i].rolname) == 0)
+ write_msg(NULL, "WARNING: owner of operator family \"%s\" appears to be invalid\n",
+ opfinfo[i].dobj.name);
}
PQclear(res);
@@ -4798,7 +4518,7 @@ getAggregates(Archive *fout, int *numAggs)
"deptype = 'e')");
appendPQExpBufferChar(query, ')');
}
- else if (fout->remoteVersion >= 70300)
+ else
{
appendPQExpBuffer(query, "SELECT tableoid, oid, proname AS aggname, "
"pronamespace AS aggnamespace, "
@@ -4814,38 +4534,6 @@ getAggregates(Archive *fout, int *numAggs)
"(SELECT oid FROM pg_namespace WHERE nspname = 'pg_catalog')",
username_subquery);
}
- else if (fout->remoteVersion >= 70100)
- {
- appendPQExpBuffer(query, "SELECT tableoid, oid, aggname, "
- "0::oid AS aggnamespace, "
- "CASE WHEN aggbasetype = 0 THEN 0 ELSE 1 END AS pronargs, "
- "aggbasetype AS proargtypes, "
- "(%s aggowner) AS rolname, "
- "NULL AS aggacl, "
- "NULL AS raggacl, "
- "NULL AS initaggacl, NULL AS initraggacl "
- "FROM pg_aggregate "
- "where oid > '%u'::oid",
- username_subquery,
- g_last_builtin_oid);
- }
- else
- {
- appendPQExpBuffer(query, "SELECT "
- "(SELECT oid FROM pg_class WHERE relname = 'pg_aggregate') AS tableoid, "
- "oid, aggname, "
- "0::oid AS aggnamespace, "
- "CASE WHEN aggbasetype = 0 THEN 0 ELSE 1 END AS pronargs, "
- "aggbasetype AS proargtypes, "
- "(%s aggowner) AS rolname, "
- "NULL AS aggacl, "
- "NULL AS raggacl, "
- "NULL AS initaggacl, NULL AS initraggacl "
- "FROM pg_aggregate "
- "where oid > '%u'::oid",
- username_subquery,
- g_last_builtin_oid);
- }
res = ExecuteSqlQuery(fout, query->data, PGRES_TUPLES_OK);
@@ -4875,8 +4563,7 @@ getAggregates(Archive *fout, int *numAggs)
agginfo[i].aggfn.dobj.name = pg_strdup(PQgetvalue(res, i, i_aggname));
agginfo[i].aggfn.dobj.namespace =
findNamespace(fout,
- atooid(PQgetvalue(res, i, i_aggnamespace)),
- agginfo[i].aggfn.dobj.catId.oid);
+ atooid(PQgetvalue(res, i, i_aggnamespace)));
agginfo[i].aggfn.rolname = pg_strdup(PQgetvalue(res, i, i_rolname));
if (strlen(agginfo[i].aggfn.rolname) == 0)
write_msg(NULL, "WARNING: owner of aggregate function \"%s\" appears to be invalid\n",
@@ -4893,13 +4580,9 @@ getAggregates(Archive *fout, int *numAggs)
else
{
agginfo[i].aggfn.argtypes = (Oid *) pg_malloc(agginfo[i].aggfn.nargs * sizeof(Oid));
- if (fout->remoteVersion >= 70300)
- parseOidArray(PQgetvalue(res, i, i_proargtypes),
- agginfo[i].aggfn.argtypes,
- agginfo[i].aggfn.nargs);
- else
- /* it's just aggbasetype */
- agginfo[i].aggfn.argtypes[0] = atooid(PQgetvalue(res, i, i_proargtypes));
+ parseOidArray(PQgetvalue(res, i, i_proargtypes),
+ agginfo[i].aggfn.argtypes,
+ agginfo[i].aggfn.nargs);
}
/* Decide whether we want to dump it */
@@ -5025,7 +4708,7 @@ getFuncs(Archive *fout, int *numFuncs)
destroyPQExpBuffer(initacl_subquery);
destroyPQExpBuffer(initracl_subquery);
}
- else if (fout->remoteVersion >= 70300)
+ else
{
appendPQExpBuffer(query,
"SELECT tableoid, oid, proname, prolang, "
@@ -5056,39 +4739,6 @@ getFuncs(Archive *fout, int *numFuncs)
"deptype = 'e')");
appendPQExpBufferChar(query, ')');
}
- else if (fout->remoteVersion >= 70100)
- {
- appendPQExpBuffer(query,
- "SELECT tableoid, oid, proname, prolang, "
- "pronargs, proargtypes, prorettype, "
- "NULL AS proacl, "
- "NULL AS rproacl, "
- "NULL as initproacl, NULL AS initrproacl, "
- "0::oid AS pronamespace, "
- "(%s proowner) AS rolname "
- "FROM pg_proc "
- "WHERE pg_proc.oid > '%u'::oid",
- username_subquery,
- g_last_builtin_oid);
- }
- else
- {
- appendPQExpBuffer(query,
- "SELECT "
- "(SELECT oid FROM pg_class "
- " WHERE relname = 'pg_proc') AS tableoid, "
- "oid, proname, prolang, "
- "pronargs, proargtypes, prorettype, "
- "NULL AS proacl, "
- "NULL AS rproacl, "
- "NULL as initproacl, NULL AS initrproacl, "
- "0::oid AS pronamespace, "
- "(%s proowner) AS rolname "
- "FROM pg_proc "
- "where pg_proc.oid > '%u'::oid",
- username_subquery,
- g_last_builtin_oid);
- }
res = ExecuteSqlQuery(fout, query->data, PGRES_TUPLES_OK);
@@ -5121,8 +4771,7 @@ getFuncs(Archive *fout, int *numFuncs)
finfo[i].dobj.name = pg_strdup(PQgetvalue(res, i, i_proname));
finfo[i].dobj.namespace =
findNamespace(fout,
- atooid(PQgetvalue(res, i, i_pronamespace)),
- finfo[i].dobj.catId.oid);
+ atooid(PQgetvalue(res, i, i_pronamespace)));
finfo[i].rolname = pg_strdup(PQgetvalue(res, i, i_rolname));
finfo[i].lang = atooid(PQgetvalue(res, i, i_prolang));
finfo[i].prorettype = atooid(PQgetvalue(res, i, i_prorettype));
@@ -5645,7 +5294,7 @@ getTables(Archive *fout, int *numTables)
RELKIND_RELATION, RELKIND_SEQUENCE,
RELKIND_VIEW, RELKIND_COMPOSITE_TYPE);
}
- else if (fout->remoteVersion >= 80000)
+ else
{
/*
* Left join to pick up dependency info linking sequences to their
@@ -5686,153 +5335,6 @@ getTables(Archive *fout, int *numTables)
RELKIND_RELATION, RELKIND_SEQUENCE,
RELKIND_VIEW, RELKIND_COMPOSITE_TYPE);
}
- else if (fout->remoteVersion >= 70300)
- {
- /*
- * Left join to pick up dependency info linking sequences to their
- * owning column, if any
- */
- appendPQExpBuffer(query,
- "SELECT c.tableoid, c.oid, relname, "
- "relacl, NULL as rrelacl, "
- "NULL AS initrelacl, NULL AS initrrelacl, "
- "relkind, relnamespace, "
- "(%s relowner) AS rolname, "
- "relchecks, (reltriggers <> 0) AS relhastriggers, "
- "relhasindex, relhasrules, relhasoids, "
- "'f'::bool AS relrowsecurity, "
- "'f'::bool AS relforcerowsecurity, "
- "0 AS relfrozenxid, 0 AS relminmxid,"
- "0 AS toid, "
- "0 AS tfrozenxid, 0 AS tminmxid,"
- "'p' AS relpersistence, 't' as relispopulated, "
- "'d' AS relreplident, relpages, "
- "NULL AS reloftype, "
- "d.refobjid AS owning_tab, "
- "d.refobjsubid AS owning_col, "
- "NULL AS reltablespace, "
- "NULL AS reloptions, "
- "NULL AS toast_reloptions, "
- "NULL AS changed_acl "
- "FROM pg_class c "
- "LEFT JOIN pg_depend d ON "
- "(c.relkind = '%c' AND "
- "d.classid = c.tableoid AND d.objid = c.oid AND "
- "d.objsubid = 0 AND "
- "d.refclassid = c.tableoid AND d.deptype = 'i') "
- "WHERE relkind IN ('%c', '%c', '%c', '%c') "
- "ORDER BY c.oid",
- username_subquery,
- RELKIND_SEQUENCE,
- RELKIND_RELATION, RELKIND_SEQUENCE,
- RELKIND_VIEW, RELKIND_COMPOSITE_TYPE);
- }
- else if (fout->remoteVersion >= 70200)
- {
- appendPQExpBuffer(query,
- "SELECT tableoid, oid, relname, relacl, "
- "NULL as rrelacl, "
- "NULL AS initrelacl, NULL AS initrrelacl, "
- "relkind, "
- "0::oid AS relnamespace, "
- "(%s relowner) AS rolname, "
- "relchecks, (reltriggers <> 0) AS relhastriggers, "
- "relhasindex, relhasrules, relhasoids, "
- "'f'::bool AS relrowsecurity, "
- "'f'::bool AS relforcerowsecurity, "
- "0 AS relfrozenxid, 0 AS relminmxid,"
- "0 AS toid, "
- "0 AS tfrozenxid, 0 AS tminmxid,"
- "'p' AS relpersistence, 't' as relispopulated, "
- "'d' AS relreplident, relpages, "
- "NULL AS reloftype, "
- "NULL::oid AS owning_tab, "
- "NULL::int4 AS owning_col, "
- "NULL AS reltablespace, "
- "NULL AS reloptions, "
- "NULL AS toast_reloptions, "
- "NULL AS changed_acl "
- "FROM pg_class "
- "WHERE relkind IN ('%c', '%c', '%c') "
- "ORDER BY oid",
- username_subquery,
- RELKIND_RELATION, RELKIND_SEQUENCE, RELKIND_VIEW);
- }
- else if (fout->remoteVersion >= 70100)
- {
- /* all tables have oids in 7.1 */
- appendPQExpBuffer(query,
- "SELECT tableoid, oid, relname, relacl, "
- "NULL as rrelacl, "
- "NULL AS initrelacl, NULL AS initrrelacl, "
- "relkind, "
- "0::oid AS relnamespace, "
- "(%s relowner) AS rolname, "
- "relchecks, (reltriggers <> 0) AS relhastriggers, "
- "relhasindex, relhasrules, "
- "'t'::bool AS relhasoids, "
- "'f'::bool AS relrowsecurity, "
- "'f'::bool AS relforcerowsecurity, "
- "0 AS relfrozenxid, 0 AS relminmxid,"
- "0 AS toid, "
- "0 AS tfrozenxid, 0 AS tminmxid,"
- "'p' AS relpersistence, 't' as relispopulated, "
- "'d' AS relreplident, relpages, "
- "NULL AS reloftype, "
- "NULL::oid AS owning_tab, "
- "NULL::int4 AS owning_col, "
- "NULL AS reltablespace, "
- "NULL AS reloptions, "
- "NULL AS toast_reloptions, "
- "NULL AS changed_acl "
- "FROM pg_class "
- "WHERE relkind IN ('%c', '%c', '%c') "
- "ORDER BY oid",
- username_subquery,
- RELKIND_RELATION, RELKIND_SEQUENCE, RELKIND_VIEW);
- }
- else
- {
- /*
- * Before 7.1, view relkind was not set to 'v', so we must check if we
- * have a view by looking for a rule in pg_rewrite.
- */
- appendPQExpBuffer(query,
- "SELECT "
- "(SELECT oid FROM pg_class WHERE relname = 'pg_class') AS tableoid, "
- "oid, relname, relacl, NULL as rrelacl, "
- "NULL AS initrelacl, NULL AS initrrelacl, "
- "CASE WHEN relhasrules and relkind = 'r' "
- " and EXISTS(SELECT rulename FROM pg_rewrite r WHERE "
- " r.ev_class = c.oid AND r.ev_type = '1') "
- "THEN '%c'::\"char\" "
- "ELSE relkind END AS relkind,"
- "0::oid AS relnamespace, "
- "(%s relowner) AS rolname, "
- "relchecks, (reltriggers <> 0) AS relhastriggers, "
- "relhasindex, relhasrules, "
- "'t'::bool AS relhasoids, "
- "'f'::bool AS relrowsecurity, "
- "'f'::bool AS relforcerowsecurity, "
- "0 AS relfrozenxid, 0 AS relminmxid,"
- "0 AS toid, "
- "0 AS tfrozenxid, 0 AS tminmxid,"
- "'p' AS relpersistence, 't' as relispopulated, "
- "'d' AS relreplident, 0 AS relpages, "
- "NULL AS reloftype, "
- "NULL::oid AS owning_tab, "
- "NULL::int4 AS owning_col, "
- "NULL AS reltablespace, "
- "NULL AS reloptions, "
- "NULL AS toast_reloptions, "
- "NULL AS changed_acl "
- "FROM pg_class c "
- "WHERE relkind IN ('%c', '%c') "
- "ORDER BY oid",
- RELKIND_VIEW,
- username_subquery,
- RELKIND_RELATION, RELKIND_SEQUENCE);
- }
res = ExecuteSqlQuery(fout, query->data, PGRES_TUPLES_OK);
@@ -5886,7 +5388,7 @@ getTables(Archive *fout, int *numTables)
i_reloftype = PQfnumber(res, "reloftype");
i_changed_acl = PQfnumber(res, "changed_acl");
- if (dopt->lockWaitTimeout && fout->remoteVersion >= 70300)
+ if (dopt->lockWaitTimeout)
{
/*
* Arrange to fail instead of waiting forever for a table lock.
@@ -5910,8 +5412,7 @@ getTables(Archive *fout, int *numTables)
tblinfo[i].dobj.name = pg_strdup(PQgetvalue(res, i, i_relname));
tblinfo[i].dobj.namespace =
findNamespace(fout,
- atooid(PQgetvalue(res, i, i_relnamespace)),
- tblinfo[i].dobj.catId.oid);
+ atooid(PQgetvalue(res, i, i_relnamespace)));
tblinfo[i].rolname = pg_strdup(PQgetvalue(res, i, i_rolname));
tblinfo[i].relacl = pg_strdup(PQgetvalue(res, i, i_relacl));
tblinfo[i].rrelacl = pg_strdup(PQgetvalue(res, i, i_rrelacl));
@@ -6017,7 +5518,7 @@ getTables(Archive *fout, int *numTables)
tblinfo[i].dobj.name);
}
- if (dopt->lockWaitTimeout && fout->remoteVersion >= 70300)
+ if (dopt->lockWaitTimeout)
{
ExecuteSqlStatement(fout, "SET statement_timeout = 0");
}
@@ -6290,7 +5791,7 @@ getIndexes(Archive *fout, TableInfo tblinfo[], int numTables)
"ORDER BY indexname",
tbinfo->dobj.catId.oid);
}
- else if (fout->remoteVersion >= 80000)
+ else
{
appendPQExpBuffer(query,
"SELECT t.tableoid, t.oid, "
@@ -6319,87 +5820,6 @@ getIndexes(Archive *fout, TableInfo tblinfo[], int numTables)
"ORDER BY indexname",
tbinfo->dobj.catId.oid);
}
- else if (fout->remoteVersion >= 70300)
- {
- appendPQExpBuffer(query,
- "SELECT t.tableoid, t.oid, "
- "t.relname AS indexname, "
- "pg_catalog.pg_get_indexdef(i.indexrelid) AS indexdef, "
- "t.relnatts AS indnkeys, "
- "i.indkey, i.indisclustered, "
- "false AS indisreplident, t.relpages, "
- "c.contype, c.conname, "
- "c.condeferrable, c.condeferred, "
- "c.tableoid AS contableoid, "
- "c.oid AS conoid, "
- "null AS condef, "
- "NULL AS tablespace, "
- "null AS indreloptions "
- "FROM pg_catalog.pg_index i "
- "JOIN pg_catalog.pg_class t ON (t.oid = i.indexrelid) "
- "LEFT JOIN pg_catalog.pg_depend d "
- "ON (d.classid = t.tableoid "
- "AND d.objid = t.oid "
- "AND d.deptype = 'i') "
- "LEFT JOIN pg_catalog.pg_constraint c "
- "ON (d.refclassid = c.tableoid "
- "AND d.refobjid = c.oid) "
- "WHERE i.indrelid = '%u'::pg_catalog.oid "
- "ORDER BY indexname",
- tbinfo->dobj.catId.oid);
- }
- else if (fout->remoteVersion >= 70100)
- {
- appendPQExpBuffer(query,
- "SELECT t.tableoid, t.oid, "
- "t.relname AS indexname, "
- "pg_get_indexdef(i.indexrelid) AS indexdef, "
- "t.relnatts AS indnkeys, "
- "i.indkey, false AS indisclustered, "
- "false AS indisreplident, t.relpages, "
- "CASE WHEN i.indisprimary THEN 'p'::char "
- "ELSE '0'::char END AS contype, "
- "t.relname AS conname, "
- "false AS condeferrable, "
- "false AS condeferred, "
- "0::oid AS contableoid, "
- "t.oid AS conoid, "
- "null AS condef, "
- "NULL AS tablespace, "
- "null AS indreloptions "
- "FROM pg_index i, pg_class t "
- "WHERE t.oid = i.indexrelid "
- "AND i.indrelid = '%u'::oid "
- "ORDER BY indexname",
- tbinfo->dobj.catId.oid);
- }
- else
- {
- appendPQExpBuffer(query,
- "SELECT "
- "(SELECT oid FROM pg_class WHERE relname = 'pg_class') AS tableoid, "
- "t.oid, "
- "t.relname AS indexname, "
- "pg_get_indexdef(i.indexrelid) AS indexdef, "
- "t.relnatts AS indnkeys, "
- "i.indkey, false AS indisclustered, "
- "false AS indisreplident, t.relpages, "
- "CASE WHEN i.indisprimary THEN 'p'::char "
- "ELSE '0'::char END AS contype, "
- "t.relname AS conname, "
- "false AS condeferrable, "
- "false AS condeferred, "
- "0::oid AS contableoid, "
- "t.oid AS conoid, "
- "null AS condef, "
- "NULL AS tablespace, "
- "null AS indreloptions "
- "FROM pg_index i, pg_class t "
- "WHERE t.oid = i.indexrelid "
- "AND i.indrelid = '%u'::oid "
- "ORDER BY indexname",
- tbinfo->dobj.catId.oid);
- }
res = ExecuteSqlQuery(fout, query->data, PGRES_TUPLES_OK);
@@ -6442,19 +5862,9 @@ getIndexes(Archive *fout, TableInfo tblinfo[], int numTables)
indxinfo[j].indnkeys = atoi(PQgetvalue(res, j, i_indnkeys));
indxinfo[j].tablespace = pg_strdup(PQgetvalue(res, j, i_tablespace));
indxinfo[j].indreloptions = pg_strdup(PQgetvalue(res, j, i_indreloptions));
-
- /*
- * In pre-7.4 releases, indkeys may contain more entries than
- * indnkeys says (since indnkeys will be 1 for a functional
- * index). We don't actually care about this case since we don't
- * examine indkeys except for indexes associated with PRIMARY and
- * UNIQUE constraints, which are never functional indexes. But we
- * have to allocate enough space to keep parseOidArray from
- * complaining.
- */
- indxinfo[j].indkeys = (Oid *) pg_malloc(INDEX_MAX_KEYS * sizeof(Oid));
+ indxinfo[j].indkeys = (Oid *) pg_malloc(indxinfo[j].indnkeys * sizeof(Oid));
parseOidArray(PQgetvalue(res, j, i_indkey),
- indxinfo[j].indkeys, INDEX_MAX_KEYS);
+ indxinfo[j].indkeys, indxinfo[j].indnkeys);
indxinfo[j].indisclustered = (PQgetvalue(res, j, i_indisclustered)[0] == 't');
indxinfo[j].indisreplident = (PQgetvalue(res, j, i_indisreplident)[0] == 't');
indxinfo[j].relpages = atoi(PQgetvalue(res, j, i_relpages));
@@ -6465,9 +5875,6 @@ getIndexes(Archive *fout, TableInfo tblinfo[], int numTables)
/*
* If we found a constraint matching the index, create an
* entry for it.
- *
- * In a pre-7.3 database, we take this path iff the index was
- * marked indisprimary.
*/
constrinfo[j].dobj.objType = DO_CONSTRAINT;
constrinfo[j].dobj.catId.tableoid = atooid(PQgetvalue(res, j, i_contableoid));
@@ -6490,10 +5897,6 @@ getIndexes(Archive *fout, TableInfo tblinfo[], int numTables)
constrinfo[j].separate = true;
indxinfo[j].indexconstraint = constrinfo[j].dobj.dumpId;
-
- /* If pre-7.3 DB, better make sure table comes first */
- addObjectDependency(&constrinfo[j].dobj,
- tbinfo->dobj.dumpId);
}
else
{
@@ -6532,10 +5935,6 @@ getConstraints(Archive *fout, TableInfo tblinfo[], int numTables)
i_condef;
int ntups;
- /* pg_constraint was created in 7.3, so nothing to do if older */
- if (fout->remoteVersion < 70300)
- return;
-
query = createPQExpBuffer();
for (i = 0; i < numTables; i++)
@@ -6621,10 +6020,6 @@ getDomainConstraints(Archive *fout, TypeInfo *tyinfo)
i_consrc;
int ntups;
- /* pg_constraint was created in 7.3, so nothing to do if older */
- if (fout->remoteVersion < 70300)
- return;
-
/*
* select appropriate schema to ensure names in constraint are properly
* qualified
@@ -6642,17 +6037,9 @@ getDomainConstraints(Archive *fout, TypeInfo *tyinfo)
"ORDER BY conname",
tyinfo->dobj.catId.oid);
- else if (fout->remoteVersion >= 70400)
- appendPQExpBuffer(query, "SELECT tableoid, oid, conname, "
- "pg_catalog.pg_get_constraintdef(oid) AS consrc, "
- "true as convalidated "
- "FROM pg_catalog.pg_constraint "
- "WHERE contypid = '%u'::pg_catalog.oid "
- "ORDER BY conname",
- tyinfo->dobj.catId.oid);
else
appendPQExpBuffer(query, "SELECT tableoid, oid, conname, "
- "'CHECK (' || consrc || ')' AS consrc, "
+ "pg_catalog.pg_get_constraintdef(oid) AS consrc, "
"true as convalidated "
"FROM pg_catalog.pg_constraint "
"WHERE contypid = '%u'::pg_catalog.oid "
@@ -6745,20 +6132,10 @@ getRules(Archive *fout, int *numRules)
"FROM pg_rewrite "
"ORDER BY oid");
}
- else if (fout->remoteVersion >= 70100)
- {
- appendPQExpBufferStr(query, "SELECT "
- "tableoid, oid, rulename, "
- "ev_class AS ruletable, ev_type, is_instead, "
- "'O'::char AS ev_enabled "
- "FROM pg_rewrite "
- "ORDER BY oid");
- }
else
{
appendPQExpBufferStr(query, "SELECT "
- "(SELECT oid FROM pg_class WHERE relname = 'pg_rewrite') AS tableoid, "
- "oid, rulename, "
+ "tableoid, oid, rulename, "
"ev_class AS ruletable, ev_type, is_instead, "
"'O'::char AS ev_enabled "
"FROM pg_rewrite "
@@ -6931,7 +6308,7 @@ getTriggers(Archive *fout, TableInfo tblinfo[], int numTables)
"AND tgconstraint = 0",
tbinfo->dobj.catId.oid);
}
- else if (fout->remoteVersion >= 70300)
+ else
{
/*
* We ignore triggers that are tied to a foreign-key constraint,
@@ -6954,34 +6331,7 @@ getTriggers(Archive *fout, TableInfo tblinfo[], int numTables)
" WHERE d.classid = t.tableoid AND d.objid = t.oid AND d.deptype = 'i' AND c.contype = 'f'))",
tbinfo->dobj.catId.oid);
}
- else if (fout->remoteVersion >= 70100)
- {
- appendPQExpBuffer(query,
- "SELECT tgname, tgfoid::regproc AS tgfname, "
- "tgtype, tgnargs, tgargs, tgenabled, "
- "tgisconstraint, tgconstrname, tgdeferrable, "
- "tgconstrrelid, tginitdeferred, tableoid, oid, "
- "(SELECT relname FROM pg_class WHERE oid = tgconstrrelid) "
- " AS tgconstrrelname "
- "FROM pg_trigger "
- "WHERE tgrelid = '%u'::oid",
- tbinfo->dobj.catId.oid);
- }
- else
- {
- appendPQExpBuffer(query,
- "SELECT tgname, tgfoid::regproc AS tgfname, "
- "tgtype, tgnargs, tgargs, tgenabled, "
- "tgisconstraint, tgconstrname, tgdeferrable, "
- "tgconstrrelid, tginitdeferred, "
- "(SELECT oid FROM pg_class WHERE relname = 'pg_trigger') AS tableoid, "
- "oid, "
- "(SELECT relname FROM pg_class WHERE oid = tgconstrrelid) "
- " AS tgconstrrelname "
- "FROM pg_trigger "
- "WHERE tgrelid = '%u'::oid",
- tbinfo->dobj.catId.oid);
- }
+
res = ExecuteSqlQuery(fout, query->data, PGRES_TUPLES_OK);
ntups = PQntuples(res);
@@ -7278,7 +6628,7 @@ getProcLangs(Archive *fout, int *numProcLangs)
"ORDER BY oid",
username_subquery);
}
- else if (fout->remoteVersion >= 70400)
+ else
{
/* Languages are owned by the bootstrap superuser, sysid 1 */
appendPQExpBuffer(query, "SELECT tableoid, oid, "
@@ -7292,45 +6642,6 @@ getProcLangs(Archive *fout, int *numProcLangs)
"ORDER BY oid",
username_subquery);
}
- else if (fout->remoteVersion >= 70300)
- {
- /* No clear notion of an owner at all before 7.4 ... */
- appendPQExpBuffer(query, "SELECT tableoid, oid, "
- "lanname, lanpltrusted, lanplcallfoid, "
- "0 AS laninline, lanvalidator, lanacl, "
- "NULL AS rlanacl, "
- "NULL AS initlanacl, NULL AS initrlanacl, "
- "NULL AS lanowner "
- "FROM pg_language "
- "WHERE lanispl "
- "ORDER BY oid");
- }
- else if (fout->remoteVersion >= 70100)
- {
- appendPQExpBuffer(query, "SELECT tableoid, oid, "
- "lanname, lanpltrusted, lanplcallfoid, "
- "0 AS laninline, 0 AS lanvalidator, NULL AS lanacl, "
- "NULL AS rlanacl, "
- "NULL AS initlanacl, NULL AS initrlanacl, "
- "NULL AS lanowner "
- "FROM pg_language "
- "WHERE lanispl "
- "ORDER BY oid");
- }
- else
- {
- appendPQExpBuffer(query, "SELECT "
- "(SELECT oid FROM pg_class WHERE relname = 'pg_language') AS tableoid, "
- "oid, "
- "lanname, lanpltrusted, lanplcallfoid, "
- "0 AS laninline, 0 AS lanvalidator, NULL AS lanacl, "
- "NULL AS rlanacl, "
- "NULL AS initlanacl, NULL AS initrlanacl, "
- "NULL AS lanowner "
- "FROM pg_language "
- "WHERE lanispl "
- "ORDER BY oid");
- }
res = ExecuteSqlQuery(fout, query->data, PGRES_TUPLES_OK);
@@ -7379,20 +6690,6 @@ getProcLangs(Archive *fout, int *numProcLangs)
PQgetisnull(res, i, i_initlanacl) &&
PQgetisnull(res, i, i_initrlanacl))
planginfo[i].dobj.dump &= ~DUMP_COMPONENT_ACL;
-
- if (fout->remoteVersion < 70300)
- {
- /*
- * We need to make a dependency to ensure the function will be
- * dumped first. (In 7.3 and later the regular dependency
- * mechanism will handle this for us.)
- */
- FuncInfo *funcInfo = findFuncByOid(planginfo[i].lanplcallfoid);
-
- if (funcInfo)
- addObjectDependency(&planginfo[i].dobj,
- funcInfo->dobj.dumpId);
- }
}
PQclear(res);
@@ -7434,25 +6731,13 @@ getCasts(Archive *fout, int *numCasts)
"castmethod "
"FROM pg_cast ORDER BY 3,4");
}
- else if (fout->remoteVersion >= 70300)
+ else
{
appendPQExpBufferStr(query, "SELECT tableoid, oid, "
"castsource, casttarget, castfunc, castcontext, "
"CASE WHEN castfunc = 0 THEN 'b' ELSE 'f' END AS castmethod "
"FROM pg_cast ORDER BY 3,4");
}
- else
- {
- appendPQExpBufferStr(query, "SELECT 0 AS tableoid, p.oid, "
- "t1.oid AS castsource, t2.oid AS casttarget, "
- "p.oid AS castfunc, 'e' AS castcontext, "
- "'f' AS castmethod "
- "FROM pg_type t1, pg_type t2, pg_proc p "
- "WHERE p.pronargs = 1 AND "
- "p.proargtypes[0] = t1.oid AND "
- "p.prorettype = t2.oid AND p.proname = t2.typname "
- "ORDER BY 3,4");
- }
res = ExecuteSqlQuery(fout, query->data, PGRES_TUPLES_OK);
@@ -7499,22 +6784,6 @@ getCasts(Archive *fout, int *numCasts)
sTypeInfo->dobj.name, tTypeInfo->dobj.name);
castinfo[i].dobj.name = namebuf.data;
- if (fout->remoteVersion < 70300 &&
- OidIsValid(castinfo[i].castfunc))
- {
- /*
- * We need to make a dependency to ensure the function will be
- * dumped first. (In 7.3 and later the regular dependency
- * mechanism handles this for us.)
- */
- FuncInfo *funcInfo;
-
- funcInfo = findFuncByOid(castinfo[i].castfunc);
- if (funcInfo)
- addObjectDependency(&castinfo[i].dobj,
- funcInfo->dobj.dumpId);
- }
-
/* Decide whether we want to dump it */
selectDumpableCast(&(castinfo[i]), fout);
@@ -7701,10 +6970,7 @@ getTableAttrs(Archive *fout, TableInfo *tblinfo, int numTables)
/*
* we must read the attribute names in attribute number order! because
- * we will use the attnum to index into the attnames array later. We
- * actually ask to order by "attrelid, attnum" because (at least up to
- * 7.3) the planner is not smart enough to realize it needn't re-sort
- * the output of an indexscan on pg_attribute_relid_attnum_index.
+ * we will use the attnum to index into the attnames array later.
*/
if (g_verbose)
write_msg(NULL, "finding the columns and types of table \"%s.%s\"\n",
@@ -7736,7 +7002,7 @@ getTableAttrs(Archive *fout, TableInfo *tblinfo, int numTables)
"ON a.atttypid = t.oid "
"WHERE a.attrelid = '%u'::pg_catalog.oid "
"AND a.attnum > 0::pg_catalog.int2 "
- "ORDER BY a.attrelid, a.attnum",
+ "ORDER BY a.attnum",
tbinfo->dobj.catId.oid);
}
else if (fout->remoteVersion >= 90100)
@@ -7760,7 +7026,7 @@ getTableAttrs(Archive *fout, TableInfo *tblinfo, int numTables)
"ON a.atttypid = t.oid "
"WHERE a.attrelid = '%u'::pg_catalog.oid "
"AND a.attnum > 0::pg_catalog.int2 "
- "ORDER BY a.attrelid, a.attnum",
+ "ORDER BY a.attnum",
tbinfo->dobj.catId.oid);
}
else if (fout->remoteVersion >= 90000)
@@ -7778,10 +7044,10 @@ getTableAttrs(Archive *fout, TableInfo *tblinfo, int numTables)
"ON a.atttypid = t.oid "
"WHERE a.attrelid = '%u'::pg_catalog.oid "
"AND a.attnum > 0::pg_catalog.int2 "
- "ORDER BY a.attrelid, a.attnum",
+ "ORDER BY a.attnum",
tbinfo->dobj.catId.oid);
}
- else if (fout->remoteVersion >= 70300)
+ else
{
/* need left join here to not fail on dropped columns ... */
appendPQExpBuffer(q, "SELECT a.attnum, a.attname, a.atttypmod, "
@@ -7795,50 +7061,7 @@ getTableAttrs(Archive *fout, TableInfo *tblinfo, int numTables)
"ON a.atttypid = t.oid "
"WHERE a.attrelid = '%u'::pg_catalog.oid "
"AND a.attnum > 0::pg_catalog.int2 "
- "ORDER BY a.attrelid, a.attnum",
- tbinfo->dobj.catId.oid);
- }
- else if (fout->remoteVersion >= 70100)
- {
- /*
- * attstattarget doesn't exist in 7.1. It does exist in 7.2, but
- * we don't dump it because we can't tell whether it's been
- * explicitly set or was just a default.
- *
- * attislocal doesn't exist before 7.3, either; in older databases
- * we assume it's TRUE, else we'd fail to dump non-inherited atts.
- */
- appendPQExpBuffer(q, "SELECT a.attnum, a.attname, a.atttypmod, "
- "-1 AS attstattarget, a.attstorage, "
- "t.typstorage, a.attnotnull, a.atthasdef, "
- "false AS attisdropped, a.attlen, "
- "a.attalign, true AS attislocal, "
- "format_type(t.oid,a.atttypmod) AS atttypname, "
- "'' AS attoptions, 0 AS attcollation, "
- "NULL AS attfdwoptions "
- "FROM pg_attribute a LEFT JOIN pg_type t "
- "ON a.atttypid = t.oid "
- "WHERE a.attrelid = '%u'::oid "
- "AND a.attnum > 0::int2 "
- "ORDER BY a.attrelid, a.attnum",
- tbinfo->dobj.catId.oid);
- }
- else
- {
- /* format_type not available before 7.1 */
- appendPQExpBuffer(q, "SELECT attnum, attname, atttypmod, "
- "-1 AS attstattarget, "
- "attstorage, attstorage AS typstorage, "
- "attnotnull, atthasdef, false AS attisdropped, "
- "attlen, attalign, "
- "true AS attislocal, "
- "(SELECT typname FROM pg_type WHERE oid = atttypid) AS atttypname, "
- "'' AS attoptions, 0 AS attcollation, "
- "NULL AS attfdwoptions "
- "FROM pg_attribute a "
- "WHERE attrelid = '%u'::oid "
- "AND attnum > 0::int2 "
- "ORDER BY attrelid, attnum",
+ "ORDER BY a.attnum",
tbinfo->dobj.catId.oid);
}
@@ -7924,42 +7147,12 @@ getTableAttrs(Archive *fout, TableInfo *tblinfo, int numTables)
tbinfo->dobj.namespace->dobj.name,
tbinfo->dobj.name);
- resetPQExpBuffer(q);
- if (fout->remoteVersion >= 70300)
- {
- appendPQExpBuffer(q, "SELECT tableoid, oid, adnum, "
+ printfPQExpBuffer(q, "SELECT tableoid, oid, adnum, "
"pg_catalog.pg_get_expr(adbin, adrelid) AS adsrc "
- "FROM pg_catalog.pg_attrdef "
- "WHERE adrelid = '%u'::pg_catalog.oid",
- tbinfo->dobj.catId.oid);
- }
- else if (fout->remoteVersion >= 70200)
- {
- /* 7.2 did not have OIDs in pg_attrdef */
- appendPQExpBuffer(q, "SELECT tableoid, 0 AS oid, adnum, "
- "pg_get_expr(adbin, adrelid) AS adsrc "
- "FROM pg_attrdef "
- "WHERE adrelid = '%u'::oid",
- tbinfo->dobj.catId.oid);
- }
- else if (fout->remoteVersion >= 70100)
- {
- /* no pg_get_expr, so must rely on adsrc */
- appendPQExpBuffer(q, "SELECT tableoid, oid, adnum, adsrc "
- "FROM pg_attrdef "
- "WHERE adrelid = '%u'::oid",
- tbinfo->dobj.catId.oid);
- }
- else
- {
- /* no pg_get_expr, no tableoid either */
- appendPQExpBuffer(q, "SELECT "
- "(SELECT oid FROM pg_class WHERE relname = 'pg_attrdef') AS tableoid, "
- "oid, adnum, adsrc "
- "FROM pg_attrdef "
- "WHERE adrelid = '%u'::oid",
- tbinfo->dobj.catId.oid);
- }
+ "FROM pg_catalog.pg_attrdef "
+ "WHERE adrelid = '%u'::pg_catalog.oid",
+ tbinfo->dobj.catId.oid);
+
res = ExecuteSqlQuery(fout, q->data, PGRES_TUPLES_OK);
numDefaults = PQntuples(res);
@@ -8005,17 +7198,11 @@ getTableAttrs(Archive *fout, TableInfo *tblinfo, int numTables)
if (tbinfo->relkind == RELKIND_VIEW)
{
attrdefs[j].separate = true;
- /* needed in case pre-7.3 DB: */
- addObjectDependency(&attrdefs[j].dobj,
- tbinfo->dobj.dumpId);
}
else if (!shouldPrintColumn(dopt, tbinfo, adnum - 1))
{
/* column will be suppressed, print default separately */
attrdefs[j].separate = true;
- /* needed in case pre-7.3 DB: */
- addObjectDependency(&attrdefs[j].dobj,
- tbinfo->dobj.dumpId);
}
else
{
@@ -8077,7 +7264,7 @@ getTableAttrs(Archive *fout, TableInfo *tblinfo, int numTables)
"ORDER BY conname",
tbinfo->dobj.catId.oid);
}
- else if (fout->remoteVersion >= 70400)
+ else
{
appendPQExpBuffer(q, "SELECT tableoid, oid, conname, "
"pg_catalog.pg_get_constraintdef(oid) AS consrc, "
@@ -8088,54 +7275,7 @@ getTableAttrs(Archive *fout, TableInfo *tblinfo, int numTables)
"ORDER BY conname",
tbinfo->dobj.catId.oid);
}
- else if (fout->remoteVersion >= 70300)
- {
- /* no pg_get_constraintdef, must use consrc */
- appendPQExpBuffer(q, "SELECT tableoid, oid, conname, "
- "'CHECK (' || consrc || ')' AS consrc, "
- "true AS conislocal, true AS convalidated "
- "FROM pg_catalog.pg_constraint "
- "WHERE conrelid = '%u'::pg_catalog.oid "
- " AND contype = 'c' "
- "ORDER BY conname",
- tbinfo->dobj.catId.oid);
- }
- else if (fout->remoteVersion >= 70200)
- {
- /* 7.2 did not have OIDs in pg_relcheck */
- appendPQExpBuffer(q, "SELECT tableoid, 0 AS oid, "
- "rcname AS conname, "
- "'CHECK (' || rcsrc || ')' AS consrc, "
- "true AS conislocal, true AS convalidated "
- "FROM pg_relcheck "
- "WHERE rcrelid = '%u'::oid "
- "ORDER BY rcname",
- tbinfo->dobj.catId.oid);
- }
- else if (fout->remoteVersion >= 70100)
- {
- appendPQExpBuffer(q, "SELECT tableoid, oid, "
- "rcname AS conname, "
- "'CHECK (' || rcsrc || ')' AS consrc, "
- "true AS conislocal, true AS convalidated "
- "FROM pg_relcheck "
- "WHERE rcrelid = '%u'::oid "
- "ORDER BY rcname",
- tbinfo->dobj.catId.oid);
- }
- else
- {
- /* no tableoid in 7.0 */
- appendPQExpBuffer(q, "SELECT "
- "(SELECT oid FROM pg_class WHERE relname = 'pg_relcheck') AS tableoid, "
- "oid, rcname AS conname, "
- "'CHECK (' || rcsrc || ')' AS consrc, "
- "true AS conislocal, true AS convalidated "
- "FROM pg_relcheck "
- "WHERE rcrelid = '%u'::oid "
- "ORDER BY rcname",
- tbinfo->dobj.catId.oid);
- }
+
res = ExecuteSqlQuery(fout, q->data, PGRES_TUPLES_OK);
numConstrs = PQntuples(res);
@@ -8303,8 +7443,7 @@ getTSParsers(Archive *fout, int *numTSParsers)
prsinfo[i].dobj.name = pg_strdup(PQgetvalue(res, i, i_prsname));
prsinfo[i].dobj.namespace =
findNamespace(fout,
- atooid(PQgetvalue(res, i, i_prsnamespace)),
- prsinfo[i].dobj.catId.oid);
+ atooid(PQgetvalue(res, i, i_prsnamespace)));
prsinfo[i].prsstart = atooid(PQgetvalue(res, i, i_prsstart));
prsinfo[i].prstoken = atooid(PQgetvalue(res, i, i_prstoken));
prsinfo[i].prsend = atooid(PQgetvalue(res, i, i_prsend));
@@ -8390,8 +7529,7 @@ getTSDictionaries(Archive *fout, int *numTSDicts)
dictinfo[i].dobj.name = pg_strdup(PQgetvalue(res, i, i_dictname));
dictinfo[i].dobj.namespace =
findNamespace(fout,
- atooid(PQgetvalue(res, i, i_dictnamespace)),
- dictinfo[i].dobj.catId.oid);
+ atooid(PQgetvalue(res, i, i_dictnamespace)));
dictinfo[i].rolname = pg_strdup(PQgetvalue(res, i, i_rolname));
dictinfo[i].dicttemplate = atooid(PQgetvalue(res, i, i_dicttemplate));
if (PQgetisnull(res, i, i_dictinitoption))
@@ -8474,8 +7612,7 @@ getTSTemplates(Archive *fout, int *numTSTemplates)
tmplinfo[i].dobj.name = pg_strdup(PQgetvalue(res, i, i_tmplname));
tmplinfo[i].dobj.namespace =
findNamespace(fout,
- atooid(PQgetvalue(res, i, i_tmplnamespace)),
- tmplinfo[i].dobj.catId.oid);
+ atooid(PQgetvalue(res, i, i_tmplnamespace)));
tmplinfo[i].tmplinit = atooid(PQgetvalue(res, i, i_tmplinit));
tmplinfo[i].tmpllexize = atooid(PQgetvalue(res, i, i_tmpllexize));
@@ -8555,8 +7692,7 @@ getTSConfigurations(Archive *fout, int *numTSConfigs)
cfginfo[i].dobj.name = pg_strdup(PQgetvalue(res, i, i_cfgname));
cfginfo[i].dobj.namespace =
findNamespace(fout,
- atooid(PQgetvalue(res, i, i_cfgnamespace)),
- cfginfo[i].dobj.catId.oid);
+ atooid(PQgetvalue(res, i, i_cfgnamespace)));
cfginfo[i].rolname = pg_strdup(PQgetvalue(res, i, i_rolname));
cfginfo[i].cfgparser = atooid(PQgetvalue(res, i, i_cfgparser));
@@ -8964,8 +8100,7 @@ getDefaultACLs(Archive *fout, int *numDefaultACLs)
daclinfo[i].dobj.name = pg_strdup(PQgetvalue(res, i, i_defaclobjtype));
if (nspid != InvalidOid)
- daclinfo[i].dobj.namespace = findNamespace(fout, nspid,
- daclinfo[i].dobj.catId.oid);
+ daclinfo[i].dobj.namespace = findNamespace(fout, nspid);
else
daclinfo[i].dobj.namespace = NULL;
@@ -9174,14 +8309,6 @@ findComments(Archive *fout, Oid classoid, Oid objoid,
ncomments = collectComments(fout, &comments);
/*
- * Pre-7.2, pg_description does not contain classoid, so collectComments
- * just stores a zero. If there's a collision on object OID, well, you
- * get duplicate comments.
- */
- if (fout->remoteVersion < 70200)
- classoid = 0;
-
- /*
* Do binary search to find some item matching the object.
*/
low = &comments[0];
@@ -9268,25 +8395,9 @@ collectComments(Archive *fout, CommentItem **items)
query = createPQExpBuffer();
- if (fout->remoteVersion >= 70300)
- {
- appendPQExpBufferStr(query, "SELECT description, classoid, objoid, objsubid "
- "FROM pg_catalog.pg_description "
- "ORDER BY classoid, objoid, objsubid");
- }
- else if (fout->remoteVersion >= 70200)
- {
- appendPQExpBufferStr(query, "SELECT description, classoid, objoid, objsubid "
- "FROM pg_description "
- "ORDER BY classoid, objoid, objsubid");
- }
- else
- {
- /* Note: this will fail to find attribute comments in pre-7.2... */
- appendPQExpBufferStr(query, "SELECT description, 0 AS classoid, objoid, 0 AS objsubid "
- "FROM pg_description "
- "ORDER BY objoid");
- }
+ appendPQExpBufferStr(query, "SELECT description, classoid, objoid, objsubid "
+ "FROM pg_catalog.pg_description "
+ "ORDER BY classoid, objoid, objsubid");
res = ExecuteSqlQuery(fout, query->data, PGRES_TUPLES_OK);
@@ -9468,10 +8579,6 @@ dumpNamespace(Archive *fout, NamespaceInfo *nspinfo)
if (!nspinfo->dobj.dump || dopt->dataOnly)
return;
- /* don't dump dummy namespace from pre-7.3 source */
- if (strlen(nspinfo->dobj.name) == 0)
- return;
-
q = createPQExpBuffer();
delq = createPQExpBuffer();
labelq = createPQExpBuffer();
@@ -10126,7 +9233,7 @@ dumpBaseType(Archive *fout, TypeInfo *tyinfo)
"WHERE oid = '%u'::pg_catalog.oid",
tyinfo->dobj.catId.oid);
}
- else if (fout->remoteVersion >= 80000)
+ else
{
appendPQExpBuffer(query, "SELECT typlen, "
"typinput, typoutput, typreceive, typsend, "
@@ -10144,105 +9251,6 @@ dumpBaseType(Archive *fout, TypeInfo *tyinfo)
"WHERE oid = '%u'::pg_catalog.oid",
tyinfo->dobj.catId.oid);
}
- else if (fout->remoteVersion >= 70400)
- {
- appendPQExpBuffer(query, "SELECT typlen, "
- "typinput, typoutput, typreceive, typsend, "
- "'-' AS typmodin, '-' AS typmodout, "
- "'-' AS typanalyze, "
- "typreceive::pg_catalog.oid AS typreceiveoid, "
- "typsend::pg_catalog.oid AS typsendoid, "
- "0 AS typmodinoid, 0 AS typmodoutoid, "
- "0 AS typanalyzeoid, "
- "'U' AS typcategory, false AS typispreferred, "
- "typdelim, typbyval, typalign, typstorage, "
- "false AS typcollatable, "
- "pg_catalog.pg_get_expr(typdefaultbin, 'pg_catalog.pg_type'::pg_catalog.regclass) AS typdefaultbin, typdefault "
- "FROM pg_catalog.pg_type "
- "WHERE oid = '%u'::pg_catalog.oid",
- tyinfo->dobj.catId.oid);
- }
- else if (fout->remoteVersion >= 70300)
- {
- appendPQExpBuffer(query, "SELECT typlen, "
- "typinput, typoutput, "
- "'-' AS typreceive, '-' AS typsend, "
- "'-' AS typmodin, '-' AS typmodout, "
- "'-' AS typanalyze, "
- "0 AS typreceiveoid, 0 AS typsendoid, "
- "0 AS typmodinoid, 0 AS typmodoutoid, "
- "0 AS typanalyzeoid, "
- "'U' AS typcategory, false AS typispreferred, "
- "typdelim, typbyval, typalign, typstorage, "
- "false AS typcollatable, "
- "pg_catalog.pg_get_expr(typdefaultbin, 'pg_catalog.pg_type'::pg_catalog.regclass) AS typdefaultbin, typdefault "
- "FROM pg_catalog.pg_type "
- "WHERE oid = '%u'::pg_catalog.oid",
- tyinfo->dobj.catId.oid);
- }
- else if (fout->remoteVersion >= 70200)
- {
- /*
- * Note: although pre-7.3 catalogs contain typreceive and typsend,
- * ignore them because they are not right.
- */
- appendPQExpBuffer(query, "SELECT typlen, "
- "typinput, typoutput, "
- "'-' AS typreceive, '-' AS typsend, "
- "'-' AS typmodin, '-' AS typmodout, "
- "'-' AS typanalyze, "
- "0 AS typreceiveoid, 0 AS typsendoid, "
- "0 AS typmodinoid, 0 AS typmodoutoid, "
- "0 AS typanalyzeoid, "
- "'U' AS typcategory, false AS typispreferred, "
- "typdelim, typbyval, typalign, typstorage, "
- "false AS typcollatable, "
- "NULL AS typdefaultbin, typdefault "
- "FROM pg_type "
- "WHERE oid = '%u'::oid",
- tyinfo->dobj.catId.oid);
- }
- else if (fout->remoteVersion >= 70100)
- {
- /*
- * Ignore pre-7.2 typdefault; the field exists but has an unusable
- * representation.
- */
- appendPQExpBuffer(query, "SELECT typlen, "
- "typinput, typoutput, "
- "'-' AS typreceive, '-' AS typsend, "
- "'-' AS typmodin, '-' AS typmodout, "
- "'-' AS typanalyze, "
- "0 AS typreceiveoid, 0 AS typsendoid, "
- "0 AS typmodinoid, 0 AS typmodoutoid, "
- "0 AS typanalyzeoid, "
- "'U' AS typcategory, false AS typispreferred, "
- "typdelim, typbyval, typalign, typstorage, "
- "false AS typcollatable, "
- "NULL AS typdefaultbin, NULL AS typdefault "
- "FROM pg_type "
- "WHERE oid = '%u'::oid",
- tyinfo->dobj.catId.oid);
- }
- else
- {
- appendPQExpBuffer(query, "SELECT typlen, "
- "typinput, typoutput, "
- "'-' AS typreceive, '-' AS typsend, "
- "'-' AS typmodin, '-' AS typmodout, "
- "'-' AS typanalyze, "
- "0 AS typreceiveoid, 0 AS typsendoid, "
- "0 AS typmodinoid, 0 AS typmodoutoid, "
- "0 AS typanalyzeoid, "
- "'U' AS typcategory, false AS typispreferred, "
- "typdelim, typbyval, typalign, "
- "'p'::char AS typstorage, "
- "false AS typcollatable, "
- "NULL AS typdefaultbin, NULL AS typdefault "
- "FROM pg_type "
- "WHERE oid = '%u'::oid",
- tyinfo->dobj.catId.oid);
- }
res = ExecuteSqlQueryForSingleRow(fout, query->data);
@@ -10300,30 +9308,19 @@ dumpBaseType(Archive *fout, TypeInfo *tyinfo)
qtypname,
(strcmp(typlen, "-1") == 0) ? "variable" : typlen);
- if (fout->remoteVersion >= 70300)
- {
- /* regproc result is correctly quoted as of 7.3 */
- appendPQExpBuffer(q, ",\n INPUT = %s", typinput);
- appendPQExpBuffer(q, ",\n OUTPUT = %s", typoutput);
- if (OidIsValid(typreceiveoid))
- appendPQExpBuffer(q, ",\n RECEIVE = %s", typreceive);
- if (OidIsValid(typsendoid))
- appendPQExpBuffer(q, ",\n SEND = %s", typsend);
- if (OidIsValid(typmodinoid))
- appendPQExpBuffer(q, ",\n TYPMOD_IN = %s", typmodin);
- if (OidIsValid(typmodoutoid))
- appendPQExpBuffer(q, ",\n TYPMOD_OUT = %s", typmodout);
- if (OidIsValid(typanalyzeoid))
- appendPQExpBuffer(q, ",\n ANALYZE = %s", typanalyze);
- }
- else
- {
- /* regproc delivers an unquoted name before 7.3 */
- /* cannot combine these because fmtId uses static result area */
- appendPQExpBuffer(q, ",\n INPUT = %s", fmtId(typinput));
- appendPQExpBuffer(q, ",\n OUTPUT = %s", fmtId(typoutput));
- /* receive/send/typmodin/typmodout/analyze need not be printed */
- }
+ /* regproc result is sufficiently quoted already */
+ appendPQExpBuffer(q, ",\n INPUT = %s", typinput);
+ appendPQExpBuffer(q, ",\n OUTPUT = %s", typoutput);
+ if (OidIsValid(typreceiveoid))
+ appendPQExpBuffer(q, ",\n RECEIVE = %s", typreceive);
+ if (OidIsValid(typsendoid))
+ appendPQExpBuffer(q, ",\n SEND = %s", typsend);
+ if (OidIsValid(typmodinoid))
+ appendPQExpBuffer(q, ",\n TYPMOD_IN = %s", typmodin);
+ if (OidIsValid(typmodoutoid))
+ appendPQExpBuffer(q, ",\n TYPMOD_OUT = %s", typmodout);
+ if (OidIsValid(typanalyzeoid))
+ appendPQExpBuffer(q, ",\n ANALYZE = %s", typanalyze);
if (strcmp(typcollatable, "t") == 0)
appendPQExpBufferStr(q, ",\n COLLATABLE = true");
@@ -10468,7 +9465,6 @@ dumpDomain(Archive *fout, TypeInfo *tyinfo)
}
else
{
- /* We assume here that remoteVersion must be at least 70300 */
appendPQExpBuffer(query, "SELECT typnotnull, "
"pg_catalog.format_type(typbasetype, typtypmod) AS typdefn, "
"pg_catalog.pg_get_expr(typdefaultbin, 'pg_catalog.pg_type'::pg_catalog.regclass) AS typdefaultbin, "
@@ -10669,9 +9665,8 @@ dumpCompositeType(Archive *fout, TypeInfo *tyinfo)
else
{
/*
- * We assume here that remoteVersion must be at least 70300. Since
- * ALTER TYPE could not drop columns until 9.1, attisdropped should
- * always be false.
+ * Since ALTER TYPE could not drop columns until 9.1, attisdropped
+ * should always be false.
*/
appendPQExpBuffer(query, "SELECT a.attname, "
"pg_catalog.format_type(a.atttypid, a.atttypmod) AS atttypdefn, "
@@ -10858,7 +9853,6 @@ dumpCompositeTypeColComments(Archive *fout, TypeInfo *tyinfo)
query = createPQExpBuffer();
- /* We assume here that remoteVersion must be at least 70300 */
appendPQExpBuffer(query,
"SELECT c.tableoid, a.attname, a.attnum "
"FROM pg_catalog.pg_class c, pg_catalog.pg_attribute a "
@@ -11442,7 +10436,7 @@ dumpFunc(Archive *fout, FuncInfo *finfo)
"WHERE oid = '%u'::pg_catalog.oid",
finfo->dobj.catId.oid);
}
- else if (fout->remoteVersion >= 80000)
+ else
{
appendPQExpBuffer(query,
"SELECT proretset, prosrc, probin, "
@@ -11458,58 +10452,6 @@ dumpFunc(Archive *fout, FuncInfo *finfo)
"WHERE oid = '%u'::pg_catalog.oid",
finfo->dobj.catId.oid);
}
- else if (fout->remoteVersion >= 70300)
- {
- appendPQExpBuffer(query,
- "SELECT proretset, prosrc, probin, "
- "null AS proallargtypes, "
- "null AS proargmodes, "
- "null AS proargnames, "
- "false AS proiswindow, "
- "provolatile, proisstrict, prosecdef, "
- "false AS proleakproof, "
- "null AS proconfig, 0 AS procost, 0 AS prorows, "
- "(SELECT lanname FROM pg_catalog.pg_language WHERE oid = prolang) AS lanname "
- "FROM pg_catalog.pg_proc "
- "WHERE oid = '%u'::pg_catalog.oid",
- finfo->dobj.catId.oid);
- }
- else if (fout->remoteVersion >= 70100)
- {
- appendPQExpBuffer(query,
- "SELECT proretset, prosrc, probin, "
- "null AS proallargtypes, "
- "null AS proargmodes, "
- "null AS proargnames, "
- "false AS proiswindow, "
- "case when proiscachable then 'i' else 'v' end AS provolatile, "
- "proisstrict, "
- "false AS prosecdef, "
- "false AS proleakproof, "
- "null AS proconfig, 0 AS procost, 0 AS prorows, "
- "(SELECT lanname FROM pg_language WHERE oid = prolang) AS lanname "
- "FROM pg_proc "
- "WHERE oid = '%u'::oid",
- finfo->dobj.catId.oid);
- }
- else
- {
- appendPQExpBuffer(query,
- "SELECT proretset, prosrc, probin, "
- "null AS proallargtypes, "
- "null AS proargmodes, "
- "null AS proargnames, "
- "false AS proiswindow, "
- "CASE WHEN proiscachable THEN 'i' ELSE 'v' END AS provolatile, "
- "false AS proisstrict, "
- "false AS prosecdef, "
- "false AS proleakproof, "
- "NULL AS proconfig, 0 AS procost, 0 AS prorows, "
- "(SELECT lanname FROM pg_language WHERE oid = prolang) AS lanname "
- "FROM pg_proc "
- "WHERE oid = '%u'::oid",
- finfo->dobj.catId.oid);
- }
res = ExecuteSqlQueryForSingleRow(fout, query->data);
@@ -12082,7 +11024,6 @@ dumpOpr(Archive *fout, OprInfo *oprinfo)
PQExpBuffer labelq;
PQExpBuffer oprid;
PQExpBuffer details;
- const char *name;
PGresult *res;
int i_oprkind;
int i_oprcode;
@@ -12143,7 +11084,7 @@ dumpOpr(Archive *fout, OprInfo *oprinfo)
"WHERE oid = '%u'::pg_catalog.oid",
oprinfo->dobj.catId.oid);
}
- else if (fout->remoteVersion >= 70300)
+ else
{
appendPQExpBuffer(query, "SELECT oprkind, "
"oprcode::pg_catalog.regprocedure, "
@@ -12159,34 +11100,6 @@ dumpOpr(Archive *fout, OprInfo *oprinfo)
"WHERE oid = '%u'::pg_catalog.oid",
oprinfo->dobj.catId.oid);
}
- else if (fout->remoteVersion >= 70100)
- {
- appendPQExpBuffer(query, "SELECT oprkind, oprcode, "
- "CASE WHEN oprleft = 0 THEN '-' "
- "ELSE format_type(oprleft, NULL) END AS oprleft, "
- "CASE WHEN oprright = 0 THEN '-' "
- "ELSE format_type(oprright, NULL) END AS oprright, "
- "oprcom, oprnegate, oprrest, oprjoin, "
- "(oprlsortop != 0) AS oprcanmerge, "
- "oprcanhash "
- "FROM pg_operator "
- "WHERE oid = '%u'::oid",
- oprinfo->dobj.catId.oid);
- }
- else
- {
- appendPQExpBuffer(query, "SELECT oprkind, oprcode, "
- "CASE WHEN oprleft = 0 THEN '-'::name "
- "ELSE (SELECT typname FROM pg_type WHERE oid = oprleft) END AS oprleft, "
- "CASE WHEN oprright = 0 THEN '-'::name "
- "ELSE (SELECT typname FROM pg_type WHERE oid = oprright) END AS oprright, "
- "oprcom, oprnegate, oprrest, oprjoin, "
- "(oprlsortop != 0) AS oprcanmerge, "
- "oprcanhash "
- "FROM pg_operator "
- "WHERE oid = '%u'::oid",
- oprinfo->dobj.catId.oid);
- }
res = ExecuteSqlQueryForSingleRow(fout, query->data);
@@ -12229,12 +11142,8 @@ dumpOpr(Archive *fout, OprInfo *oprinfo)
if (strcmp(oprkind, "r") == 0 ||
strcmp(oprkind, "b") == 0)
{
- if (fout->remoteVersion >= 70100)
- name = oprleft;
- else
- name = fmtId(oprleft);
- appendPQExpBuffer(details, ",\n LEFTARG = %s", name);
- appendPQExpBufferStr(oprid, name);
+ appendPQExpBuffer(details, ",\n LEFTARG = %s", oprleft);
+ appendPQExpBufferStr(oprid, oprleft);
}
else
appendPQExpBufferStr(oprid, "NONE");
@@ -12242,12 +11151,8 @@ dumpOpr(Archive *fout, OprInfo *oprinfo)
if (strcmp(oprkind, "l") == 0 ||
strcmp(oprkind, "b") == 0)
{
- if (fout->remoteVersion >= 70100)
- name = oprright;
- else
- name = fmtId(oprright);
- appendPQExpBuffer(details, ",\n RIGHTARG = %s", name);
- appendPQExpBuffer(oprid, ", %s)", name);
+ appendPQExpBuffer(details, ",\n RIGHTARG = %s", oprright);
+ appendPQExpBuffer(oprid, ", %s)", oprright);
}
else
appendPQExpBufferStr(oprid, ", NONE)");
@@ -12334,40 +11239,34 @@ dumpOpr(Archive *fout, OprInfo *oprinfo)
* Returns allocated string of what to print, or NULL if function references
* is InvalidOid. Returned string is expected to be free'd by the caller.
*
- * In 7.3 the input is a REGPROCEDURE display; we have to strip the
- * argument-types part. In prior versions, the input is a REGPROC display.
+ * The input is a REGPROCEDURE display; we have to strip the argument-types
+ * part.
*/
static char *
convertRegProcReference(Archive *fout, const char *proc)
{
+ char *name;
+ char *paren;
+ bool inquote;
+
/* In all cases "-" means a null reference */
if (strcmp(proc, "-") == 0)
return NULL;
- if (fout->remoteVersion >= 70300)
+ name = pg_strdup(proc);
+ /* find non-double-quoted left paren */
+ inquote = false;
+ for (paren = name; *paren; paren++)
{
- char *name;
- char *paren;
- bool inquote;
-
- name = pg_strdup(proc);
- /* find non-double-quoted left paren */
- inquote = false;
- for (paren = name; *paren; paren++)
+ if (*paren == '(' && !inquote)
{
- if (*paren == '(' && !inquote)
- {
- *paren = '\0';
- break;
- }
- if (*paren == '"')
- inquote = !inquote;
+ *paren = '\0';
+ break;
}
- return name;
+ if (*paren == '"')
+ inquote = !inquote;
}
-
- /* REGPROC before 7.3 does not quote its result */
- return pg_strdup(fmtId(proc));
+ return name;
}
/*
@@ -12376,60 +11275,44 @@ convertRegProcReference(Archive *fout, const char *proc)
* Returns an allocated string of what to print, or NULL to print nothing.
* Caller is responsible for free'ing result string.
*
- * In 7.3 and up the input is a REGOPERATOR display; we have to strip the
- * argument-types part, and add OPERATOR() decoration if the name is
- * schema-qualified. In older versions, the input is just a numeric OID,
- * which we search our operator list for.
+ * The input is a REGOPERATOR display; we have to strip the argument-types
+ * part, and add OPERATOR() decoration if the name is schema-qualified.
*/
static char *
convertOperatorReference(Archive *fout, const char *opr)
{
- OprInfo *oprInfo;
+ char *name;
+ char *oname;
+ char *ptr;
+ bool inquote;
+ bool sawdot;
/* In all cases "0" means a null reference */
if (strcmp(opr, "0") == 0)
return NULL;
- if (fout->remoteVersion >= 70300)
- {
- char *name;
- char *oname;
- char *ptr;
- bool inquote;
- bool sawdot;
-
- name = pg_strdup(opr);
- /* find non-double-quoted left paren, and check for non-quoted dot */
- inquote = false;
- sawdot = false;
- for (ptr = name; *ptr; ptr++)
+ name = pg_strdup(opr);
+ /* find non-double-quoted left paren, and check for non-quoted dot */
+ inquote = false;
+ sawdot = false;
+ for (ptr = name; *ptr; ptr++)
+ {
+ if (*ptr == '"')
+ inquote = !inquote;
+ else if (*ptr == '.' && !inquote)
+ sawdot = true;
+ else if (*ptr == '(' && !inquote)
{
- if (*ptr == '"')
- inquote = !inquote;
- else if (*ptr == '.' && !inquote)
- sawdot = true;
- else if (*ptr == '(' && !inquote)
- {
- *ptr = '\0';
- break;
- }
+ *ptr = '\0';
+ break;
}
- /* If not schema-qualified, don't need to add OPERATOR() */
- if (!sawdot)
- return name;
- oname = psprintf("OPERATOR(%s)", name);
- free(name);
- return oname;
- }
-
- oprInfo = findOprByOid(atooid(opr));
- if (oprInfo == NULL)
- {
- write_msg(NULL, "WARNING: could not find operator with OID %s\n",
- opr);
- return NULL;
}
- return pg_strdup(oprInfo->dobj.name);
+ /* If not schema-qualified, don't need to add OPERATOR() */
+ if (!sawdot)
+ return name;
+ oname = psprintf("OPERATOR(%s)", name);
+ free(name);
+ return oname;
}
/*
@@ -12586,14 +11469,6 @@ dumpOpclass(Archive *fout, OpclassInfo *opcinfo)
if (!opcinfo->dobj.dump || dopt->dataOnly)
return;
- /*
- * XXX currently we do not implement dumping of operator classes from
- * pre-7.3 databases. This could be done but it seems not worth the
- * trouble.
- */
- if (fout->remoteVersion < 70300)
- return;
-
query = createPQExpBuffer();
q = createPQExpBuffer();
delq = createPQExpBuffer();
@@ -13343,7 +12218,7 @@ dumpConversion(Archive *fout, ConvInfo *convinfo)
appendStringLiteralAH(q, conforencoding, fout);
appendPQExpBufferStr(q, " TO ");
appendStringLiteralAH(q, contoencoding, fout);
- /* regproc is automatically quoted in 7.3 and above */
+ /* regproc output is already sufficiently quoted */
appendPQExpBuffer(q, " FROM %s;\n", conproc);
appendPQExpBuffer(labelq, "CONVERSION %s", fmtId(convinfo->dobj.name));
@@ -13569,7 +12444,7 @@ dumpAgg(Archive *fout, AggInfo *agginfo)
"AND p.oid = '%u'::pg_catalog.oid",
agginfo->aggfn.dobj.catId.oid);
}
- else if (fout->remoteVersion >= 70300)
+ else
{
appendPQExpBuffer(query, "SELECT aggtransfn, "
"aggfinalfn, aggtranstype::pg_catalog.regtype, "
@@ -13587,41 +12462,6 @@ dumpAgg(Archive *fout, AggInfo *agginfo)
"AND p.oid = '%u'::pg_catalog.oid",
agginfo->aggfn.dobj.catId.oid);
}
- else if (fout->remoteVersion >= 70100)
- {
- appendPQExpBuffer(query, "SELECT aggtransfn, aggfinalfn, "
- "format_type(aggtranstype, NULL) AS aggtranstype, "
- "'-' AS aggcombinefn, '-' AS aggserialfn, "
- "'-' AS aggdeserialfn, '-' AS aggmtransfn, "
- "'-' AS aggminvtransfn, '-' AS aggmfinalfn, "
- "0 AS aggmtranstype, false AS aggfinalextra, "
- "false AS aggmfinalextra, 0 AS aggsortop, "
- "false AS hypothetical, "
- "0 AS aggtransspace, agginitval, "
- "0 AS aggmtransspace, NULL AS aggminitval, "
- "true AS convertok "
- "FROM pg_aggregate "
- "WHERE oid = '%u'::oid",
- agginfo->aggfn.dobj.catId.oid);
- }
- else
- {
- appendPQExpBuffer(query, "SELECT aggtransfn1 AS aggtransfn, "
- "aggfinalfn, "
- "(SELECT typname FROM pg_type WHERE oid = aggtranstype1) AS aggtranstype, "
- "'-' AS aggcombinefn, '-' AS aggserialfn, "
- "'-' AS aggdeserialfn, '-' AS aggmtransfn, "
- "'-' AS aggminvtransfn, '-' AS aggmfinalfn, "
- "0 AS aggmtranstype, false AS aggfinalextra, "
- "false AS aggmfinalextra, 0 AS aggsortop, "
- "false AS hypothetical, "
- "0 AS aggtransspace, agginitval1 AS agginitval, "
- "0 AS aggmtransspace, NULL AS aggminitval, "
- "(aggtransfn2 = 0 and aggtranstype2 = 0 and agginitval2 is null) AS convertok "
- "FROM pg_aggregate "
- "WHERE oid = '%u'::oid",
- agginfo->aggfn.dobj.catId.oid);
- }
res = ExecuteSqlQueryForSingleRow(fout, query->data);
@@ -13701,28 +12541,9 @@ dumpAgg(Archive *fout, AggInfo *agginfo)
return;
}
- if (fout->remoteVersion >= 70300)
- {
- /* If using 7.3's regproc or regtype, data is already quoted */
- appendPQExpBuffer(details, " SFUNC = %s,\n STYPE = %s",
- aggtransfn,
- aggtranstype);
- }
- else if (fout->remoteVersion >= 70100)
- {
- /* format_type quotes, regproc does not */
- appendPQExpBuffer(details, " SFUNC = %s,\n STYPE = %s",
- fmtId(aggtransfn),
- aggtranstype);
- }
- else
- {
- /* need quotes all around */
- appendPQExpBuffer(details, " SFUNC = %s,\n",
- fmtId(aggtransfn));
- appendPQExpBuffer(details, " STYPE = %s",
- fmtId(aggtranstype));
- }
+ /* regproc and regtype output is already sufficiently quoted */
+ appendPQExpBuffer(details, " SFUNC = %s,\n STYPE = %s",
+ aggtransfn, aggtranstype);
if (strcmp(aggtransspace, "0") != 0)
{
@@ -15121,19 +13942,9 @@ createViewAsClause(Archive *fout, TableInfo *tbinfo)
int len;
/* Fetch the view definition */
- if (fout->remoteVersion >= 70300)
- {
- /* Beginning in 7.3, viewname is not unique; rely on OID */
- appendPQExpBuffer(query,
+ appendPQExpBuffer(query,
"SELECT pg_catalog.pg_get_viewdef('%u'::pg_catalog.oid) AS viewdef",
- tbinfo->dobj.catId.oid);
- }
- else
- {
- appendPQExpBufferStr(query, "SELECT definition AS viewdef "
- "FROM pg_views WHERE viewname = ");
- appendStringLiteralAH(query, tbinfo->dobj.name, fout);
- }
+ tbinfo->dobj.catId.oid);
res = ExecuteSqlQuery(fout, query->data, PGRES_TUPLES_OK);
@@ -15370,17 +14181,10 @@ dumpTableSchema(Archive *fout, TableInfo *tbinfo)
{
appendPQExpBufferStr(q, " WITH OPTIONS");
}
- else if (fout->remoteVersion >= 70100)
- {
- appendPQExpBuffer(q, " %s",
- tbinfo->atttypnames[j]);
- }
else
{
- /* If no format_type, fake it */
appendPQExpBuffer(q, " %s",
- myFormatType(tbinfo->atttypnames[j],
- tbinfo->atttypmod[j]));
+ tbinfo->atttypnames[j]);
}
/* Add collation if not default for the type */
@@ -16284,52 +15088,6 @@ dumpTableConstraintComment(Archive *fout, ConstraintInfo *coninfo)
}
/*
- * findLastBuiltInOid -
- * find the last built in oid
- *
- * For 7.1 and 7.2, we do this by retrieving datlastsysoid from the
- * pg_database entry for the current database
- */
-static Oid
-findLastBuiltinOid_V71(Archive *fout, const char *dbname)
-{
- PGresult *res;
- Oid last_oid;
- PQExpBuffer query = createPQExpBuffer();
-
- resetPQExpBuffer(query);
- appendPQExpBufferStr(query, "SELECT datlastsysoid from pg_database where datname = ");
- appendStringLiteralAH(query, dbname, fout);
-
- res = ExecuteSqlQueryForSingleRow(fout, query->data);
- last_oid = atooid(PQgetvalue(res, 0, PQfnumber(res, "datlastsysoid")));
- PQclear(res);
- destroyPQExpBuffer(query);
- return last_oid;
-}
-
-/*
- * findLastBuiltInOid -
- * find the last built in oid
- *
- * For 7.0, we do this by assuming that the last thing that initdb does is to
- * create the pg_indexes view. This sucks in general, but seeing that 7.0.x
- * initdb won't be changing anymore, it'll do.
- */
-static Oid
-findLastBuiltinOid_V70(Archive *fout)
-{
- PGresult *res;
- int last_oid;
-
- res = ExecuteSqlQueryForSingleRow(fout,
- "SELECT oid FROM pg_class WHERE relname = 'pg_indexes'");
- last_oid = atooid(PQgetvalue(res, 0, PQfnumber(res, "oid")));
- PQclear(res);
- return last_oid;
-}
-
-/*
* dumpSequence
* write the declaration (not data) of one user-defined sequence
*/
@@ -16703,13 +15461,9 @@ dumpTrigger(Archive *fout, TriggerInfo *tginfo)
{
if (OidIsValid(tginfo->tgconstrrelid))
{
- /* If we are using regclass, name is already quoted */
- if (fout->remoteVersion >= 70300)
- appendPQExpBuffer(query, " FROM %s\n ",
- tginfo->tgconstrrelname);
- else
- appendPQExpBuffer(query, " FROM %s\n ",
- fmtId(tginfo->tgconstrrelname));
+ /* regclass output is already quoted */
+ appendPQExpBuffer(query, " FROM %s\n ",
+ tginfo->tgconstrrelname);
}
if (!tginfo->tgdeferrable)
appendPQExpBufferStr(query, "NOT ");
@@ -16725,13 +15479,9 @@ dumpTrigger(Archive *fout, TriggerInfo *tginfo)
else
appendPQExpBufferStr(query, " FOR EACH STATEMENT\n ");
- /* In 7.3, result of regproc is already quoted */
- if (fout->remoteVersion >= 70300)
- appendPQExpBuffer(query, "EXECUTE PROCEDURE %s(",
- tginfo->tgfname);
- else
- appendPQExpBuffer(query, "EXECUTE PROCEDURE %s(",
- fmtId(tginfo->tgfname));
+ /* regproc output is already sufficiently quoted */
+ appendPQExpBuffer(query, "EXECUTE PROCEDURE %s(",
+ tginfo->tgfname);
tgargs = (char *) PQunescapeBytea((unsigned char *) tginfo->tgargs,
&lentgargs);
@@ -16923,19 +15673,9 @@ dumpRule(Archive *fout, RuleInfo *rinfo)
delcmd = createPQExpBuffer();
labelq = createPQExpBuffer();
- if (fout->remoteVersion >= 70300)
- {
- appendPQExpBuffer(query,
- "SELECT pg_catalog.pg_get_ruledef('%u'::pg_catalog.oid) AS definition",
- rinfo->dobj.catId.oid);
- }
- else
- {
- /* Rule name was unique before 7.3 ... */
- appendPQExpBuffer(query,
- "SELECT pg_get_ruledef('%s') AS definition",
- rinfo->dobj.name);
- }
+ appendPQExpBuffer(query,
+ "SELECT pg_catalog.pg_get_ruledef('%u'::pg_catalog.oid) AS definition",
+ rinfo->dobj.catId.oid);
res = ExecuteSqlQuery(fout, query->data, PGRES_TUPLES_OK);
@@ -17325,10 +16065,6 @@ getDependencies(Archive *fout)
DumpableObject *dobj,
*refdobj;
- /* No dependency info available before 7.3 */
- if (fout->remoteVersion < 70300)
- return;
-
if (g_verbose)
write_msg(NULL, "reading dependency data\n");
@@ -17680,10 +16416,6 @@ selectSourceSchema(Archive *fout, const char *schemaName)
/* This is checked by the callers already */
Assert(schemaName != NULL && *schemaName != '\0');
- /* Not relevant if fetching from pre-7.3 DB */
- if (fout->remoteVersion < 70300)
- return;
-
query = createPQExpBuffer();
appendPQExpBuffer(query, "SET search_path = %s",
fmtId(schemaName));
@@ -17699,8 +16431,8 @@ selectSourceSchema(Archive *fout, const char *schemaName)
* getFormattedTypeName - retrieve a nicely-formatted type name for the
* given type name.
*
- * NB: in 7.3 and up the result may depend on the currently-selected
- * schema; this is why we don't try to cache the names.
+ * NB: the result may depend on the currently-selected search_path; this is
+ * why we don't try to cache the names.
*/
static char *
getFormattedTypeName(Archive *fout, Oid oid, OidOptions opts)
@@ -17722,36 +16454,13 @@ getFormattedTypeName(Archive *fout, Oid oid, OidOptions opts)
}
query = createPQExpBuffer();
- if (fout->remoteVersion >= 70300)
- {
- appendPQExpBuffer(query, "SELECT pg_catalog.format_type('%u'::pg_catalog.oid, NULL)",
- oid);
- }
- else if (fout->remoteVersion >= 70100)
- {
- appendPQExpBuffer(query, "SELECT format_type('%u'::oid, NULL)",
- oid);
- }
- else
- {
- appendPQExpBuffer(query, "SELECT typname "
- "FROM pg_type "
- "WHERE oid = '%u'::oid",
- oid);
- }
+ appendPQExpBuffer(query, "SELECT pg_catalog.format_type('%u'::pg_catalog.oid, NULL)",
+ oid);
res = ExecuteSqlQueryForSingleRow(fout, query->data);
- if (fout->remoteVersion >= 70100)
- {
- /* already quoted */
- result = pg_strdup(PQgetvalue(res, 0, 0));
- }
- else
- {
- /* may need to quote it */
- result = pg_strdup(fmtId(PQgetvalue(res, 0, 0)));
- }
+ /* result of format_type is already quoted */
+ result = pg_strdup(PQgetvalue(res, 0, 0));
PQclear(res);
destroyPQExpBuffer(query);
@@ -17760,76 +16469,6 @@ getFormattedTypeName(Archive *fout, Oid oid, OidOptions opts)
}
/*
- * myFormatType --- local implementation of format_type for use with 7.0.
- */
-static char *
-myFormatType(const char *typname, int32 typmod)
-{
- char *result;
- bool isarray = false;
- PQExpBuffer buf = createPQExpBuffer();
-
- /* Handle array types */
- if (typname[0] == '_')
- {
- isarray = true;
- typname++;
- }
-
- /* Show lengths on bpchar and varchar */
- if (strcmp(typname, "bpchar") == 0)
- {
- int len = (typmod - VARHDRSZ);
-
- appendPQExpBufferStr(buf, "character");
- if (len > 1)
- appendPQExpBuffer(buf, "(%d)",
- typmod - VARHDRSZ);
- }
- else if (strcmp(typname, "varchar") == 0)
- {
- appendPQExpBufferStr(buf, "character varying");
- if (typmod != -1)
- appendPQExpBuffer(buf, "(%d)",
- typmod - VARHDRSZ);
- }
- else if (strcmp(typname, "numeric") == 0)
- {
- appendPQExpBufferStr(buf, "numeric");
- if (typmod != -1)
- {
- int32 tmp_typmod;
- int precision;
- int scale;
-
- tmp_typmod = typmod - VARHDRSZ;
- precision = (tmp_typmod >> 16) & 0xffff;
- scale = tmp_typmod & 0xffff;
- appendPQExpBuffer(buf, "(%d,%d)",
- precision, scale);
- }
- }
-
- /*
- * char is an internal single-byte data type; Let's make sure we force it
- * through with quotes. - thomas 1998-12-13
- */
- else if (strcmp(typname, "char") == 0)
- appendPQExpBufferStr(buf, "\"char\"");
- else
- appendPQExpBufferStr(buf, fmtId(typname));
-
- /* Append array qualifier for array types */
- if (isarray)
- appendPQExpBufferStr(buf, "[]");
-
- result = pg_strdup(buf->data);
- destroyPQExpBuffer(buf);
-
- return result;
-}
-
-/*
* Return a column list clause for the given relation.
*
* Special case: if there are no undropped columns in the relation, return
diff --git a/src/bin/pg_dump/pg_dump.h b/src/bin/pg_dump/pg_dump.h
index 2bfa2d97420..a60cf957335 100644
--- a/src/bin/pg_dump/pg_dump.h
+++ b/src/bin/pg_dump/pg_dump.h
@@ -605,7 +605,6 @@ extern void parseOidArray(const char *str, Oid *array, int arraysize);
extern void sortDumpableObjects(DumpableObject **objs, int numObjs,
DumpId preBoundaryId, DumpId postBoundaryId);
extern void sortDumpableObjectsByTypeName(DumpableObject **objs, int numObjs);
-extern void sortDumpableObjectsByTypeOid(DumpableObject **objs, int numObjs);
extern void sortDataAndIndexObjectsBySize(DumpableObject **objs, int numObjs);
/*
diff --git a/src/bin/pg_dump/pg_dump_sort.c b/src/bin/pg_dump/pg_dump_sort.c
index d87f08d3569..195b84a0d40 100644
--- a/src/bin/pg_dump/pg_dump_sort.c
+++ b/src/bin/pg_dump/pg_dump_sort.c
@@ -23,63 +23,7 @@
static const char *modulename = gettext_noop("sorter");
/*
- * Sort priority for object types when dumping a pre-7.3 database.
- * Objects are sorted by priority levels, and within an equal priority level
- * by OID. (This is a relatively crude hack to provide semi-reasonable
- * behavior for old databases without full dependency info.) Note: collations,
- * extensions, text search, foreign-data, materialized view, event trigger,
- * policies, transforms, access methods and default ACL objects can't really
- * happen here, so the rather bogus priorities for them don't matter.
- *
- * NOTE: object-type priorities must match the section assignments made in
- * pg_dump.c; that is, PRE_DATA objects must sort before DO_PRE_DATA_BOUNDARY,
- * POST_DATA objects must sort after DO_POST_DATA_BOUNDARY, and DATA objects
- * must sort between them.
- */
-static const int oldObjectTypePriority[] =
-{
- 1, /* DO_NAMESPACE */
- 1, /* DO_EXTENSION */
- 2, /* DO_TYPE */
- 2, /* DO_SHELL_TYPE */
- 2, /* DO_FUNC */
- 3, /* DO_AGG */
- 3, /* DO_OPERATOR */
- 3, /* DO_ACCESS_METHOD */
- 4, /* DO_OPCLASS */
- 4, /* DO_OPFAMILY */
- 4, /* DO_COLLATION */
- 5, /* DO_CONVERSION */
- 6, /* DO_TABLE */
- 8, /* DO_ATTRDEF */
- 15, /* DO_INDEX */
- 16, /* DO_RULE */
- 17, /* DO_TRIGGER */
- 14, /* DO_CONSTRAINT */
- 18, /* DO_FK_CONSTRAINT */
- 2, /* DO_PROCLANG */
- 2, /* DO_CAST */
- 11, /* DO_TABLE_DATA */
- 7, /* DO_DUMMY_TYPE */
- 4, /* DO_TSPARSER */
- 4, /* DO_TSDICT */
- 4, /* DO_TSTEMPLATE */
- 4, /* DO_TSCONFIG */
- 4, /* DO_FDW */
- 4, /* DO_FOREIGN_SERVER */
- 19, /* DO_DEFAULT_ACL */
- 4, /* DO_TRANSFORM */
- 9, /* DO_BLOB */
- 12, /* DO_BLOB_DATA */
- 10, /* DO_PRE_DATA_BOUNDARY */
- 13, /* DO_POST_DATA_BOUNDARY */
- 20, /* DO_EVENT_TRIGGER */
- 15, /* DO_REFRESH_MATVIEW */
- 21 /* DO_POLICY */
-};
-
-/*
- * Sort priority for object types when dumping newer databases.
+ * Sort priority for database object types.
* Objects are sorted by type, and within a type by name.
*
* NOTE: object-type priorities must match the section assignments made in
@@ -87,7 +31,7 @@ static const int oldObjectTypePriority[] =
* POST_DATA objects must sort after DO_POST_DATA_BOUNDARY, and DATA objects
* must sort between them.
*/
-static const int newObjectTypePriority[] =
+static const int dbObjectTypePriority[] =
{
1, /* DO_NAMESPACE */
4, /* DO_EXTENSION */
@@ -134,7 +78,6 @@ static DumpId postDataBoundId;
static int DOTypeNameCompare(const void *p1, const void *p2);
-static int DOTypeOidCompare(const void *p1, const void *p2);
static bool TopoSort(DumpableObject **objs,
int numObjs,
DumpableObject **ordering,
@@ -266,8 +209,8 @@ DOTypeNameCompare(const void *p1, const void *p2)
int cmpval;
/* Sort by type */
- cmpval = newObjectTypePriority[obj1->objType] -
- newObjectTypePriority[obj2->objType];
+ cmpval = dbObjectTypePriority[obj1->objType] -
+ dbObjectTypePriority[obj2->objType];
if (cmpval != 0)
return cmpval;
@@ -346,37 +289,6 @@ DOTypeNameCompare(const void *p1, const void *p2)
/*
- * Sort the given objects into a type/OID-based ordering
- *
- * This is used with pre-7.3 source databases as a crude substitute for the
- * lack of dependency information.
- */
-void
-sortDumpableObjectsByTypeOid(DumpableObject **objs, int numObjs)
-{
- if (numObjs > 1)
- qsort((void *) objs, numObjs, sizeof(DumpableObject *),
- DOTypeOidCompare);
-}
-
-static int
-DOTypeOidCompare(const void *p1, const void *p2)
-{
- DumpableObject *obj1 = *(DumpableObject *const *) p1;
- DumpableObject *obj2 = *(DumpableObject *const *) p2;
- int cmpval;
-
- cmpval = oldObjectTypePriority[obj1->objType] -
- oldObjectTypePriority[obj2->objType];
-
- if (cmpval != 0)
- return cmpval;
-
- return oidcmp(obj1->catId.oid, obj2->catId.oid);
-}
-
-
-/*
* Sort the given objects into a safe dump order using dependency
* information (to the extent we have it available).
*
diff --git a/src/bin/pg_dump/pg_dumpall.c b/src/bin/pg_dump/pg_dumpall.c
index b5efb46019b..82157e5620f 100644
--- a/src/bin/pg_dump/pg_dumpall.c
+++ b/src/bin/pg_dump/pg_dumpall.c
@@ -480,10 +480,7 @@ main(int argc, char *argv[])
dropDBs(conn);
if (!roles_only && !no_tablespaces)
- {
- if (server_version >= 80000)
- dropTablespaces(conn);
- }
+ dropTablespaces(conn);
if (!tablespaces_only)
dropRoles(conn);
@@ -505,12 +502,9 @@ main(int argc, char *argv[])
dumpGroups(conn);
}
+ /* Dump tablespaces */
if (!roles_only && !no_tablespaces)
- {
- /* Dump tablespaces */
- if (server_version >= 80000)
- dumpTablespaces(conn);
- }
+ dumpTablespaces(conn);
/* Dump CREATE DATABASE commands */
if (binary_upgrade || (!globals_only && !roles_only && !tablespaces_only))
@@ -886,9 +880,8 @@ dumpRoles(PGconn *conn)
* We do it this way because config settings for roles could mention the
* names of other roles.
*/
- if (server_version >= 70300)
- for (i = 0; i < PQntuples(res); i++)
- dumpUserConfig(conn, PQgetvalue(res, i, i_rolname));
+ for (i = 0; i < PQntuples(res); i++)
+ dumpUserConfig(conn, PQgetvalue(res, i, i_rolname));
PQclear(res);
@@ -1204,16 +1197,10 @@ dropDBs(PGconn *conn)
PGresult *res;
int i;
- if (server_version >= 70100)
- res = executeQuery(conn,
- "SELECT datname "
- "FROM pg_database d "
- "WHERE datallowconn ORDER BY 1");
- else
- res = executeQuery(conn,
- "SELECT datname "
- "FROM pg_database d "
- "ORDER BY 1");
+ res = executeQuery(conn,
+ "SELECT datname "
+ "FROM pg_database d "
+ "WHERE datallowconn ORDER BY 1");
if (PQntuples(res) > 0)
fprintf(OPF, "--\n-- Drop databases\n--\n\n");
@@ -1269,12 +1256,10 @@ dumpCreateDB(PGconn *conn)
* We will dump encoding and locale specifications in the CREATE DATABASE
* commands for just those databases with values different from defaults.
*
- * We consider template0's encoding and locale (or, pre-7.1, template1's)
- * to define the installation default. Pre-8.4 installations do not have
- * per-database locale settings; for them, every database must necessarily
- * be using the installation default, so there's no need to do anything
- * (which is good, since in very old versions there is no good way to find
- * out what the installation locale is anyway...)
+ * We consider template0's encoding and locale to define the installation
+ * default. Pre-8.4 installations do not have per-database locale
+ * settings; for them, every database must necessarily be using the
+ * installation default, so there's no need to do anything.
*/
if (server_version >= 80400)
res = executeQuery(conn,
@@ -1282,18 +1267,12 @@ dumpCreateDB(PGconn *conn)
"datcollate, datctype "
"FROM pg_database "
"WHERE datname = 'template0'");
- else if (server_version >= 70100)
- res = executeQuery(conn,
- "SELECT pg_encoding_to_char(encoding), "
- "null::text AS datcollate, null::text AS datctype "
- "FROM pg_database "
- "WHERE datname = 'template0'");
else
res = executeQuery(conn,
"SELECT pg_encoding_to_char(encoding), "
"null::text AS datcollate, null::text AS datctype "
"FROM pg_database "
- "WHERE datname = 'template1'");
+ "WHERE datname = 'template0'");
/* If for some reason the template DB isn't there, treat as unknown */
if (PQntuples(res) > 0)
@@ -1371,7 +1350,7 @@ dumpCreateDB(PGconn *conn)
"(SELECT spcname FROM pg_tablespace t WHERE t.oid = d.dattablespace) AS dattablespace "
"FROM pg_database d LEFT JOIN pg_authid u ON (datdba = u.oid) "
"WHERE datallowconn ORDER BY 1");
- else if (server_version >= 80000)
+ else
res = executeQuery(conn,
"SELECT datname, "
"coalesce(usename, (select usename from pg_shadow where usesysid=(select datdba from pg_database where datname='template0'))), "
@@ -1382,47 +1361,6 @@ dumpCreateDB(PGconn *conn)
"(SELECT spcname FROM pg_tablespace t WHERE t.oid = d.dattablespace) AS dattablespace "
"FROM pg_database d LEFT JOIN pg_shadow u ON (datdba = usesysid) "
"WHERE datallowconn ORDER BY 1");
- else if (server_version >= 70300)
- res = executeQuery(conn,
- "SELECT datname, "
- "coalesce(usename, (select usename from pg_shadow where usesysid=(select datdba from pg_database where datname='template0'))), "
- "pg_encoding_to_char(d.encoding), "
- "null::text AS datcollate, null::text AS datctype, datfrozenxid, 0 AS datminmxid, "
- "datistemplate, datacl, '' as rdatacl, "
- "-1 as datconnlimit, "
- "'pg_default' AS dattablespace "
- "FROM pg_database d LEFT JOIN pg_shadow u ON (datdba = usesysid) "
- "WHERE datallowconn ORDER BY 1");
- else if (server_version >= 70100)
- res = executeQuery(conn,
- "SELECT datname, "
- "coalesce("
- "(select usename from pg_shadow where usesysid=datdba), "
- "(select usename from pg_shadow where usesysid=(select datdba from pg_database where datname='template0'))), "
- "pg_encoding_to_char(d.encoding), "
- "null::text AS datcollate, null::text AS datctype, 0 AS datfrozenxid, 0 AS datminmxid, "
- "datistemplate, '' as datacl, '' as rdatacl, "
- "-1 as datconnlimit, "
- "'pg_default' AS dattablespace "
- "FROM pg_database d "
- "WHERE datallowconn ORDER BY 1");
- else
- {
- /*
- * Note: 7.0 fails to cope with sub-select in COALESCE, so just deal
- * with getting a NULL by not printing any OWNER clause.
- */
- res = executeQuery(conn,
- "SELECT datname, "
- "(select usename from pg_shadow where usesysid=datdba), "
- "pg_encoding_to_char(d.encoding), "
- "null::text AS datcollate, null::text AS datctype, 0 AS datfrozenxid, 0 AS datminmxid, "
- "'f' as datistemplate, "
- "'' as datacl, '' as rdatacl, -1 as datconnlimit, "
- "'pg_default' AS dattablespace "
- "FROM pg_database d "
- "ORDER BY 1");
- }
for (i = 0; i < PQntuples(res); i++)
{
@@ -1541,8 +1479,7 @@ dumpCreateDB(PGconn *conn)
fprintf(OPF, "%s", buf->data);
- if (server_version >= 70300)
- dumpDatabaseConfig(conn, dbname);
+ dumpDatabaseConfig(conn, dbname);
free(fdbname);
}
@@ -1738,10 +1675,7 @@ dumpDatabases(PGconn *conn)
PGresult *res;
int i;
- if (server_version >= 70100)
- res = executeQuery(conn, "SELECT datname FROM pg_database WHERE datallowconn ORDER BY 1");
- else
- res = executeQuery(conn, "SELECT datname FROM pg_database ORDER BY 1");
+ res = executeQuery(conn, "SELECT datname FROM pg_database WHERE datallowconn ORDER BY 1");
for (i = 0; i < PQntuples(res); i++)
{
@@ -2062,11 +1996,11 @@ connectDatabase(const char *dbname, const char *connection_string,
my_version = PG_VERSION_NUM;
/*
- * We allow the server to be back to 7.0, and up to any minor release of
+ * We allow the server to be back to 8.0, and up to any minor release of
* our own major version. (See also version check in pg_dump.c.)
*/
if (my_version != server_version
- && (server_version < 70000 ||
+ && (server_version < 80000 ||
(server_version / 100) > (my_version / 100)))
{
fprintf(stderr, _("server version: %s; %s version: %s\n"),
@@ -2076,11 +2010,9 @@ connectDatabase(const char *dbname, const char *connection_string,
}
/*
- * On 7.3 and later, make sure we are not fooled by non-system schemas in
- * the search path.
+ * Make sure we are not fooled by non-system schemas in the search path.
*/
- if (server_version >= 70300)
- executeCommand(conn, "SET search_path = pg_catalog");
+ executeCommand(conn, "SET search_path = pg_catalog");
return conn;
}