> 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





Reply via email to