fix-gistbuild.patch
text/x-patch
Filename: fix-gistbuild.patch
Type: text/x-patch
Part: 0
Patch
Format: unified
| File | + | − |
|---|---|---|
| src/backend/access/gist/gistbuild.c | 4 | 4 |
| src/test/regress/expected/gist.out | 4 | 1 |
| src/test/regress/sql/gist.sql | 5 | 1 |
diff --git a/src/backend/access/gist/gistbuild.c b/src/backend/access/gist/gistbuild.c
index 671b5e9186..cee81d58ad 100644
--- a/src/backend/access/gist/gistbuild.c
+++ b/src/backend/access/gist/gistbuild.c
@@ -456,6 +456,10 @@ gistBuildCallback(Relation index,
itup = gistFormTuple(buildstate->giststate, index, values, isnull, true);
itup->t_tid = *tid;
+ /* Update tuple count and total size. */
+ buildstate->indtuples += 1;
+ buildstate->indtuplesSize += IndexTupleSize(itup);
+
if (buildstate->bufferingMode == GIST_BUFFERING_ACTIVE)
{
/* We have buffers, so use them. */
@@ -471,10 +475,6 @@ gistBuildCallback(Relation index,
buildstate->giststate, buildstate->heaprel, true);
}
- /* Update tuple count and total size. */
- buildstate->indtuples += 1;
- buildstate->indtuplesSize += IndexTupleSize(itup);
-
MemoryContextSwitchTo(oldCtx);
MemoryContextReset(buildstate->giststate->tempCxt);
diff --git a/src/test/regress/expected/gist.out b/src/test/regress/expected/gist.out
index 90edb4061d..8515a63c07 100644
--- a/src/test/regress/expected/gist.out
+++ b/src/test/regress/expected/gist.out
@@ -22,9 +22,12 @@ ERROR: value 101 out of bounds for option "fillfactor"
DETAIL: Valid values are between "10" and "100".
-- Insert enough data to create a tree that's a couple of levels deep.
insert into gist_point_tbl (id, p)
-select g, point(g*10, g*10) from generate_series(1, 10000) g;
+select g, point(g*10, g*10) from generate_series(1, 20000) g;
insert into gist_point_tbl (id, p)
select g+100000, point(g*10+1, g*10+1) from generate_series(1, 10000) g;
+-- Test buffering index build with data
+create index gist_pointidx6 on gist_point_tbl using gist(p) with (buffering = on, fillfactor=50);
+drop index gist_pointidx6;
-- To test vacuum, delete some entries from all over the index.
delete from gist_point_tbl where id % 2 = 1;
-- And also delete some concentration of values.
diff --git a/src/test/regress/sql/gist.sql b/src/test/regress/sql/gist.sql
index b9d398ea94..0efb265ec3 100644
--- a/src/test/regress/sql/gist.sql
+++ b/src/test/regress/sql/gist.sql
@@ -20,11 +20,15 @@ create index gist_pointidx5 on gist_point_tbl using gist(p) with (fillfactor=101
-- Insert enough data to create a tree that's a couple of levels deep.
insert into gist_point_tbl (id, p)
-select g, point(g*10, g*10) from generate_series(1, 10000) g;
+select g, point(g*10, g*10) from generate_series(1, 20000) g;
insert into gist_point_tbl (id, p)
select g+100000, point(g*10+1, g*10+1) from generate_series(1, 10000) g;
+-- Test buffering index build with data
+create index gist_pointidx6 on gist_point_tbl using gist(p) with (buffering = on, fillfactor=50);
+drop index gist_pointidx6;
+
-- To test vacuum, delete some entries from all over the index.
delete from gist_point_tbl where id % 2 = 1;