Robert has committed[1] patch 0001 in V26 series, hence the patch numbering
in V27 is now decreased by 1 for each patch as compared to V26.
Hi,
I have applied v27 patches and while testing got below observation.
Observation: in below partition table, d1 constraints not allowing NULL to be inserted in b column but I am able to insert it.
steps to reproduce: create table d0 (a int, b int) partition by range(a,b); create table d1 partition of d0 for values from (0,0) to (maxvalue,maxvalue);
postgres=# insert into d0 values (0,null); INSERT 0 1 postgres=# \d+ d1 Table "public.d1" Column | Type | Collation | Nullable | Default | Storage | Stats target | Description --------+---------+-----------+----------+---------+---------+--------------+------------- a | integer | | | | plain | | b | integer | | | | plain | | Partition of: d0 FOR VALUES FROM (0, 0) TO (MAXVALUE, MAXVALUE) Partition constraint: ((a IS NOT NULL) AND (b IS NOT NULL) AND ((a > 0) OR ((a = 0) AND (b >= 0))))
postgres=# select tableoid::regclass,* from d0; tableoid | a | b ----------+---+--- d1 | 0 | (1 row)
Good catch. Thanks Rajkumar.
This seems to be happening because of the following changes made in
get_partition_for_tuple() for default range partition support as part of patch 0002.