Fix two oversights from 9ebe0572 which refactored cluster_rel

The recheck option became a no-op as ClusterOption failed to set proper
values for each element.  There was a second code path where local
options got overwritten.

Both issues have been spotted by Coverity.
This commit is contained in:
Michael Paquier 2018-07-29 22:00:42 +09:00
parent e09144e6ce
commit 9f7ba88aa4
2 changed files with 5 additions and 5 deletions

View File

@ -1551,17 +1551,17 @@ vacuum_rel(Oid relid, RangeVar *relation, int options, VacuumParams *params)
*/ */
if (options & VACOPT_FULL) if (options & VACOPT_FULL)
{ {
int options = 0; int cluster_options = 0;
/* close relation before vacuuming, but hold lock until commit */ /* close relation before vacuuming, but hold lock until commit */
relation_close(onerel, NoLock); relation_close(onerel, NoLock);
onerel = NULL; onerel = NULL;
if ((options & VACOPT_VERBOSE) != 0) if ((options & VACOPT_VERBOSE) != 0)
options |= CLUOPT_VERBOSE; cluster_options |= CLUOPT_VERBOSE;
/* VACUUM FULL is now a variant of CLUSTER; see cluster.c */ /* VACUUM FULL is now a variant of CLUSTER; see cluster.c */
cluster_rel(relid, InvalidOid, options); cluster_rel(relid, InvalidOid, cluster_options);
} }
else else
lazy_vacuum_rel(onerel, options, params, vac_strategy); lazy_vacuum_rel(onerel, options, params, vac_strategy);

View File

@ -3114,8 +3114,8 @@ typedef struct AlterSystemStmt
*/ */
typedef enum ClusterOption typedef enum ClusterOption
{ {
CLUOPT_RECHECK, /* recheck relation state */ CLUOPT_RECHECK = 1 << 0, /* recheck relation state */
CLUOPT_VERBOSE /* print progress info */ CLUOPT_VERBOSE = 1 << 1 /* print progress info */
} ClusterOption; } ClusterOption;
typedef struct ClusterStmt typedef struct ClusterStmt