Re: [PATCH] Microvacuum for gist. - Mailing list pgsql-hackers

From Jeff Janes
Subject Re: [PATCH] Microvacuum for gist.
Date
Msg-id CAMkU=1zpZ+dwPpgwqZwM5fJsZGOg-yNi1YwdoPw6XioXYiOzyw@mail.gmail.com
Whole thread Raw
In response to Re: [PATCH] Microvacuum for gist.  (Teodor Sigaev <teodor@sigaev.ru>)
Responses Re: [PATCH] Microvacuum for gist.
List pgsql-hackers
On Wed, Sep 16, 2015 at 8:36 AM, Teodor Sigaev <teodor@sigaev.ru> wrote:
But It seems to me that it would be better to rewrite all mentions of
TupleDelete to MultiDelete in gist code.

Sure. Patch is attached, and it changes WAL format, so be carefull with testing.
Please, have a look.

Also in attach scripts reproduce bug from Jeff's report:
g.pl - creates and fills test table
w.pl - worker, could run in several session

Usage
perl g.pl | psql contrib_regression
perl w.pl |  psql contrib_regression | grep 'UPDATE 0'

and killall -9 postgres while w.pl is running. Recovery will fail with high probability.

Thank you, Jeff, for report.

Thanks, that seems to have fixed it.

But I don't understand this comment:

+               /*
+                * While we delete only one tuple at once we could mix calls
+                * PageIndexTupleDelete() here and PageIndexMultiDelete() in
+                * gistRedoPageUpdateRecord()
+                */

Does this mean:

Since we delete only one tuple per WAL record here, we can call PageIndexTupleDelete() here and re-play it with PageIndexMultiDelete() in gistRedoPageUpdateRecord()

Thanks,

Jeff

pgsql-hackers by date:

Previous
From: Andrew Dunstan
Date:
Subject: Re: honour TEMP_CONFIG in pg_upgrade tests
Next
From: Teodor Sigaev
Date:
Subject: Re: [PATCH] Microvacuum for gist.