2009/7/15 Tom Lane <tgl@sss.pgh.pa.us>:
> There is no reason at all to avoid an index AM API change if one is
> useful.
Thinking about this a bit more, perhaps it would be better if I added
an out parameter to the AM for the uniqueness result, rather than
overloading the return value, which is quite ugly:
bool
index_insert(Relation indexRelation, Datum *values, bool *isnull, ItemPointer
heap_t_ctid, Relation heapRelation, IndexUniqueCheck uniqueness_check, bool
*is_unique);
This would allow me to tidy up some of the code I added to
ExecInsertIndexTuples() which is a bit of a kludge to support
the hash indexes enforcing uniqueness in the future:
http://archives.postgresql.org/pgsql-hackers/2009-07/msg00812.php
Also I could then move the ereport() for unique key violations from
_bt_check_unique() into index_insert() which would allow the
Duplicate key value error patch to be non-btree-specific:
http://archives.postgresql.org/message-id/20090403161658.AFB2.52131E4D@oss.ntt.co.jp
http://archives.postgresql.org/message-id/24655.1238885884@sss.pgh.pa.us
Thoughts?