aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/commands/foreigncmds.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/backend/commands/foreigncmds.c b/src/backend/commands/foreigncmds.c
index 21d52e06ba0..643ba91bfe1 100644
--- a/src/backend/commands/foreigncmds.c
+++ b/src/backend/commands/foreigncmds.c
@@ -165,8 +165,18 @@ transformGenericOptions(Oid catalogId,
result = optionListToArray(resultOptions);
- if (OidIsValid(fdwvalidator) && DatumGetPointer(result) != NULL)
- OidFunctionCall2(fdwvalidator, result, ObjectIdGetDatum(catalogId));
+ if (OidIsValid(fdwvalidator))
+ {
+ Datum valarg = result;
+
+ /*
+ * Pass a null options list as an empty array, so that validators
+ * don't have to be declared non-strict to handle the case.
+ */
+ if (DatumGetPointer(valarg) == NULL)
+ valarg = PointerGetDatum(construct_empty_array(TEXTOID));
+ OidFunctionCall2(fdwvalidator, valarg, ObjectIdGetDatum(catalogId));
+ }
return result;
}