From 37ae22ce3e0fd3eedf33a0019a0aecba1bbcfa91 Mon Sep 17 00:00:00 2001 From: Halil Ozan Akgul Date: Thu, 12 Aug 2021 16:03:58 +0300 Subject: [PATCH] Introduces macros for vacuum options VacOptTernaryValue enum is renamed to VacOptValue. In the enum there were three values, VACOPT_TERNARY_DEFAULT, VACOPT_TERNARY_DISABLED, and VACOPT_TERNARY_ENABLED Now there are four values VACOPTVALUE_UNSPECIFIED, VACOPTVALUE_AUTO, VACOPTVALUE_DISABLED, and VACOPTVALUE_ENABLED New macros are VacOptValue_compat, VACOPTVALUE_UNSPECIFIED_COMPAT, VACOPTVALUE_DISABLED_COMPAT, and VACOPTVALUE_ENABLED_COMPAT The VACOPTVALUE_UNSPECIFIED_COMPAT matches VACOPT_TERNARY_DEFAULT and VACOPTVALUE_UNSPECIFIED. And there are no macro for VACOPTVALUE_AUTO. Relevant PG commit: 3499df0dee8c4ea51d264a674df5b5e31991319a --- src/backend/columnar/columnar_tableam.c | 4 ++-- src/backend/distributed/commands/vacuum.c | 28 +++++++++++------------ src/include/distributed/version_compat.h | 8 +++++++ 3 files changed, 24 insertions(+), 16 deletions(-) diff --git a/src/backend/columnar/columnar_tableam.c b/src/backend/columnar/columnar_tableam.c index 43c4d141f..9c7c42bf4 100644 --- a/src/backend/columnar/columnar_tableam.c +++ b/src/backend/columnar/columnar_tableam.c @@ -966,7 +966,7 @@ columnar_vacuum_rel(Relation rel, VacuumParams *params, int elevel = (params->options & VACOPT_VERBOSE) ? INFO : DEBUG2; /* this should have been resolved by vacuum.c until now */ - Assert(params->truncate != VACOPT_TERNARY_DEFAULT); + Assert(params->truncate != VACOPTVALUE_UNSPECIFIED); LogRelationStats(rel, elevel); @@ -974,7 +974,7 @@ columnar_vacuum_rel(Relation rel, VacuumParams *params, * We don't have updates, deletes, or concurrent updates, so all we * care for now is truncating the unused space at the end of storage. */ - if (params->truncate == VACOPT_TERNARY_ENABLED) + if (params->truncate == VACOPTVALUE_ENABLED) { TruncateColumnar(rel, elevel); } diff --git a/src/backend/distributed/commands/vacuum.c b/src/backend/distributed/commands/vacuum.c index e4569e3f7..f6fabfe2b 100644 --- a/src/backend/distributed/commands/vacuum.c +++ b/src/backend/distributed/commands/vacuum.c @@ -39,8 +39,8 @@ typedef struct CitusVacuumParams { int options; - VacOptTernaryValue truncate; - VacOptTernaryValue index_cleanup; + VacOptValue truncate; + VacOptValue index_cleanup; #if PG_VERSION_NUM >= PG_VERSION_13 int nworkers; @@ -346,8 +346,8 @@ DeparseVacuumStmtPrefix(CitusVacuumParams vacuumParams) /* if no flags remain, exit early */ if (vacuumFlags == 0 && - vacuumParams.truncate == VACOPT_TERNARY_DEFAULT && - vacuumParams.index_cleanup == VACOPT_TERNARY_DEFAULT + vacuumParams.truncate == VACOPTVALUE_UNSPECIFIED && + vacuumParams.index_cleanup == VACOPTVALUE_UNSPECIFIED #if PG_VERSION_NUM >= PG_VERSION_13 && vacuumParams.nworkers == VACUUM_PARALLEL_NOTSET #endif @@ -389,18 +389,18 @@ DeparseVacuumStmtPrefix(CitusVacuumParams vacuumParams) appendStringInfoString(vacuumPrefix, "SKIP_LOCKED,"); } - if (vacuumParams.truncate != VACOPT_TERNARY_DEFAULT) + if (vacuumParams.truncate != VACOPTVALUE_UNSPECIFIED) { appendStringInfoString(vacuumPrefix, - vacuumParams.truncate == VACOPT_TERNARY_ENABLED ? + vacuumParams.truncate == VACOPTVALUE_ENABLED ? "TRUNCATE," : "TRUNCATE false," ); } - if (vacuumParams.index_cleanup != VACOPT_TERNARY_DEFAULT) + if (vacuumParams.index_cleanup != VACOPTVALUE_UNSPECIFIED) { appendStringInfoString(vacuumPrefix, - vacuumParams.index_cleanup == VACOPT_TERNARY_ENABLED ? + vacuumParams.index_cleanup == VACOPTVALUE_ENABLED ? "INDEX_CLEANUP," : "INDEX_CLEANUP false," ); } @@ -506,8 +506,8 @@ VacuumStmtParams(VacuumStmt *vacstmt) bool disable_page_skipping = false; /* Set default value */ - params.index_cleanup = VACOPT_TERNARY_DEFAULT; - params.truncate = VACOPT_TERNARY_DEFAULT; + params.index_cleanup = VACOPTVALUE_UNSPECIFIED; + params.truncate = VACOPTVALUE_UNSPECIFIED; #if PG_VERSION_NUM >= PG_VERSION_13 params.nworkers = VACUUM_PARALLEL_NOTSET; #endif @@ -551,13 +551,13 @@ VacuumStmtParams(VacuumStmt *vacstmt) } else if (strcmp(opt->defname, "index_cleanup") == 0) { - params.index_cleanup = defGetBoolean(opt) ? VACOPT_TERNARY_ENABLED : - VACOPT_TERNARY_DISABLED; + params.index_cleanup = defGetBoolean(opt) ? VACOPTVALUE_ENABLED : + VACOPTVALUE_DISABLED; } else if (strcmp(opt->defname, "truncate") == 0) { - params.truncate = defGetBoolean(opt) ? VACOPT_TERNARY_ENABLED : - VACOPT_TERNARY_DISABLED; + params.truncate = defGetBoolean(opt) ? VACOPTVALUE_ENABLED : + VACOPTVALUE_DISABLED; } #if PG_VERSION_NUM >= PG_VERSION_13 else if (strcmp(opt->defname, "parallel") == 0) diff --git a/src/include/distributed/version_compat.h b/src/include/distributed/version_compat.h index 750a73aeb..5dc552fb2 100644 --- a/src/include/distributed/version_compat.h +++ b/src/include/distributed/version_compat.h @@ -43,6 +43,10 @@ #define FuncnameGetCandidates_compat(a, b, c, d, e, f, g) \ FuncnameGetCandidates(a, b, c, d, e, f, g) #define expand_function_arguments_compat(a, b, c, d) expand_function_arguments(a, b, c, d) +#define VacOptValue_compat VacOptValue +#define VACOPTVALUE_UNSPECIFIED_COMPAT VACOPTVALUE_UNSPECIFIED +#define VACOPTVALUE_DISABLED_COMPAT VACOPTVALUE_DISABLED +#define VACOPTVALUE_ENABLED_COMPAT VACOPTVALUE_ENABLED #else #define AlterTableStmtObjType(a) ((a)->relkind) #define F_NEXTVAL_COMPAT F_NEXTVAL_OID @@ -56,6 +60,10 @@ #define FuncnameGetCandidates_compat(a, b, c, d, e, f, g) \ FuncnameGetCandidates(a, b, c, d, e, g) #define expand_function_arguments_compat(a, b, c, d) expand_function_arguments(a, c, d) +#define VacOptValue_compat VacOptTernaryValue +#define VACOPTVALUE_UNSPECIFIED_COMPAT VACOPT_TERNARY_DEFAULT +#define VACOPTVALUE_DISABLED_COMPAT VACOPT_TERNARY_DISABLED +#define VACOPTVALUE_ENABLED_COMPAT VACOPT_TERNARY_ENABLED #endif #if PG_VERSION_NUM >= PG_VERSION_13