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)
{
int options = 0;
int cluster_options = 0;
/* close relation before vacuuming, but hold lock until commit */
relation_close(onerel, NoLock);
onerel = NULL;
if ((options & VACOPT_VERBOSE) != 0)
options |= CLUOPT_VERBOSE;
cluster_options |= CLUOPT_VERBOSE;
/* VACUUM FULL is now a variant of CLUSTER; see cluster.c */
cluster_rel(relid, InvalidOid, options);
cluster_rel(relid, InvalidOid, cluster_options);
}
else
lazy_vacuum_rel(onerel, options, params, vac_strategy);

View File

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