diff --git a/src/backend/distributed/commands/vacuum.c b/src/backend/distributed/commands/vacuum.c index 6bc76b7b8..4b787adb0 100644 --- a/src/backend/distributed/commands/vacuum.c +++ b/src/backend/distributed/commands/vacuum.c @@ -318,13 +318,17 @@ DeparseVacuumStmtPrefix(CitusVacuumParams vacuumParams) } /* if no flags remain, exit early */ - if (vacuumFlags == 0 && - vacuumParams.truncate == VACOPTVALUE_UNSPECIFIED && - vacuumParams.index_cleanup == VACOPTVALUE_UNSPECIFIED && - vacuumParams.nworkers == VACUUM_PARALLEL_NOTSET - ) + if (vacuumFlags & VACOPT_PROCESS_TOAST) { - return vacuumPrefix->data; + /* process toast is true by default */ + if ((vacuumFlags & ~VACOPT_PROCESS_TOAST) == 0 && + vacuumParams.truncate == VACOPTVALUE_UNSPECIFIED && + vacuumParams.index_cleanup == VACOPTVALUE_UNSPECIFIED && + vacuumParams.nworkers == VACUUM_PARALLEL_NOTSET + ) + { + return vacuumPrefix->data; + } } /* otherwise, handle options */ @@ -360,9 +364,9 @@ DeparseVacuumStmtPrefix(CitusVacuumParams vacuumParams) appendStringInfoString(vacuumPrefix, "SKIP_LOCKED,"); } - if (vacuumFlags & VACOPT_PROCESS_TOAST) + if (!(vacuumFlags & VACOPT_PROCESS_TOAST)) { - appendStringInfoString(vacuumPrefix, "PROCESS_TOAST,"); + appendStringInfoString(vacuumPrefix, "PROCESS_TOAST FALSE,"); } if (vacuumParams.truncate != VACOPTVALUE_UNSPECIFIED) @@ -499,7 +503,7 @@ VacuumStmtParams(VacuumStmt *vacstmt) bool freeze = false; bool full = false; bool disable_page_skipping = false; - bool process_toast = false; + bool process_toast = true; /* Set default value */ params.index_cleanup = VACOPTVALUE_UNSPECIFIED; diff --git a/src/test/regress/expected/pg14.out b/src/test/regress/expected/pg14.out index 8483a2891..bb2d1d929 100644 --- a/src/test/regress/expected/pg14.out +++ b/src/test/regress/expected/pg14.out @@ -18,21 +18,21 @@ DETAIL: on server postgres@localhost:xxxxx connectionId: xxxxxxx NOTICE: issuing VACUUM (FULL) pg14.t1_980001 DETAIL: on server postgres@localhost:xxxxx connectionId: xxxxxxx VACUUM (FULL, PROCESS_TOAST) t1; -NOTICE: issuing VACUUM (FULL,PROCESS_TOAST) pg14.t1_980000 +NOTICE: issuing VACUUM (FULL) pg14.t1_980000 DETAIL: on server postgres@localhost:xxxxx connectionId: xxxxxxx -NOTICE: issuing VACUUM (FULL,PROCESS_TOAST) pg14.t1_980001 +NOTICE: issuing VACUUM (FULL) pg14.t1_980001 DETAIL: on server postgres@localhost:xxxxx connectionId: xxxxxxx VACUUM (FULL, PROCESS_TOAST true) t1; -NOTICE: issuing VACUUM (FULL,PROCESS_TOAST) pg14.t1_980000 +NOTICE: issuing VACUUM (FULL) pg14.t1_980000 DETAIL: on server postgres@localhost:xxxxx connectionId: xxxxxxx -NOTICE: issuing VACUUM (FULL,PROCESS_TOAST) pg14.t1_980001 +NOTICE: issuing VACUUM (FULL) pg14.t1_980001 DETAIL: on server postgres@localhost:xxxxx connectionId: xxxxxxx VACUUM (FULL, PROCESS_TOAST false) t1; ERROR: PROCESS_TOAST required with VACUUM FULL VACUUM (PROCESS_TOAST false) t1; -NOTICE: issuing VACUUM pg14.t1_980000 +NOTICE: issuing VACUUM (PROCESS_TOAST FALSE) pg14.t1_980000 DETAIL: on server postgres@localhost:xxxxx connectionId: xxxxxxx -NOTICE: issuing VACUUM pg14.t1_980001 +NOTICE: issuing VACUUM (PROCESS_TOAST FALSE) pg14.t1_980001 DETAIL: on server postgres@localhost:xxxxx connectionId: xxxxxxx VACUUM (INDEX_CLEANUP AUTO) t1; NOTICE: issuing VACUUM (INDEX_CLEANUP auto) pg14.t1_980000 @@ -62,14 +62,14 @@ DETAIL: on server postgres@localhost:xxxxx connectionId: xxxxxxx VACUUM (INDEX_CLEANUP "AUTOX") t1; ERROR: index_cleanup requires a Boolean value VACUUM (FULL, FREEZE, VERBOSE false, ANALYZE, SKIP_LOCKED, INDEX_CLEANUP, PROCESS_TOAST, TRUNCATE) t1; -NOTICE: issuing VACUUM (ANALYZE,FREEZE,FULL,SKIP_LOCKED,PROCESS_TOAST,TRUNCATE,INDEX_CLEANUP auto) pg14.t1_980000 +NOTICE: issuing VACUUM (ANALYZE,FREEZE,FULL,SKIP_LOCKED,TRUNCATE,INDEX_CLEANUP auto) pg14.t1_980000 DETAIL: on server postgres@localhost:xxxxx connectionId: xxxxxxx -NOTICE: issuing VACUUM (ANALYZE,FREEZE,FULL,SKIP_LOCKED,PROCESS_TOAST,TRUNCATE,INDEX_CLEANUP auto) pg14.t1_980001 +NOTICE: issuing VACUUM (ANALYZE,FREEZE,FULL,SKIP_LOCKED,TRUNCATE,INDEX_CLEANUP auto) pg14.t1_980001 DETAIL: on server postgres@localhost:xxxxx connectionId: xxxxxxx VACUUM (FULL, FREEZE false, VERBOSE false, ANALYZE false, SKIP_LOCKED false, INDEX_CLEANUP "Auto", PROCESS_TOAST true, TRUNCATE false) t1; -NOTICE: issuing VACUUM (FULL,PROCESS_TOAST,TRUNCATE false,INDEX_CLEANUP auto) pg14.t1_980000 +NOTICE: issuing VACUUM (FULL,TRUNCATE false,INDEX_CLEANUP auto) pg14.t1_980000 DETAIL: on server postgres@localhost:xxxxx connectionId: xxxxxxx -NOTICE: issuing VACUUM (FULL,PROCESS_TOAST,TRUNCATE false,INDEX_CLEANUP auto) pg14.t1_980001 +NOTICE: issuing VACUUM (FULL,TRUNCATE false,INDEX_CLEANUP auto) pg14.t1_980001 DETAIL: on server postgres@localhost:xxxxx connectionId: xxxxxxx -- vacuum (process_toast true) should be vacuuming toast tables (default is true) CREATE TABLE local_vacuum_table(name text);