> On May 17, 2024, at 12:10 PM, Mark Dilger <mark.dil...@enterprisedb.com>
> wrote:
>
>> Amcheck with checkunique option does check uniqueness violation between
>> pages. But it doesn't warranty detection of cross page uniqueness violations
>> in extremely rare cases when the first equal index entry on the next page
>> corresponds to tuple that is not visible (e.g. dead). In this, I followed
>> the Peter's notion [1] that checking across a number of dead equal entries
>> that could theoretically span even across many pages is an unneeded code
>> complication and amcheck is not a tool that provides any warranty when
>> checking an index.
>
> This confuses me a bit. The regression test creates a table and index but
> never performs any DELETE nor any UPDATE operations, so none of the index
> entries should be dead. If I am understanding you correct, I'd be forced to
> conclude that the uniqueness checking code is broken. Can you take a look?
On further review, the test was not anticipating the error message "high key
invariant violated for index". That wasn't seen in calls to
bt_index_parent_check(), but appears as one of the errors from
bt_index_check(). I am rerunning the test now....
—
Mark Dilger
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company