*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/executor/execUtils.c,v 1.173 2010/07/06 19:18:56 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/executor/execUtils.c,v 1.174 2010/07/16 00:45:30 tgl Exp $
*
*-------------------------------------------------------------------------
*/
index_endscan(index_scan);
/*
- * We should have found our tuple in the index, unless we exited the loop
- * early because of conflict. Complain if not. If we ever implement '<>'
- * index opclasses, this check will fail and will have to be removed.
+ * Ordinarily, at this point the search should have found the originally
+ * inserted tuple, unless we exited the loop early because of conflict.
+ * However, it is possible to define exclusion constraints for which
+ * that wouldn't be true --- for instance, if the operator is <>.
+ * So we no longer complain if found_self is still false.
*/
- if (!found_self && !conflict)
- ereport(ERROR,
- (errcode(ERRCODE_INTERNAL_ERROR),
- errmsg("failed to re-find tuple within index \"%s\"",
- RelationGetRelationName(index)),
- errhint("This may be because of a non-immutable index expression.")));
econtext->ecxt_scantuple = save_scantuple;