@@ -202,6 +202,8 @@ AlterForeignDataWrapperOwner(const char *name, Oid newOwnerId)
202
202
Oid fdwId ;
203
203
Form_pg_foreign_data_wrapper form ;
204
204
205
+ rel = heap_open (ForeignDataWrapperRelationId , RowExclusiveLock );
206
+
205
207
/* Must be a superuser to change a FDW owner */
206
208
if (!superuser ())
207
209
ereport (ERROR ,
@@ -218,8 +220,6 @@ AlterForeignDataWrapperOwner(const char *name, Oid newOwnerId)
218
220
name ),
219
221
errhint ("The owner of a foreign-data wrapper must be a superuser." )));
220
222
221
- rel = heap_open (ForeignDataWrapperRelationId , RowExclusiveLock );
222
-
223
223
tup = SearchSysCacheCopy1 (FOREIGNDATAWRAPPERNAME , CStringGetDatum (name ));
224
224
225
225
if (!HeapTupleIsValid (tup ))
@@ -340,6 +340,8 @@ CreateForeignDataWrapper(CreateFdwStmt *stmt)
340
340
Datum fdwoptions ;
341
341
Oid ownerId ;
342
342
343
+ rel = heap_open (ForeignDataWrapperRelationId , RowExclusiveLock );
344
+
343
345
/* Must be super user */
344
346
if (!superuser ())
345
347
ereport (ERROR ,
@@ -363,8 +365,6 @@ CreateForeignDataWrapper(CreateFdwStmt *stmt)
363
365
/*
364
366
* Insert tuple into pg_foreign_data_wrapper.
365
367
*/
366
- rel = heap_open (ForeignDataWrapperRelationId , RowExclusiveLock );
367
-
368
368
memset (values , 0 , sizeof (values ));
369
369
memset (nulls , false, sizeof (nulls ));
370
370
@@ -435,6 +435,8 @@ AlterForeignDataWrapper(AlterFdwStmt *stmt)
435
435
Datum datum ;
436
436
Oid fdwvalidator ;
437
437
438
+ rel = heap_open (ForeignDataWrapperRelationId , RowExclusiveLock );
439
+
438
440
/* Must be super user */
439
441
if (!superuser ())
440
442
ereport (ERROR ,
@@ -513,9 +515,6 @@ AlterForeignDataWrapper(AlterFdwStmt *stmt)
513
515
}
514
516
515
517
/* Everything looks good - update the tuple */
516
-
517
- rel = heap_open (ForeignDataWrapperRelationId , RowExclusiveLock );
518
-
519
518
tp = heap_modify_tuple (tp , RelationGetDescr (rel ),
520
519
repl_val , repl_null , repl_repl );
521
520
@@ -613,6 +612,8 @@ CreateForeignServer(CreateForeignServerStmt *stmt)
613
612
ObjectAddress referenced ;
614
613
ForeignDataWrapper * fdw ;
615
614
615
+ rel = heap_open (ForeignServerRelationId , RowExclusiveLock );
616
+
616
617
/* For now the owner cannot be specified on create. Use effective user ID. */
617
618
ownerId = GetUserId ();
618
619
@@ -638,8 +639,6 @@ CreateForeignServer(CreateForeignServerStmt *stmt)
638
639
/*
639
640
* Insert tuple into pg_foreign_server.
640
641
*/
641
- rel = heap_open (ForeignServerRelationId , RowExclusiveLock );
642
-
643
642
memset (values , 0 , sizeof (values ));
644
643
memset (nulls , false, sizeof (nulls ));
645
644
@@ -714,6 +713,8 @@ AlterForeignServer(AlterForeignServerStmt *stmt)
714
713
Oid srvId ;
715
714
Form_pg_foreign_server srvForm ;
716
715
716
+ rel = heap_open (ForeignServerRelationId , RowExclusiveLock );
717
+
717
718
tp = SearchSysCacheCopy1 (FOREIGNSERVERNAME ,
718
719
CStringGetDatum (stmt -> servername ));
719
720
@@ -779,9 +780,6 @@ AlterForeignServer(AlterForeignServerStmt *stmt)
779
780
}
780
781
781
782
/* Everything looks good - update the tuple */
782
-
783
- rel = heap_open (ForeignServerRelationId , RowExclusiveLock );
784
-
785
783
tp = heap_modify_tuple (tp , RelationGetDescr (rel ),
786
784
repl_val , repl_null , repl_repl );
787
785
@@ -901,6 +899,8 @@ CreateUserMapping(CreateUserMappingStmt *stmt)
901
899
ForeignServer * srv ;
902
900
ForeignDataWrapper * fdw ;
903
901
902
+ rel = heap_open (UserMappingRelationId , RowExclusiveLock );
903
+
904
904
useId = GetUserOidFromMapping (stmt -> username , false);
905
905
906
906
/* Check that the server exists. */
@@ -926,8 +926,6 @@ CreateUserMapping(CreateUserMappingStmt *stmt)
926
926
/*
927
927
* Insert tuple into pg_user_mapping.
928
928
*/
929
- rel = heap_open (UserMappingRelationId , RowExclusiveLock );
930
-
931
929
memset (values , 0 , sizeof (values ));
932
930
memset (nulls , false, sizeof (nulls ));
933
931
@@ -986,6 +984,8 @@ AlterUserMapping(AlterUserMappingStmt *stmt)
986
984
Oid umId ;
987
985
ForeignServer * srv ;
988
986
987
+ rel = heap_open (UserMappingRelationId , RowExclusiveLock );
988
+
989
989
useId = GetUserOidFromMapping (stmt -> username , false);
990
990
srv = GetForeignServerByName (stmt -> servername , false);
991
991
@@ -1043,9 +1043,6 @@ AlterUserMapping(AlterUserMappingStmt *stmt)
1043
1043
}
1044
1044
1045
1045
/* Everything looks good - update the tuple */
1046
-
1047
- rel = heap_open (UserMappingRelationId , RowExclusiveLock );
1048
-
1049
1046
tp = heap_modify_tuple (tp , RelationGetDescr (rel ),
1050
1047
repl_val , repl_null , repl_repl );
1051
1048
0 commit comments