From: | Justin Pryzby <pryzby(at)telsasoft(dot)com> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | Heikki Linnakangas <hlinnaka(at)iki(dot)fi>, "Andrey M(dot) Borodin" <x4mmm(at)yandex-team(dot)ru>, Darafei Komяpa Praliaskouski <me(at)komzpa(dot)net>, Pavel Borisov <pashkin(dot)elfe(at)gmail(dot)com>, Thomas Munro <thomas(dot)munro(at)gmail(dot)com>, Michael Paquier <michael(at)paquier(dot)xyz>, Alexander Korotkov <a(dot)korotkov(at)postgrespro(dot)ru>, pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: Yet another fast GiST build |
Date: | 2020-09-20 22:44:46 |
Message-ID: | 20200920224446.GF30557@telsasoft.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Sun, Sep 20, 2020 at 05:10:05PM -0400, Tom Lane wrote:
> I wrote:
> > It appears that hyrax (CLOBBER_CACHE_ALWAYS) is not very happy
> > with this:
> > https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=hyrax&dt=2020-09-19%2021%3A27%3A23
>
> I reproduced that and traced it to a missing RelationOpenSmgr call.
> Fixed now.
This also appears to break checksums.
postgres=# CREATE TABLE pvactst (i INT, a INT[], p POINT) with (autovacuum_enabled = off);
postgres=# CREATE INDEX gist_pvactst ON pvactst USING gist (p);
postgres=# INSERT INTO pvactst SELECT i, array[1,2,3], point(i, i+1) FROM generate_series(1,1000) i;
WARNING: page verification failed, calculated checksum 34313 but expected 0
ERROR: invalid page in block 0 of relation base/12859/16389
I was able to make this work like so:
@@ -449,6 +450,7 @@ gist_indexsortbuild(GISTBuildState *state)
/* Write out the root */
PageSetLSN(pagestate->page, GistBuildLSN);
+ PageSetChecksumInplace(pagestate->page, GIST_ROOT_BLKNO, state->indexrel->rd_smgr);
smgrwrite(state->indexrel->rd_smgr, MAIN_FORKNUM, GIST_ROOT_BLKNO,
pagestate->page, true);
if (RelationNeedsWAL(state->indexrel))
@@ -555,6 +557,7 @@ gist_indexsortbuild_flush_ready_pages(GISTBuildState *state)
PageSetLSN(page, GistBuildLSN);
+ PageSetChecksumInplace(page, state->pages_written, state->indexrel->rd_smgr);
smgrextend(state->indexrel->rd_smgr,
MAIN_FORKNUM,
state->pages_written++,
--
Justin
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2020-09-20 23:06:09 | Re: Yet another fast GiST build |
Previous Message | Tom Lane | 2020-09-20 21:10:05 | Re: Yet another fast GiST build |