Re: unique indexes on partitioned tables
Amit Langote <langote_amit_f8@lab.ntt.co.jp>
From: Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>
To: Alvaro Herrera <alvherre@alvh.no-ip.org>,
Peter Eisentraut <peter.eisentraut@2ndquadrant.com>,
Jaime Casanova <jaime.casanova@2ndquadrant.com>
Cc: Jesper Pedersen <jesper.pedersen@redhat.com>,
Pg Hackers <pgsql-hackers@postgresql.org>
Date: 2018-02-20T09:24:24Z
Lists: pgsql-hackers
Attachments
- v1-0001-Adjust-partitioned-table-tests-in-insert_conflict.patch (text/plain) patch v1-0001
- v1-0002-Fix-ON-CONFLICT-DO-NOTHING-with-partitioned-index.patch (text/plain) patch v1-0002
Hi. On 2018/02/20 5:45, Alvaro Herrera wrote: > I pushed this now, with fixes for the last few comments there were. I noticed with the commit that, while ON CONFLICT (conflict_target) DO UPDATE gives a less surprising error message by catching it in the parser, ON CONFLICT (conflict_target) DO NOTHING will go into the executor without the necessary code to handle the case. Example: create table p (a int primary key, b text) partition by list (a); create table p12 partition of p for values in (1, 2); create table p3 partition of p (a unique) for values in (3); insert into p values (1, 'a') on conflict (a) do nothing; ERROR: unexpected failure to find arbiter index Attached is a patch to fix that. Actually, there are two -- one that adjusts the partitioned table tests in insert_conflict.sql to have a partitioned unique index and another that fixes the code. I suppose we'd need to apply this temporarily until we fix the ON CONFLICT (conflict_target) case to be able to use partitioned indexes. Thanks, Amit
Commits
-
Avoid having two PKs in a partition
- 1f8a3327a9db 11.0 landed
-
Allow UNIQUE indexes on partitioned tables
- eb7ed3f30634 11.0 landed