Re: POC PATCH: copy from ... exceptions to: (was Re: VLDB Features) - Mailing list pgsql-hackers
From | torikoshia |
---|---|
Subject | Re: POC PATCH: copy from ... exceptions to: (was Re: VLDB Features) |
Date | |
Msg-id | d73736e0614b4cf2330786b9c2ff93a5@oss.nttdata.com Whole thread Raw |
In response to | Re: POC PATCH: copy from ... exceptions to: (was Re: VLDB Features) (Alexander Korotkov <aekorotkov@gmail.com>) |
Responses |
Re: POC PATCH: copy from ... exceptions to: (was Re: VLDB Features)
|
List | pgsql-hackers |
On 2024-01-16 00:17, Alexander Korotkov wrote: > On Mon, Jan 15, 2024 at 8:44 AM Masahiko Sawada <sawada.mshk@gmail.com> > wrote: >> >> On Mon, Jan 15, 2024 at 8:21 AM Alexander Korotkov >> <aekorotkov@gmail.com> wrote: >> > >> > On Sun, Jan 14, 2024 at 10:35 PM Masahiko Sawada <sawada.mshk@gmail.com> wrote: >> > > Thank you for updating the patch. Here are two comments: >> > > >> > > --- >> > > + if (cstate->opts.save_error_to != COPY_SAVE_ERROR_TO_UNSPECIFIED && >> > > + cstate->num_errors > 0) >> > > + ereport(WARNING, >> > > + errmsg("%zd rows were skipped due to data type incompatibility", >> > > + cstate->num_errors)); >> > > + >> > > /* Done, clean up */ >> > > error_context_stack = errcallback.previous; >> > > >> > > If a malformed input is not the last data, the context message seems odd: >> > > >> > > postgres(1:1769258)=# create table test (a int); >> > > CREATE TABLE >> > > postgres(1:1769258)=# copy test from stdin (save_error_to none); >> > > Enter data to be copied followed by a newline. >> > > End with a backslash and a period on a line by itself, or an EOF signal. >> > > >> a >> > > >> 1 >> > > >> >> > > 2024-01-15 05:05:53.980 JST [1769258] WARNING: 1 rows were skipped >> > > due to data type incompatibility >> > > 2024-01-15 05:05:53.980 JST [1769258] CONTEXT: COPY test, line 3: "" >> > > COPY 1 >> > > >> > > I think it's better to report the WARNING after resetting the >> > > error_context_stack. Or is a WARNING really appropriate here? The >> > > v15-0001-Make-COPY-FROM-more-error-tolerant.patch[1] uses NOTICE but >> > > the v1-0001-Add-new-COPY-option-SAVE_ERROR_TO.patch[2] changes it to >> > > WARNING without explanation. >> > >> > Thank you for noticing this. I think NOTICE is more appropriate here. >> > There is nothing to "worry" about: the user asked to ignore the errors >> > and we did. And yes, it doesn't make sense to use the last line as >> > the context. Fixed. >> > >> > > --- >> > > +-- test missing data: should fail >> > > +COPY check_ign_err FROM STDIN WITH (save_error_to none); >> > > +1 {1} >> > > +\. >> > > >> > > We might want to cover the extra data cases too. >> > >> > Agreed, the relevant test is added. >> >> Thank you for updating the patch. I have one minor point: >> >> + if (cstate->opts.save_error_to != >> COPY_SAVE_ERROR_TO_UNSPECIFIED && >> + cstate->num_errors > 0) >> + ereport(NOTICE, >> + errmsg("%zd rows were skipped due to >> data type incompatibility", >> + cstate->num_errors)); >> + >> >> We can use errmsg_plural() instead. > > Makes sense. Fixed. > >> I have a question about the option values; do you think we need to >> have another value of SAVE_ERROR_TO option to explicitly specify the >> current default behavior, i.e. not accept any error? With the v4 >> patch, the user needs to omit SAVE_ERROR_TO option to accept errors >> during COPY FROM. If we change the default behavior in the future, >> many users will be affected and probably end up changing their >> applications to keep the current default behavior. > > Valid point. I've implemented the handling of CopySaveErrorToChoice > in a similar way to CopyHeaderChoice. > > Please, check the revised patch attached. Thanks for updating the patch! Here is a minor comment: > +/* > + * Extract a defGetCopySaveErrorToChoice value from a DefElem. > + */ Should be Extract a "CopySaveErrorToChoice"? BTW I'm thinking we should add a column to pg_stat_progress_copy that counts soft errors. I'll suggest this in another thread. > ------ > Regards, > Alexander Korotkov -- Regards, -- Atsushi Torikoshi NTT DATA Group Corporation
pgsql-hackers by date: