Don't use OidIsValid to check the return value of transformGenericOptions,
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>
Sat, 20 Dec 2008 09:40:56 +0000 (09:40 +0000)
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>
Sat, 20 Dec 2008 09:40:56 +0000 (09:40 +0000)
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

index 224a8f004e63a0b664237172a3f28af40e5c96d7..c9decf953cfbc0a5a6c9752ab556316705bde76a 100644 (file)
@@ -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;