From cef8efc62d96f4d13adc917d12cece8bba21300f Mon Sep 17 00:00:00 2001
From: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Date: Sat, 20 Dec 2008 09:40:56 +0000
Subject: [PATCH] Don't use OidIsValid to check the return value of
 transformGenericOptions, because transformGenericOptions returns an array,
 not an Oid. I'm not sure if this fixes the crashes seen in buildfarm, but it
 should be fixed anyway.

---
 src/backend/commands/foreigncmds.c | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/src/backend/commands/foreigncmds.c b/src/backend/commands/foreigncmds.c
index 224a8f004e6..c9decf953cf 100644
--- a/src/backend/commands/foreigncmds.c
+++ b/src/backend/commands/foreigncmds.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/commands/foreigncmds.c,v 1.1 2008/12/19 16:25:17 petere Exp $
+ *	  $PostgreSQL: pgsql/src/backend/commands/foreigncmds.c,v 1.2 2008/12/20 09:40:56 heikki Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -316,7 +316,7 @@ CreateForeignDataWrapper(CreateFdwStmt *stmt)
 	bool			nulls[Natts_pg_foreign_data_wrapper];
 	HeapTuple		tuple;
 	Oid				fdwId;
-	Datum			fdwoptions = InvalidOid;
+	Datum			fdwoptions;
 	Oid				ownerId;
 	ForeignDataWrapperLibrary  *fdwlib;
 
@@ -362,7 +362,7 @@ CreateForeignDataWrapper(CreateFdwStmt *stmt)
 	fdwoptions = transformGenericOptions(0, stmt->options, FdwOpt, NULL,
 										 fdwlib->validateOptionList);
 
-	if (OidIsValid(fdwoptions))
+	if (PointerIsValid(DatumGetPointer(fdwoptions)))
 		values[Anum_pg_foreign_data_wrapper_fdwoptions - 1] = fdwoptions;
 	else
 		nulls[Anum_pg_foreign_data_wrapper_fdwoptions - 1] = true;
@@ -465,7 +465,7 @@ AlterForeignDataWrapper(AlterFdwStmt *stmt)
 		datum = transformGenericOptions(datum, stmt->options, FdwOpt,
 										NULL, fdwlib->validateOptionList);
 
-		if (OidIsValid(datum))
+		if (PointerIsValid(DatumGetPointer(datum)))
 			repl_val[Anum_pg_foreign_data_wrapper_fdwoptions - 1] = ObjectIdGetDatum(datum);
 		else
 			repl_null[Anum_pg_foreign_data_wrapper_fdwoptions - 1] = true;
@@ -565,7 +565,7 @@ void
 CreateForeignServer(CreateForeignServerStmt *stmt)
 {
 	Relation		rel;
-	Datum			srvoptions = InvalidOid;
+	Datum			srvoptions;
 	Datum			values[Natts_pg_foreign_server];
 	bool			nulls[Natts_pg_foreign_server];
 	HeapTuple		tuple;
@@ -631,7 +631,7 @@ CreateForeignServer(CreateForeignServerStmt *stmt)
 	srvoptions = transformGenericOptions(0, stmt->options, ServerOpt, fdw,
 										 fdw->lib->validateOptionList);
 
-	if (OidIsValid(srvoptions))
+	if (PointerIsValid(DatumGetPointer(srvoptions)))
 		values[Anum_pg_foreign_server_srvoptions - 1] = srvoptions;
 	else
 		nulls[Anum_pg_foreign_server_srvoptions - 1] = true;
@@ -727,7 +727,7 @@ AlterForeignServer(AlterForeignServerStmt *stmt)
 		datum = transformGenericOptions(datum, stmt->options, ServerOpt,
 										fdw, fdw->lib->validateOptionList);
 
-		if (OidIsValid(datum))
+		if (PointerIsValid(DatumGetPointer(datum)))
 			repl_val[Anum_pg_foreign_server_srvoptions - 1] = datum;
 		else
 			repl_null[Anum_pg_foreign_server_srvoptions - 1] = true;
@@ -822,7 +822,7 @@ void
 CreateUserMapping(CreateUserMappingStmt *stmt)
 {
 	Relation			rel;
-	Datum				useoptions = InvalidOid;
+	Datum				useoptions;
 	Datum				values[Natts_pg_user_mapping];
 	bool				nulls[Natts_pg_user_mapping];
 	HeapTuple			tuple;
@@ -877,7 +877,7 @@ CreateUserMapping(CreateUserMappingStmt *stmt)
 	useoptions = transformGenericOptions(0, stmt->options, UserMappingOpt,
 										 fdw, fdw->lib->validateOptionList);
 
-	if (OidIsValid(useoptions))
+	if (PointerIsValid(DatumGetPointer(useoptions)))
 		values[Anum_pg_user_mapping_umoptions - 1] = useoptions;
 	else
 		nulls[Anum_pg_user_mapping_umoptions - 1] = true;
@@ -977,7 +977,7 @@ AlterUserMapping(AlterUserMappingStmt *stmt)
 		datum = transformGenericOptions(datum, stmt->options, UserMappingOpt,
 										fdw, fdw->lib->validateOptionList);
 
-		if (OidIsValid(datum))
+		if (PointerIsValid(DatumGetPointer(datum)))
 			repl_val[Anum_pg_user_mapping_umoptions - 1] = datum;
 		else
 			repl_null[Anum_pg_user_mapping_umoptions - 1] = true;
-- 
GitLab