Re: Re: PANIC: invalid index offnum: 186 when processing BRIN indexes in VACUUM
Alvaro Herrera <alvherre@alvh.no-ip.org>
From: Alvaro Herrera <alvherre@alvh.no-ip.org>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Tomas Vondra <tomas.vondra@2ndquadrant.com>, Michael Paquier <michael.paquier@gmail.com>, PostgreSQL mailing lists <pgsql-hackers@postgresql.org>
Date: 2017-11-03T16:28:25Z
Lists: pgsql-hackers
Tom Lane wrote: > Alvaro Herrera <alvherre@alvh.no-ip.org> writes: > > Tom Lane wrote: > >> Do we still need the complication in brinsummarize to discriminate > >> against the last partial range? Now that the lock consideration > >> is gone, I think that might be a wart. > > > In the case of VACUUM, it's not desirable to create a summarization for > > the last partial range, because if the table is still being filled, that > > would slow down the insertion process. > > Hm. Okay, but you should change the comment then, because "we do not want > to spend one RelationGetNumberOfBlocks call" is a pretty weak reason. Changed. > Also, I think I would accept that argument for autovacuum, but maybe > not so much for a manual vacuum. Maybe you should drive it off > IsAutovacuumWorker rather than which operation is being done. I think your argument is sensible for some uses (where people run manual VACUUM after loading data) but not others (where people just use manual VACUUM in place of autovacuuming -- because they don't trust autovac, or the schedule isn't convenient, or whatever other reason). I've seen both things being done in production. If we do as you suggest, there is no way to do the manual vacuum without summarizing the partial also; the approach of doing the partial only in brin_summarize_new_values lets the user choose what to do. Once upon a time I thought about adding a reloption to let the user choose what to do, but I never got around to writing a patch. -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Commits
-
Fix BRIN summarization concurrent with extension
- ec42a1dcb30d 11.0 landed
- cf0612aa2c8f 9.5.10 landed
- bd8e2b3cf4cf 9.6.6 landed
- 37a856567c04 10.1 landed
-
Fix corner-case errors in brin_doupdate().
- 62a16572d571 11.0 landed
- a43cd427e703 9.6.6 landed
- 43276abc6f7e 9.5.10 landed
- 97ba7b8c87e1 10.1 landed
-
Rewrite PageIndexDeleteNoCompact into a form that only deletes 1 tuple.
- 24992c6db9fd 10.0 cited
-
Invent PageIndexTupleOverwrite, and teach BRIN and GiST to use it.
- b1328d78f88c 10.0 cited
-
Close some holes in BRIN page assignment
- ccc4c074994d 9.6.0 cited