mirror of
https://github.com/postgres/postgres.git
synced 2025-06-08 22:02:03 +03:00
For 8.0 servers, get last built-in oid from pg_database
We didn't start ensuring that all built-in objects had OIDs less than 16384 until 8.1, so for 8.0 servers we still need to query the value out of pg_database. We need this, in particular, to distinguish which casts were built-in and which were user-defined. For HEAD, we only worry about going back to 8.0, for the back-branches, we also ensure that 7.0-7.4 work. Discussion: https://www.postgresql.org/message-id/flat/20160504183952.GE10850%40tamriel.snowman.net
This commit is contained in:
parent
cad24980ef
commit
107943f1a9
@ -95,7 +95,10 @@ static const char *lockWaitTimeout;
|
|||||||
/* subquery used to convert user ID (eg, datdba) to user name */
|
/* subquery used to convert user ID (eg, datdba) to user name */
|
||||||
static const char *username_subquery;
|
static const char *username_subquery;
|
||||||
|
|
||||||
/* obsolete as of 7.3: */
|
/*
|
||||||
|
* For 8.0 and earlier servers, pulled from pg_database, for 8.1+ we use
|
||||||
|
* FirstNormalObjectId - 1.
|
||||||
|
*/
|
||||||
static Oid g_last_builtin_oid; /* value of the last builtin oid */
|
static Oid g_last_builtin_oid; /* value of the last builtin oid */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -705,17 +708,24 @@ main(int argc, char **argv)
|
|||||||
"Run with --no-synchronized-snapshots instead if you do not need\n"
|
"Run with --no-synchronized-snapshots instead if you do not need\n"
|
||||||
"synchronized snapshots.\n");
|
"synchronized snapshots.\n");
|
||||||
|
|
||||||
/* Find the last built-in OID, if needed */
|
/*
|
||||||
if (fout->remoteVersion < 70300)
|
* Find the last built-in OID, if needed (prior to 8.1)
|
||||||
|
*
|
||||||
|
* With 8.1 and above, we can just use FirstNormalObjectId - 1.
|
||||||
|
*/
|
||||||
|
if (fout->remoteVersion < 80100)
|
||||||
{
|
{
|
||||||
if (fout->remoteVersion >= 70100)
|
if (fout->remoteVersion >= 70100)
|
||||||
g_last_builtin_oid = findLastBuiltinOid_V71(fout,
|
g_last_builtin_oid = findLastBuiltinOid_V71(fout,
|
||||||
PQdb(GetConnection(fout)));
|
PQdb(GetConnection(fout)));
|
||||||
else
|
else
|
||||||
g_last_builtin_oid = findLastBuiltinOid_V70(fout);
|
g_last_builtin_oid = findLastBuiltinOid_V70(fout);
|
||||||
if (g_verbose)
|
|
||||||
write_msg(NULL, "last built-in OID is %u\n", g_last_builtin_oid);
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
g_last_builtin_oid = FirstNormalObjectId - 1;
|
||||||
|
|
||||||
|
if (g_verbose)
|
||||||
|
write_msg(NULL, "last built-in OID is %u\n", g_last_builtin_oid);
|
||||||
|
|
||||||
/* Expand schema selection patterns into OID lists */
|
/* Expand schema selection patterns into OID lists */
|
||||||
if (schema_include_patterns.head != NULL)
|
if (schema_include_patterns.head != NULL)
|
||||||
@ -1429,7 +1439,7 @@ selectDumpableCast(CastInfo *cast)
|
|||||||
if (checkExtensionMembership(&cast->dobj))
|
if (checkExtensionMembership(&cast->dobj))
|
||||||
return; /* extension membership overrides all else */
|
return; /* extension membership overrides all else */
|
||||||
|
|
||||||
if (cast->dobj.catId.oid < (Oid) FirstNormalObjectId)
|
if (cast->dobj.catId.oid <= (Oid) g_last_builtin_oid)
|
||||||
cast->dobj.dump = false;
|
cast->dobj.dump = false;
|
||||||
else
|
else
|
||||||
cast->dobj.dump = include_everything;
|
cast->dobj.dump = include_everything;
|
||||||
@ -1449,7 +1459,7 @@ selectDumpableProcLang(ProcLangInfo *plang)
|
|||||||
if (checkExtensionMembership(&plang->dobj))
|
if (checkExtensionMembership(&plang->dobj))
|
||||||
return; /* extension membership overrides all else */
|
return; /* extension membership overrides all else */
|
||||||
|
|
||||||
if (plang->dobj.catId.oid < (Oid) FirstNormalObjectId)
|
if (plang->dobj.catId.oid <= (Oid) g_last_builtin_oid)
|
||||||
plang->dobj.dump = false;
|
plang->dobj.dump = false;
|
||||||
else
|
else
|
||||||
plang->dobj.dump = include_everything;
|
plang->dobj.dump = include_everything;
|
||||||
@ -1468,7 +1478,7 @@ selectDumpableProcLang(ProcLangInfo *plang)
|
|||||||
static void
|
static void
|
||||||
selectDumpableExtension(ExtensionInfo *extinfo)
|
selectDumpableExtension(ExtensionInfo *extinfo)
|
||||||
{
|
{
|
||||||
if (binary_upgrade && extinfo->dobj.catId.oid < (Oid) FirstNormalObjectId)
|
if (binary_upgrade && extinfo->dobj.catId.oid <= (Oid) g_last_builtin_oid)
|
||||||
extinfo->dobj.dump = false;
|
extinfo->dobj.dump = false;
|
||||||
else
|
else
|
||||||
extinfo->dobj.dump = include_everything;
|
extinfo->dobj.dump = include_everything;
|
||||||
@ -8159,8 +8169,8 @@ dumpExtension(Archive *fout, ExtensionInfo *extinfo)
|
|||||||
/*
|
/*
|
||||||
* We unconditionally create the extension, so we must drop it if it
|
* We unconditionally create the extension, so we must drop it if it
|
||||||
* exists. This could happen if the user deleted 'plpgsql' and then
|
* exists. This could happen if the user deleted 'plpgsql' and then
|
||||||
* readded it, causing its oid to be greater than FirstNormalObjectId.
|
* readded it, causing its oid to be greater than g_last_builtin_oid.
|
||||||
* The FirstNormalObjectId test was kept to avoid repeatedly dropping
|
* The g_last_builtin_oid test was kept to avoid repeatedly dropping
|
||||||
* and recreating extensions like 'plpgsql'.
|
* and recreating extensions like 'plpgsql'.
|
||||||
*/
|
*/
|
||||||
appendPQExpBuffer(q, "DROP EXTENSION IF EXISTS %s;\n", qextname);
|
appendPQExpBuffer(q, "DROP EXTENSION IF EXISTS %s;\n", qextname);
|
||||||
@ -14257,10 +14267,10 @@ dumpTableConstraintComment(Archive *fout, ConstraintInfo *coninfo)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* findLastBuiltInOid -
|
* findLastBuiltinOid -
|
||||||
* find the last built in oid
|
* find the last built in oid
|
||||||
*
|
*
|
||||||
* For 7.1 and 7.2, we do this by retrieving datlastsysoid from the
|
* For 7.1 through 8.0, we do this by retrieving datlastsysoid from the
|
||||||
* pg_database entry for the current database
|
* pg_database entry for the current database
|
||||||
*/
|
*/
|
||||||
static Oid
|
static Oid
|
||||||
@ -14282,7 +14292,7 @@ findLastBuiltinOid_V71(Archive *fout, const char *dbname)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* findLastBuiltInOid -
|
* findLastBuiltinOid -
|
||||||
* find the last built in oid
|
* find the last built in oid
|
||||||
*
|
*
|
||||||
* For 7.0, we do this by assuming that the last thing that initdb does is to
|
* For 7.0, we do this by assuming that the last thing that initdb does is to
|
||||||
|
Loading…
x
Reference in New Issue
Block a user