非互換
FUJITSU Enterprise Postgres 11では、パーティションテーブルに対してCOPYコマンドを実行した場合、パーティションに付与されたCHECK制約を適用するように変更します。
パーティションに付与されたCHECK制約は適用されません。
[例]
0を含むデータt1_dataをCOPYする場合
=# CREATE TABLE t1 ( c1 int) PARTITION BY RANGE (c1); CREATE TABLE =# CREATE TABLE t1_p1 PARTITION OF t1 ( CHECK ( c1 > 1 )) FOR VALUES FROM (0) TO (10); CREATE TABLE =# COPY t1 FROM '/tmp/t1_data'; COPY 2
パーティションに付与されたCHECK制約を適用します。
[例]
0を含むデータt1_dataをCOPYする場合
=# CREATE TABLE t1 ( c1 int) PARTITION BY RANGE (c1); CREATE TABLE =# CREATE TABLE t1_p1 PARTITION OF t1 ( CHECK ( c1 > 1 )) FOR VALUES FROM (0) TO (10); CREATE TABLE =# COPY t1 FROM '/tmp/t1_data'; ERROR: リレーション"t1_p1"の新しい行は検査制約"t1_p1_c1_check"に違反しています DETAIL: 失敗した行は(0)を含みます CONTEXT: t1のCOPY、行 1: "0"
対処方法
ありません。