diff options
Diffstat (limited to 'src/backend/catalog/toasting.c')
-rw-r--r-- | src/backend/catalog/toasting.c | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c index 147b5abc190..0db90c2011a 100644 --- a/src/backend/catalog/toasting.c +++ b/src/backend/catalog/toasting.c @@ -36,9 +36,11 @@ #include "utils/syscache.h" static void CheckAndCreateToastTable(Oid relOid, Datum reloptions, - LOCKMODE lockmode, bool check); + LOCKMODE lockmode, bool check, + Oid OIDOldToast); static bool create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid, - Datum reloptions, LOCKMODE lockmode, bool check); + Datum reloptions, LOCKMODE lockmode, bool check, + Oid OIDOldToast); static bool needs_toast_table(Relation rel); @@ -57,30 +59,34 @@ static bool needs_toast_table(Relation rel); void AlterTableCreateToastTable(Oid relOid, Datum reloptions, LOCKMODE lockmode) { - CheckAndCreateToastTable(relOid, reloptions, lockmode, true); + CheckAndCreateToastTable(relOid, reloptions, lockmode, true, InvalidOid); } void -NewHeapCreateToastTable(Oid relOid, Datum reloptions, LOCKMODE lockmode) +NewHeapCreateToastTable(Oid relOid, Datum reloptions, LOCKMODE lockmode, + Oid OIDOldToast) { - CheckAndCreateToastTable(relOid, reloptions, lockmode, false); + CheckAndCreateToastTable(relOid, reloptions, lockmode, false, OIDOldToast); } void NewRelationCreateToastTable(Oid relOid, Datum reloptions) { - CheckAndCreateToastTable(relOid, reloptions, AccessExclusiveLock, false); + CheckAndCreateToastTable(relOid, reloptions, AccessExclusiveLock, false, + InvalidOid); } static void -CheckAndCreateToastTable(Oid relOid, Datum reloptions, LOCKMODE lockmode, bool check) +CheckAndCreateToastTable(Oid relOid, Datum reloptions, LOCKMODE lockmode, + bool check, Oid OIDOldToast) { Relation rel; rel = table_open(relOid, lockmode); /* create_toast_table does all the work */ - (void) create_toast_table(rel, InvalidOid, InvalidOid, reloptions, lockmode, check); + (void) create_toast_table(rel, InvalidOid, InvalidOid, reloptions, lockmode, + check, OIDOldToast); table_close(rel, NoLock); } @@ -104,7 +110,7 @@ BootstrapToastTable(char *relName, Oid toastOid, Oid toastIndexOid) /* create_toast_table does all the work */ if (!create_toast_table(rel, toastOid, toastIndexOid, (Datum) 0, - AccessExclusiveLock, false)) + AccessExclusiveLock, false, InvalidOid)) elog(ERROR, "\"%s\" does not require a toast table", relName); @@ -121,7 +127,8 @@ BootstrapToastTable(char *relName, Oid toastOid, Oid toastIndexOid) */ static bool create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid, - Datum reloptions, LOCKMODE lockmode, bool check) + Datum reloptions, LOCKMODE lockmode, bool check, + Oid OIDOldToast) { Oid relOid = RelationGetRelid(rel); HeapTuple reltup; @@ -258,7 +265,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid, false, true, true, - InvalidOid, + OIDOldToast, NULL); Assert(toast_relid != InvalidOid); |