Re: Add new error_action COPY ON_ERROR "log"

Поиск
Список
Период
Сортировка
От Bharath Rupireddy
Тема Re: Add new error_action COPY ON_ERROR "log"
Дата
Msg-id CALj2ACVhub6gkOux+VAkMya6XzsauUBR-BrRGrNH9U9Wot5pCw@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Add new error_action COPY ON_ERROR "log"  (Masahiko Sawada <sawada.mshk@gmail.com>)
Ответы Re: Add new error_action COPY ON_ERROR "log"  (Masahiko Sawada <sawada.mshk@gmail.com>)
Список pgsql-hackers
On Mon, Mar 25, 2024 at 10:42 AM Masahiko Sawada <sawada.mshk@gmail.com> wrote:
>
> The current approach, eliminating the duplicated information in
> CONTEXT, seems good to me.

Thanks for looking into it.

> One question about the latest (v8) patch:
>
> +                   else
> +                       ereport(NOTICE,
> +                               errmsg("data type incompatibility at
> line %llu for column %s: null input",
> +                                      (unsigned long long) cstate->cur_lineno,
> +                                      cstate->cur_attname));
> +
>
> How can we reach this path? It seems we don't cover this path by the tests.

Tests don't cover that part, but it can be hit with something like
[1]. I've added a test for this.

Note the use of domain to provide an indirect way of providing null
constraint check. Otherwise, COPY FROM fails early in
CopyFrom->ExecConstraints if the NOT NULL constraint is directly
provided next to the column in the table [2].

Please see the attached v9 patch set.

[1]
create domain dcheck_ign_err2    varchar(15) NOT NULL;
CREATE TABLE check_ign_err2 (n int, m int[], k int, l dcheck_ign_err2);
COPY check_ign_err2 FROM STDIN WITH (on_error ignore, log_verbosity verbose);
1    {1}    1    'foo'
2    {2}    2    \N
\.

[2]
CREATE TABLE check_ign_err3 (n int, m int[], k int, l varchar(15) NOT NULL);
postgres=# COPY check_ign_err3 FROM STDIN WITH (on_error ignore,
log_verbosity verbose);
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.
>> 1    {1}     1       'foo'
2       {2}     2       \N>>
>> \.
ERROR:  null value in column "l" of relation "check_ign_err3" violates
not-null constraint
DETAIL:  Failing row contains (2, {2}, 2, null).
CONTEXT:  COPY check_ign_err3, line 2: "2       {2}     2       \N"

--
Bharath Rupireddy
PostgreSQL Contributors Team
RDS Open Source Databases
Amazon Web Services: https://aws.amazon.com

Вложения

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Ashutosh Bapat
Дата:
Сообщение: Re: A problem about partitionwise join
Следующее
От: Amit Kapila
Дата:
Сообщение: Re: Introduce XID age and inactive timeout based replication slot invalidation