Re: Allow CLUSTER, VACUUM FULL and REINDEX to change tablespace on the fly
Alexey Kondratov <a.kondratov@postgrespro.ru>
From: Alexey Kondratov <a.kondratov@postgrespro.ru>
To: Michael Paquier <michael@paquier.xyz>
Cc: Justin Pryzby <pryzby@telsasoft.com>, Alvaro Herrera
<alvherre@alvh.no-ip.org>, Peter Eisentraut
<peter.eisentraut@enterprisedb.com>, Masahiko Sawada
<masahiko.sawada@2ndquadrant.com>, Steve Singer <steve@ssinger.info>,
pgsql-hackers@lists.postgresql.org, Robert Haas <robertmhaas@gmail.com>,
Alexander Korotkov <a.korotkov@postgrespro.ru>, Masahiko Sawada
<sawada.mshk@gmail.com>, Jose Luis Tallon <jltallon@adv-solutions.net>
Date: 2020-12-23T16:30:35Z
Lists: pgsql-hackers
On 2020-12-23 10:38, Michael Paquier wrote: > On Tue, Dec 22, 2020 at 03:15:37PM -0600, Justin Pryzby wrote: >> Now, I really think utility.c ought to pass in a pointer to a local >> ReindexOptions variable to avoid all the memory context, which is >> unnecessary >> and prone to error. > > Yeah, it sounds right to me to just bite the bullet and do this > refactoring, limiting the manipulations of the options as much as > possible across contexts. So +1 from me to merge 0001 and 0002 > together. > > I have adjusted a couple of comments and simplified a bit more the > code in utility.c. I think that this is commitable, but let's wait > more than a couple of days for Alvaro and Peter first. This is a > period of vacations for a lot of people, and there is no point to > apply something that would need more work at the end. Using hexas for > the flags with bitmasks is the right conclusion IMO, but we are not > alone. > After eyeballing the patch I can add that we should alter this comment: int options; /* bitmask of VacuumOption */ as you are going to replace VacuumOption with VACOPT_* defs. So this should say: /* bitmask of VACOPT_* */ Also I have found naming to be a bit inconsistent: * we have ReindexOptions, but VacuumParams * and ReindexOptions->flags, but VacuumParams->options And the last one, you have used bits32 for Cluster/ReindexOptions, but left VacuumParams->options as int. Maybe we should also change it to bits32 for consistency? Regards -- Alexey Kondratov Postgres Professional https://www.postgrespro.com Russian Postgres Company
Commits
-
Add TABLESPACE option to REINDEX
- c5b286047cd6 14.0 landed
-
Refactor code in tablecmds.c to check and process tablespace moves
- 4c9c359d38ff 14.0 landed
-
Refactor option handling of CLUSTER, REINDEX and VACUUM
- a3dc926009be 14.0 landed
-
pg_dump: Don't use enums for defining bit mask values
- d2a2808eb444 14.0 landed
-
Refactor CLUSTER and REINDEX grammar to use DefElem for option lists
- b5913f612079 14.0 landed
-
Refactor parsing rules for option lists of EXPLAIN, VACUUM and ANALYZE
- 873ea9ee692e 14.0 landed
-
Improve tab completion of REINDEX in psql
- 1f75b454134c 14.0 landed
-
Fix possible crash during FATAL exit from reindexing.
- d12bdba77b0f 13.0 cited