Re: Amcheck verification of GiST and GIN
Kirill Reshke <reshkekirill@gmail.com>
Attachments
- v37-0004-Fix-for-gin_index_check.patch (application/octet-stream) patch v37-0004
- v37-0003-Fix-wording-in-GIN-README.patch (application/octet-stream) patch v37-0003
- v37-0002-Add-gin_index_check-to-verify-GIN-index.patch (application/octet-stream) patch v37-0002
- v37-0001-Refactor-amcheck-internals-to-isolate-common-loc.patch (application/octet-stream) patch v37-0001
- v37-0005-Add-gin-index-checking-test-for-jsonb-data.patch (application/octet-stream) patch v37-0005
- v37-0006-Add-gin-to-the-create-index-concurrently-tap-tes.patch (application/octet-stream) patch v37-0006
- v37-0007-Stress-test-verify_gin-using-pgbench.patch (application/octet-stream) patch v37-0007
On Fri, 28 Feb 2025 at 23:31, Mark Dilger <mark.dilger@enterprisedb.com> wrote: > The only obvious definition of "wrong" for this is that gin index scans return different result sets than table scans over the same data. Using your much smaller reproducible test case, and adding rows like: Yeach, you are 100% right. Actually, along this thread, we have not spotted any GIN bugs yet, only GIN amcheck bugs. This turns out to be also an GIN amcheck bug: ``` DEBUG: comparing for offset 79 category 2 key attnum 1 DEBUG: comparing for offset 80 category 3 key attnum 1 DEBUG: comparing for offset 81 category 0 key attnum 2 LOG: index "ginidx" has wrong tuple order on entry tree page, block 2, offset 81, rightlink 4294967295 DEBUG: comparing for offset 82 category 0 key attnum 2 .... DEBUG: comparing for offset 100 category 0 key attnum 2 DEBUG: comparing for offset 101 category 2 key attnum 2 DEBUG: comparing for offset 102 category 3 key attnum 2 DEBUG: comparing for offset 103 category 0 key attnum 3 LOG: index "ginidx" has wrong tuple order on entry tree page, block 2, offset 103, rightlink 4294967295 DEBUG: comparing for offset 104 category 0 key attnum 3 DEBUG: comparing for offset 105 category 0 key attnum 3 ``` Turns out we compare page entries for different attributes in gin_check_parent_keys_consistency. Trivial fix attached (see v37-0004). I now simply compare current and prev attribute numbers. This revolves issue discovered by `v0-0001-Add-a-reproducible-test-case-for-verify_gin-error.patch.no_apply`. However, the stress test seems to still not pass. On my pc, it never ens, all processes are in DELETE waiting/UPDATE waiting state. I will take another look tomorrow. p.s. I am just about to send this message, while i discovered we now miss v34-0003-Add-gist_index_check-function-to-verify-GiST-ind.patch & v34-0005-Add-GiST-support-to-pg_amcheck.patch from this patch series ;( -- Best regards, Kirill Reshke
Commits
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
amcheck: Fix posting tree checks in gin_index_check()
- 0cf205e122ae 18.0 landed
-
amcheck: Fix parent key check in gin_index_check()
- cdd1a431f21d 18.0 landed
-
amcheck: Fix checks of entry order for GIN indexes
- 0b54b392334b 18.0 landed
-
amcheck: Remove unused GinScanItem->parentlsn field
- 8dd41c0bff5b 18.0 landed
-
amcheck: Test gin_index_check on a multicolumn index
- c89d6b889ce9 18.0 landed
-
Remove incidental md5() function use from test
- 49b82522f13f 18.0 landed
-
amcheck: Add a GIN index to the CREATE INDEX CONCURRENTLY tests
- 68f97aeadb8e 18.0 landed
-
amcheck: Add a test with GIN index on JSONB data
- ca738bdc4c9d 18.0 landed
-
amcheck: Fix indentation in verify_gin.c
- ec4327d106be 18.0 landed
-
amcheck: Add gin_index_check() to verify GIN index
- 14ffaece0fb5 18.0 landed
-
amcheck: Move common routines into a separate module
- d70b17636ddf 18.0 landed
-
Fix grammar in GIN README
- fb9dff76635d 18.0 landed
-
Avoid amcheck inline compression false positives.
- eba775345d23 12.0 cited