On Wed, 13 Nov 2024 21:48:10 +0900
torikoshia <torikos...@oss.nttdata.com> wrote:

> On 2024-11-12 14:51, Yugo Nagata wrote:
> 
> Thanks for your review!
> 
> > On Tue, 12 Nov 2024 10:16:50 +0900
> > torikoshia <torikos...@oss.nttdata.com> wrote:
> > 
> >> On 2024-11-12 01:49, Fujii Masao wrote:
> >> > On 2024/11/11 21:45, torikoshia wrote:
> >> >>> Thanks for adding the comment. It clearly states that REJECT_LIMIT
> >> >>> can be
> >> >>> a single-quoted string. However, it might also be helpful to mention
> >> >>> that
> >> >>> it can be provided as an int64 in the COPY command option. How about
> >> >>> updating it like this?
> >> >>>
> >> >>> ------------------------------------
> >> >>> REJECT_LIMIT can be specified in two ways: as an int64 for the COPY
> >> >>> command
> >> >>> option or as a single-quoted string for the foreign table option
> >> >>> using
> >> >>> file_fdw. Therefore this function needs to handle both formats.
> >> >>> ------------------------------------
> >> >>
> >> >> Thanks! it seems better.
> >> >>
> >> >>
> >> >> Attached v3 patch.
> >> >
> >> > Thanks for updating the patch! It looks like you forgot to attach it,
> >> > though.
> >> 
> >> Oops, thanks for pointing it out.
> >> Here it is.
> > 
> > I have one minor comment.
> > 
> > +                           ereport(ERROR,
> > +                                           
> > (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
> > +                                            errmsg("skipped more than 
> > REJECT_LIMIT (%lld) rows due to data
> > type incompatibility",
> > +                                                           (long long) 
> > cstate->opts.reject_limit)));
> > 
> > Do we have to keep this message consistent with ones of COPY command?
> > With foreign data wrappers, it seems common that the option name is 
> > passed in
> > lowercase, so is it better to use "skipped more than reject_limit ..." 
> > rather
> > than using uppercase?
> 
> Agreed.
> Attached v4 patch.


Thank you for updating the patch.

However, I noticed that file_fdw could output the following error using 
uppercase
when an invalid value is set to the reject_limit option,

 ALTER FOREIGN TABLE agg_bad OPTIONS (ADD reject_limit '-1');
 ERROR:  REJECT_LIMIT (-1) must be greater than zero

as well as if reject_limit is set when on_error != 'ignore'.

 ALTER FOREIGN TABLE agg_bad OPTIONS (ADD reject_limit '1'); -- ERROR
 ERROR:  COPY REJECT_LIMIT requires ON_ERROR to be set to IGNORE

Also, in the regression tests, I found similar behaviours on existing options,
for example;

 CREATE FOREIGN TABLE tbl () SERVER file_server OPTIONS (format 'xml');  -- 
ERROR
 ERROR:  COPY format "xml" not recognized
 CREATE FOREIGN TABLE tbl () SERVER file_server OPTIONS (format 'text', quote 
':');          -- ERROR
 ERROR:  COPY QUOTE requires CSV mode
 CREATE FOREIGN TABLE tbl () SERVER file_server OPTIONS (format 'text', escape 
':');         -- ERROR
 ...

These messages may be unexpected for some users because the documentation of
fild_fdw does not explicitly describe that file_fdw uses COPY internally. 
(I can find several wordings like "as COPY", though.) 
However, since the current file_fdw already has such messages, I came to think
making the messages on "reject_limit" consistent with COPY is reasonable.
I mean, the previous version of the message seems fine.


As another comment, do we need to add validator test for on_error and
reject_limit as similar to other options?


Regards,
Yugo Nagata

-- 
Yugo NAGATA <nag...@sraoss.co.jp>


Reply via email to