Thread: BUG #15357: Data goes to wrong partition in HASH Partitioned table
The following bug has been logged on the website: Bug reference: 15357 Logged by: Jobin Augustine Email address: jobin.augustine@percona.com PostgreSQL version: 11beta3 Operating system: Linux (CentOS 7.4 64 bit) Description: Steps to reproduce ============= Step 1. Create a hash partitioned table postgres=# CREATE TABLE hash_parted ( postgres(# a int postgres(# ) PARTITION BY HASH (a); CREATE TABLE Step 2. Create a partition which accpets rows with remainder 0 after a modulus operation postgres=# CREATE TABLE hpart_1 PARTITION OF hash_parted FOR VALUES WITH (MODULUS 10, REMAINDER 0); CREATE TABLE Step 3. Try inserting a row which will have remainder 0 after modulus operation postgres=# insert into hash_parted values (10); ERROR: no partition of relation "hash_parted" found for row DETAIL: Partition key of the failing row contains (a) = (10). FAILED! Step 4. Create a partition which accepts the remainder 9 after modulo operation postgres=# CREATE TABLE hpart_10 PARTITION OF hash_parted FOR VALUES WITH (MODULUS 10, REMAINDER 9); CREATE TABLE Step 5. Try inserting a value 10 postgres=# insert into hash_parted values (10); INSERT 0 1 Data gets inserted into a partition which is supposed to accept reminder 9 after modulo operation.
On 2018-Aug-28, PG Bug reporting form wrote: > Step 3. Try inserting a row which will have remainder 0 after modulus > operation > postgres=# insert into hash_parted values (10); > ERROR: no partition of relation "hash_parted" found for row > DETAIL: Partition key of the failing row contains (a) = (10). > > FAILED! The hash function for integers does not return the input integer, therefore the modulus is not that of the integer value. This is not a bug. -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services