Commit 6b4d304
committed
Fix bug in detecting concurrent page splits in GiST insert
In commit 9eb5607, I got the condition on checking for split or
deleted page wrong: I used && instead of ||. The comment correctly said
"concurrent split _or_ deletion".
As a result, GiST insertion could miss a concurrent split, and insert to
wrong page. Duncan Sands demonstrated this with a test script that did a
lot of concurrent inserts.
Backpatch to v12, where this was introduced. REINDEX is required to fix
indexes that were affected by this bug.
Backpatch-through: 12
Reported-by: Duncan Sands
Discussion: https://www.postgresql.org/message-id/a9690483-6c6c-3c82-c8ba-dc1a40848f11%40deepbluecap.com1 parent 679744c commit 6b4d304Copy full SHA for 6b4d304
File tree
Expand file treeCollapse file tree
1 file changed
+4
-1
lines changedOpen diff view settings
Filter options
- src/backend/access/gist
Expand file treeCollapse file tree
1 file changed
+4
-1
lines changedOpen diff view settings
Collapse file
src/backend/access/gist/gist.c
Copy file name to clipboardExpand all lines: src/backend/access/gist/gist.c+4-1Lines changed: 4 additions & 1 deletion
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| ||
248 | 248 | |
249 | 249 | |
250 | 250 | |
| 251 | + |
| 252 | + |
| 253 | + |
251 | 254 | |
252 | 255 | |
253 | 256 | |
| ||
863 | 866 | |
864 | 867 | |
865 | 868 | |
866 | | - |
| 869 | + |
867 | 870 | |
868 | 871 | |
869 | 872 | |
|
0 commit comments