mirror of
https://github.com/postgres/postgres.git
synced 2025-05-11 05:41:32 +03:00
Fix GiST buffering build to work when there are included columns.
gistRelocateBuildBuffersOnSplit did not get the memo about which attribute count to use. This could lead to a crash if there were included columns and buffering build was chosen. (Because there are random page-split decisions elsewhere in GiST index build, the crashes are not entirely deterministic.) Back-patch to v12 where GiST gained support for included columns. Pavel Borisov Discussion: https://postgr.es/m/CALT9ZEECCV5m7wvxg46PC-7x-EybUmnpupBGhSFMoAAay+r6HQ@mail.gmail.com
This commit is contained in:
parent
f35c117700
commit
12945874eb
@ -666,7 +666,7 @@ gistRelocateBuildBuffersOnSplit(GISTBuildBuffers *gfbb, GISTSTATE *giststate,
|
||||
zero_penalty = true;
|
||||
|
||||
/* Loop over index attributes. */
|
||||
for (j = 0; j < r->rd_att->natts; j++)
|
||||
for (j = 0; j < IndexRelationGetNumberOfKeyAttributes(r); j++)
|
||||
{
|
||||
float usize;
|
||||
|
||||
@ -692,7 +692,7 @@ gistRelocateBuildBuffersOnSplit(GISTBuildBuffers *gfbb, GISTSTATE *giststate,
|
||||
which = i;
|
||||
best_penalty[j] = usize;
|
||||
|
||||
if (j < r->rd_att->natts - 1)
|
||||
if (j < IndexRelationGetNumberOfKeyAttributes(r) - 1)
|
||||
best_penalty[j + 1] = -1;
|
||||
}
|
||||
else if (best_penalty[j] == usize)
|
||||
|
Loading…
x
Reference in New Issue
Block a user