1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-30 11:03:19 +03:00

Re-allow INSERT .. ON CONFLICT DO NOTHING on partitioned tables.

Commit 8355a011a0 was reverted in
f05230752d, but this attempt is
hopefully better-considered: we now pass the correct value to
ExecOpenIndices, which should avoid the crash that we hit before.

Amit Langote, reviewed by Simon Riggs and by me.  Some final
editing by me.

Discussion: http://postgr.es/m/7ff1e8ec-dc39-96b1-7f47-ff5965dceeac@lab.ntt.co.jp
This commit is contained in:
Robert Haas
2017-12-01 12:53:21 -05:00
parent 1cbc17aaca
commit 87c37e3291
8 changed files with 51 additions and 20 deletions

View File

@ -3288,10 +3288,15 @@ ALTER TABLE measurement ATTACH PARTITION measurement_y2008m02
<listitem>
<para>
Using the <literal>ON CONFLICT</literal> clause with partitioned tables
will cause an error, because unique or exclusion constraints can only be
created on individual partitions. There is no support for enforcing
uniqueness (or an exclusion constraint) across an entire partitioning
hierarchy.
will cause an error if the conflict target is specified (see
<xref linkend="sql-on-conflict" /> for more details on how the clause
works). Therefore, it is not possible to specify
<literal>DO UPDATE</literal> as the alternative action, because
specifying the conflict target is mandatory in that case. On the other
hand, specifying <literal>DO NOTHING</literal> as the alternative action
works fine provided the conflict target is not specified. In that case,
unique constraints (or exclusion constraints) of the individual leaf
partitions are considered.
</para>
</listitem>