Remove code handling FORCE_NULL and FORCE_NOT_NULL for COPY TO
authorMichael Paquier <michael@paquier.xyz>
Wed, 2 Nov 2022 01:15:19 +0000 (10:15 +0900)
committerMichael Paquier <michael@paquier.xyz>
Wed, 2 Nov 2022 01:15:19 +0000 (10:15 +0900)
These two options are only available with COPY FROM, so the extra logic
in charge of checking the validity of the attributes given has no
purpose.

Author: Zhang Mingli
Reviewed-by: Richard Guo, Kyotaro Horiguchi
Discussion: https://postgr.es/m/F28F0B5A-766F-4D33-BF44-43B3A052D833@gmail.com

src/backend/commands/copyto.c

index 2527e6605988eb40bd909e083a0208ac1e65a9c8..f26cc0d162f171a6dde12ed82ede882bd46baeb5 100644 (file)
@@ -608,52 +608,6 @@ BeginCopyTo(ParseState *pstate,
        }
    }
 
-   /* Convert FORCE_NOT_NULL name list to per-column flags, check validity */
-   cstate->opts.force_notnull_flags = (bool *) palloc0(num_phys_attrs * sizeof(bool));
-   if (cstate->opts.force_notnull)
-   {
-       List       *attnums;
-       ListCell   *cur;
-
-       attnums = CopyGetAttnums(tupDesc, cstate->rel, cstate->opts.force_notnull);
-
-       foreach(cur, attnums)
-       {
-           int         attnum = lfirst_int(cur);
-           Form_pg_attribute attr = TupleDescAttr(tupDesc, attnum - 1);
-
-           if (!list_member_int(cstate->attnumlist, attnum))
-               ereport(ERROR,
-                       (errcode(ERRCODE_INVALID_COLUMN_REFERENCE),
-                        errmsg("FORCE_NOT_NULL column \"%s\" not referenced by COPY",
-                               NameStr(attr->attname))));
-           cstate->opts.force_notnull_flags[attnum - 1] = true;
-       }
-   }
-
-   /* Convert FORCE_NULL name list to per-column flags, check validity */
-   cstate->opts.force_null_flags = (bool *) palloc0(num_phys_attrs * sizeof(bool));
-   if (cstate->opts.force_null)
-   {
-       List       *attnums;
-       ListCell   *cur;
-
-       attnums = CopyGetAttnums(tupDesc, cstate->rel, cstate->opts.force_null);
-
-       foreach(cur, attnums)
-       {
-           int         attnum = lfirst_int(cur);
-           Form_pg_attribute attr = TupleDescAttr(tupDesc, attnum - 1);
-
-           if (!list_member_int(cstate->attnumlist, attnum))
-               ereport(ERROR,
-                       (errcode(ERRCODE_INVALID_COLUMN_REFERENCE),
-                        errmsg("FORCE_NULL column \"%s\" not referenced by COPY",
-                               NameStr(attr->attname))));
-           cstate->opts.force_null_flags[attnum - 1] = true;
-       }
-   }
-
    /* Use client encoding when ENCODING option is not specified. */
    if (cstate->opts.file_encoding < 0)
        cstate->file_encoding = pg_get_client_encoding();