Oddity in COPY FROM handling of check constraints on partition tables

Поиск
Список
Период
Сортировка
От Etsuro Fujita
Тема Oddity in COPY FROM handling of check constraints on partition tables
Дата
Msg-id 5ABA4074.1090500@lab.ntt.co.jp
обсуждение исходный текст
Ответы Re: Oddity in COPY FROM handling of check constraints on partitiontables  (Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>)
Re: Oddity in COPY FROM handling of check constraints on partition tables  (Robert Haas <robertmhaas@gmail.com>)
Список pgsql-hackers
Hi,

While updating the tuple-routing-for-foreign-partitions patch, I noticed
oddity in the COPY FROM handling of check constraints on partition
tables.  Here is an example:

postgres=# create table pt (a int, b int) partition by list (a);
CREATE TABLE
postgres=# create table p1 partition of pt for values in (1);
CREATE TABLE
postgres=# alter table p1 add check (b > 0);
ALTER TABLE
postgres=# copy pt from '/home/pgsql/copy_data.csv' (format csv,
delimiter ',');
COPY 1
postgres=# select tableoid::regclass, * from pt;
 tableoid | a | b
----------+---+----
 p1       | 1 | -1
(1 row)

where the file '/home/pgsql/copy_data.csv' has a single row data

$ cat /home/pgsql/copy_data.csv
1,-1

which violates the constraint on the column b (ie, b > 0), so this
should abort.  The reason for that is because CopyFrom looks at the
parent relation's constraints, not the partition's constraints, when
checking the constraint against the input row.

Attached is a patch for fixing this issue.

Best regards,
Etsuro Fujita

Вложения

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

Предыдущее
От: Tomas Vondra
Дата:
Сообщение: Re: pg_class.reltuples of brin indexes
Следующее
От: Michael Paquier
Дата:
Сообщение: Re: Problem while setting the fpw with SIGHUP