Re: [feature]COPY FROM enable FORCE_NULL/FORCE_NOT_NULL on all columns - Mailing list pgsql-hackers

From Melih Mutlu
Subject Re: [feature]COPY FROM enable FORCE_NULL/FORCE_NOT_NULL on all columns
Date
Msg-id CAGPVpCS=9S55SH4h0o25SS_fwJaCZ67ZW-d8NMOJa5N6oT4quQ@mail.gmail.com
Whole thread Raw
In response to [feature]COPY FROM enable FORCE_NULL/FORCE_NOT_NULL on all columns  (Zhang Mingli <zmlpostgres@gmail.com>)
Responses Re: [feature]COPY FROM enable FORCE_NULL/FORCE_NOT_NULL on all columns  (Zhang Mingli <zmlpostgres@gmail.com>)
List pgsql-hackers
Hi,

Having  FORCE_NULL(*) and FORCE_NOT_NULL(*) sounds good, since postgres already has FORCE_QUOTE(*).

I just quickly tried out your patch. It worked for me as expected.

 One little suggestion:

+ if (cstate->opts.force_notnull_all)
+ {
+     int i;
+     for(i = 0; i < num_phys_attrs; i++)
+         cstate->opts.force_notnull_flags[i] = true;
+ }
 
Instead of setting force_null/force_notnull flags for all columns, what about simply setting "attnums" list to cstate->attnumlist?
Something like the following should be enough :
if (cstate->opts.force_null_all)
   attnums = cstate->attnumlist;
else
   attnums = CopyGetAttnums(tupDesc, cstate->rel, cstate->opts.force_null);

Thanks, 
--
Melih Mutlu
Microsoft

pgsql-hackers by date:

Previous
From: "Hayato Kuroda (Fujitsu)"
Date:
Subject: RE: Time delayed LR (WAS Re: logical replication restrictions)
Next
From: Amit Kapila
Date:
Subject: Re: Perform streaming logical transactions by background workers and parallel apply