3737/* Potentially set by contrib/pg_upgrade_support functions */
3838Oid binary_upgrade_next_toast_pg_type_oid = InvalidOid ;
3939
40- static void CheckAndCreateToastTable (Oid relOid , Datum reloptions ,
40+ static void CheckAndCreateToastTable (Oid relOid , Oid tablespaceOid , Datum reloptions ,
4141 LOCKMODE lockmode , bool check ,
4242 bool is_part_child , bool is_part_parent );
43- static bool create_toast_table (Relation rel , Oid toastOid , Oid toastIndexOid ,
43+ static bool create_toast_table (Relation rel , Oid toastOid , Oid toastIndexOid , Oid tablespaceOid ,
4444 Datum reloptions , LOCKMODE lockmode , bool check ,
4545 bool is_part_child , bool is_part_parent );
4646static bool needs_toast_table (Relation rel );
7575AlterTableCreateToastTable (Oid relOid , Datum reloptions , LOCKMODE lockmode ,
7676 bool is_part_child , bool is_part_parent )
7777{
78- CheckAndCreateToastTable (relOid , reloptions , lockmode , true,
78+ CheckAndCreateToastTable (relOid , InvalidOid , reloptions , lockmode , true,
7979 is_part_child , is_part_parent );
8080}
8181
8282void
83- NewHeapCreateToastTable (Oid relOid , Datum reloptions , LOCKMODE lockmode ,
83+ NewHeapCreateToastTable (Oid relOid , Oid tablespaceOid , Datum reloptions , LOCKMODE lockmode ,
8484 bool is_part_child , bool is_part_parent )
8585{
86- CheckAndCreateToastTable (relOid , reloptions , lockmode , false,
86+ CheckAndCreateToastTable (relOid , tablespaceOid , reloptions , lockmode , false,
8787 is_part_child , is_part_parent );
8888}
8989
@@ -108,20 +108,20 @@ NewRelationCreateToastTable(Oid relOid, Datum reloptions,
108108 else
109109 lockmode = AccessExclusiveLock ;
110110
111- CheckAndCreateToastTable (relOid , reloptions , AccessExclusiveLock , false,
111+ CheckAndCreateToastTable (relOid , InvalidOid , reloptions , AccessExclusiveLock , false,
112112 is_part_child , is_part_parent );
113113}
114114
115115static void
116- CheckAndCreateToastTable (Oid relOid , Datum reloptions , LOCKMODE lockmode , bool check ,
116+ CheckAndCreateToastTable (Oid relOid , Oid tablespaceOid , Datum reloptions , LOCKMODE lockmode , bool check ,
117117 bool is_part_child , bool is_part_parent )
118118{
119119 Relation rel ;
120120
121121 rel = heap_open (relOid , lockmode );
122122
123123 /* create_toast_table does all the work */
124- (void ) create_toast_table (rel , InvalidOid , InvalidOid , reloptions , lockmode , check ,
124+ (void ) create_toast_table (rel , InvalidOid , InvalidOid , tablespaceOid , reloptions , lockmode , check ,
125125 is_part_child , is_part_parent );
126126
127127 heap_close (rel , NoLock );
@@ -147,7 +147,7 @@ BootstrapToastTable(char *relName, Oid toastOid, Oid toastIndexOid)
147147 relName )));
148148
149149 /* create_toast_table does all the work */
150- if (!create_toast_table (rel , toastOid , toastIndexOid , (Datum ) 0 ,
150+ if (!create_toast_table (rel , toastOid , toastIndexOid , InvalidOid , (Datum ) 0 ,
151151 AccessExclusiveLock , false,
152152 false, false))
153153 elog (ERROR , "\"%s\" does not require a toast table" ,
@@ -165,7 +165,7 @@ BootstrapToastTable(char *relName, Oid toastOid, Oid toastIndexOid)
165165 * bootstrap they can be nonzero to specify hand-assigned OIDs
166166 */
167167static bool
168- create_toast_table (Relation rel , Oid toastOid , Oid toastIndexOid ,
168+ create_toast_table (Relation rel , Oid toastOid , Oid toastIndexOid , Oid tablespaceOid ,
169169 Datum reloptions , LOCKMODE lockmode , bool check ,
170170 bool is_part_child , bool is_part_parent )
171171{
@@ -319,7 +319,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
319319
320320 toast_relid = heap_create_with_catalog (toast_relname ,
321321 namespaceid ,
322- rel -> rd_rel -> reltablespace ,
322+ tablespaceOid ? tablespaceOid : rel -> rd_rel -> reltablespace ,
323323 toastOid ,
324324 toast_typid ,
325325 InvalidOid ,
@@ -397,7 +397,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
397397 indexInfo ,
398398 list_make2 ("chunk_id" , "chunk_seq" ),
399399 BTREE_AM_OID ,
400- rel -> rd_rel -> reltablespace ,
400+ tablespaceOid ? tablespaceOid : rel -> rd_rel -> reltablespace ,
401401 collationObjectId , classObjectId , coloptions , (Datum ) 0 ,
402402 true, false, false, false,
403403 true, false, false, true, NULL );
0 commit comments