]> granicus.if.org Git - postgresql/commit
Revert "Allow ON CONFLICT .. DO NOTHING on a partitioned table."
authorRobert Haas <rhaas@postgresql.org>
Fri, 31 Mar 2017 20:47:38 +0000 (16:47 -0400)
committerRobert Haas <rhaas@postgresql.org>
Fri, 31 Mar 2017 20:48:21 +0000 (16:48 -0400)
commitf05230752d53c4aa74cffa9b699983bbb6bcb118
tree90e09b32233cdcf41cc0dede2990e3da969d46f5
parentc94e6942cefe7d20c5feed856e27f672734b1e2b
Revert "Allow ON CONFLICT .. DO NOTHING on a partitioned table."

This reverts commit 8355a011a0124bdf7ccbada206a967d427039553, which
turns out to have been a misguided effort.  We can't really support
this in a partitioning hierarchy after all for exactly the reasons
stated in the documentation removed by that commit.  It's still
possible to use ON CONFLICT .. DO NOTHING (or for that matter ON
CONFLICT .. DO UPDATE) on individual partitions if desired, but
but to allow this on a partitioned table implies that we have some
way of evaluating uniqueness across the whole partitioning
hierarchy, which is false.

Shinoda Noriyoshi noticed that the old code was crashing (which we
could fix, though not in a nice way) and Amit Langote realized
that this was indicative of a fundamental problem with the commit
being reverted here.

Discussion: http://postgr.es/m/ff3dc21d-7204-c09c-50ac-cf11a8c45c81@lab.ntt.co.jp
doc/src/sgml/ddl.sgml
src/backend/parser/analyze.c
src/test/regress/expected/insert_conflict.out
src/test/regress/sql/insert_conflict.sql