@@ -215,6 +215,8 @@ AlterForeignDataWrapperOwner(const char *name, Oid newOwnerId)
215
215
Oid fdwId ;
216
216
Form_pg_foreign_data_wrapper form ;
217
217
218
+ rel = heap_open (ForeignDataWrapperRelationId , RowExclusiveLock );
219
+
218
220
/* Must be a superuser to change a FDW owner */
219
221
if (!superuser ())
220
222
ereport (ERROR ,
@@ -231,8 +233,6 @@ AlterForeignDataWrapperOwner(const char *name, Oid newOwnerId)
231
233
name ),
232
234
errhint ("The owner of a foreign-data wrapper must be a superuser." )));
233
235
234
- rel = heap_open (ForeignDataWrapperRelationId , RowExclusiveLock );
235
-
236
236
tup = SearchSysCacheCopy1 (FOREIGNDATAWRAPPERNAME , CStringGetDatum (name ));
237
237
238
238
if (!HeapTupleIsValid (tup ))
@@ -432,6 +432,8 @@ CreateForeignDataWrapper(CreateFdwStmt *stmt)
432
432
ObjectAddress myself ;
433
433
ObjectAddress referenced ;
434
434
435
+ rel = heap_open (ForeignDataWrapperRelationId , RowExclusiveLock );
436
+
435
437
/* Must be super user */
436
438
if (!superuser ())
437
439
ereport (ERROR ,
@@ -455,8 +457,6 @@ CreateForeignDataWrapper(CreateFdwStmt *stmt)
455
457
/*
456
458
* Insert tuple into pg_foreign_data_wrapper.
457
459
*/
458
- rel = heap_open (ForeignDataWrapperRelationId , RowExclusiveLock );
459
-
460
460
memset (values , 0 , sizeof (values ));
461
461
memset (nulls , false, sizeof (nulls ));
462
462
@@ -545,6 +545,8 @@ AlterForeignDataWrapper(AlterFdwStmt *stmt)
545
545
Oid fdwhandler ;
546
546
Oid fdwvalidator ;
547
547
548
+ rel = heap_open (ForeignDataWrapperRelationId , RowExclusiveLock );
549
+
548
550
/* Must be super user */
549
551
if (!superuser ())
550
552
ereport (ERROR ,
@@ -635,9 +637,6 @@ AlterForeignDataWrapper(AlterFdwStmt *stmt)
635
637
}
636
638
637
639
/* Everything looks good - update the tuple */
638
-
639
- rel = heap_open (ForeignDataWrapperRelationId , RowExclusiveLock );
640
-
641
640
tp = heap_modify_tuple (tp , RelationGetDescr (rel ),
642
641
repl_val , repl_null , repl_repl );
643
642
@@ -773,6 +772,8 @@ CreateForeignServer(CreateForeignServerStmt *stmt)
773
772
ObjectAddress referenced ;
774
773
ForeignDataWrapper * fdw ;
775
774
775
+ rel = heap_open (ForeignServerRelationId , RowExclusiveLock );
776
+
776
777
/* For now the owner cannot be specified on create. Use effective user ID. */
777
778
ownerId = GetUserId ();
778
779
@@ -798,8 +799,6 @@ CreateForeignServer(CreateForeignServerStmt *stmt)
798
799
/*
799
800
* Insert tuple into pg_foreign_server.
800
801
*/
801
- rel = heap_open (ForeignServerRelationId , RowExclusiveLock );
802
-
803
802
memset (values , 0 , sizeof (values ));
804
803
memset (nulls , false, sizeof (nulls ));
805
804
@@ -880,6 +879,8 @@ AlterForeignServer(AlterForeignServerStmt *stmt)
880
879
Oid srvId ;
881
880
Form_pg_foreign_server srvForm ;
882
881
882
+ rel = heap_open (ForeignServerRelationId , RowExclusiveLock );
883
+
883
884
tp = SearchSysCacheCopy1 (FOREIGNSERVERNAME ,
884
885
CStringGetDatum (stmt -> servername ));
885
886
@@ -945,9 +946,6 @@ AlterForeignServer(AlterForeignServerStmt *stmt)
945
946
}
946
947
947
948
/* Everything looks good - update the tuple */
948
-
949
- rel = heap_open (ForeignServerRelationId , RowExclusiveLock );
950
-
951
949
tp = heap_modify_tuple (tp , RelationGetDescr (rel ),
952
950
repl_val , repl_null , repl_repl );
953
951
@@ -1068,6 +1066,8 @@ CreateUserMapping(CreateUserMappingStmt *stmt)
1068
1066
ForeignServer * srv ;
1069
1067
ForeignDataWrapper * fdw ;
1070
1068
1069
+ rel = heap_open (UserMappingRelationId , RowExclusiveLock );
1070
+
1071
1071
useId = GetUserOidFromMapping (stmt -> username , false);
1072
1072
1073
1073
/* Check that the server exists. */
@@ -1093,8 +1093,6 @@ CreateUserMapping(CreateUserMappingStmt *stmt)
1093
1093
/*
1094
1094
* Insert tuple into pg_user_mapping.
1095
1095
*/
1096
- rel = heap_open (UserMappingRelationId , RowExclusiveLock );
1097
-
1098
1096
memset (values , 0 , sizeof (values ));
1099
1097
memset (nulls , false, sizeof (nulls ));
1100
1098
@@ -1161,6 +1159,8 @@ AlterUserMapping(AlterUserMappingStmt *stmt)
1161
1159
Oid umId ;
1162
1160
ForeignServer * srv ;
1163
1161
1162
+ rel = heap_open (UserMappingRelationId , RowExclusiveLock );
1163
+
1164
1164
useId = GetUserOidFromMapping (stmt -> username , false);
1165
1165
srv = GetForeignServerByName (stmt -> servername , false);
1166
1166
@@ -1218,9 +1218,6 @@ AlterUserMapping(AlterUserMappingStmt *stmt)
1218
1218
}
1219
1219
1220
1220
/* Everything looks good - update the tuple */
1221
-
1222
- rel = heap_open (UserMappingRelationId , RowExclusiveLock );
1223
-
1224
1221
tp = heap_modify_tuple (tp , RelationGetDescr (rel ),
1225
1222
repl_val , repl_null , repl_repl );
1226
1223
@@ -1344,11 +1341,13 @@ CreateForeignTable(CreateForeignTableStmt *stmt, Oid relid)
1344
1341
ForeignServer * server ;
1345
1342
1346
1343
/*
1347
- * Advance command counter to ensure the pg_attribute tuple visible; the
1348
- * tuple might be updated to add constraints in previous step.
1344
+ * Advance command counter to ensure the pg_attribute tuple is visible;
1345
+ * the tuple might be updated to add constraints in previous step.
1349
1346
*/
1350
1347
CommandCounterIncrement ();
1351
1348
1349
+ ftrel = heap_open (ForeignTableRelationId , RowExclusiveLock );
1350
+
1352
1351
/*
1353
1352
* For now the owner cannot be specified on create. Use effective user ID.
1354
1353
*/
@@ -1368,8 +1367,6 @@ CreateForeignTable(CreateForeignTableStmt *stmt, Oid relid)
1368
1367
/*
1369
1368
* Insert tuple into pg_foreign_table.
1370
1369
*/
1371
- ftrel = heap_open (ForeignTableRelationId , RowExclusiveLock );
1372
-
1373
1370
memset (values , 0 , sizeof (values ));
1374
1371
memset (nulls , false, sizeof (nulls ));
1375
1372
0 commit comments