diff options
Diffstat (limited to 'src/backend/commands/copy.c')
-rw-r--r-- | src/backend/commands/copy.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/backend/commands/copy.c b/src/backend/commands/copy.c index f14fae3308..c5d7d78645 100644 --- a/src/backend/commands/copy.c +++ b/src/backend/commands/copy.c @@ -512,9 +512,11 @@ ProcessCopyOptions(ParseState *pstate, } else if (strcmp(defel->defname, "force_not_null") == 0) { - if (opts_out->force_notnull) + if (opts_out->force_notnull || opts_out->force_notnull_all) errorConflictingDefElem(defel, pstate); - if (defel->arg && IsA(defel->arg, List)) + if (defel->arg && IsA(defel->arg, A_Star)) + opts_out->force_notnull_all = true; + else if (defel->arg && IsA(defel->arg, List)) opts_out->force_notnull = castNode(List, defel->arg); else ereport(ERROR, @@ -525,9 +527,11 @@ ProcessCopyOptions(ParseState *pstate, } else if (strcmp(defel->defname, "force_null") == 0) { - if (opts_out->force_null) + if (opts_out->force_null || opts_out->force_null_all) errorConflictingDefElem(defel, pstate); - if (defel->arg && IsA(defel->arg, List)) + if (defel->arg && IsA(defel->arg, A_Star)) + opts_out->force_null_all = true; + else if (defel->arg && IsA(defel->arg, List)) opts_out->force_null = castNode(List, defel->arg); else ereport(ERROR, |