Alvaro Herrera escribió: > Yes, that's what I did --- see the attached patch, which I would apply > on top of the code for master and would be only in 9.3.
(Of course, these changes affect other parts of the code, in particular autovacuum.c and reloptions.c. But that's not important here). -- Álvaro Herrera http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services
commit 689869c791aa7d13f408430ef438291bddb84b2f Author: Alvaro Herrera <alvhe...@alvh.no-ip.org> Date: Thu Feb 13 12:31:37 2014 -0300 9.3 tweaks to avoid ABI break diff --git a/src/backend/access/common/reloptions.c b/src/backend/access/common/reloptions.c index 534a9ea..6daa14a 100644 --- a/src/backend/access/common/reloptions.c +++ b/src/backend/access/common/reloptions.c @@ -1170,11 +1170,11 @@ default_reloptions(Datum reloptions, bool validate, relopt_kind kind) {"autovacuum_freeze_table_age", RELOPT_TYPE_INT, offsetof(StdRdOptions, autovacuum) +offsetof(AutoVacOpts, freeze_table_age)}, {"autovacuum_multixact_freeze_min_age", RELOPT_TYPE_INT, - offsetof(StdRdOptions, autovacuum) +offsetof(AutoVacOpts, multixact_freeze_min_age)}, + offsetof(StdRdOptions, autovacuum2) +offsetof(AutoVacOpts2, multixact_freeze_min_age)}, {"autovacuum_multixact_freeze_max_age", RELOPT_TYPE_INT, - offsetof(StdRdOptions, autovacuum) +offsetof(AutoVacOpts, multixact_freeze_max_age)}, + offsetof(StdRdOptions, autovacuum2) +offsetof(AutoVacOpts2, multixact_freeze_max_age)}, {"autovacuum_multixact_freeze_table_age", RELOPT_TYPE_INT, - offsetof(StdRdOptions, autovacuum) +offsetof(AutoVacOpts, multixact_freeze_table_age)}, + offsetof(StdRdOptions, autovacuum2) +offsetof(AutoVacOpts2, multixact_freeze_table_age)}, {"autovacuum_vacuum_scale_factor", RELOPT_TYPE_REAL, offsetof(StdRdOptions, autovacuum) +offsetof(AutoVacOpts, vacuum_scale_factor)}, {"autovacuum_analyze_scale_factor", RELOPT_TYPE_REAL, diff --git a/src/include/nodes/parsenodes.h b/src/include/nodes/parsenodes.h index d749f70..8ef59e6 100644 --- a/src/include/nodes/parsenodes.h +++ b/src/include/nodes/parsenodes.h @@ -2430,10 +2430,11 @@ typedef struct VacuumStmt int options; /* OR of VacuumOption flags */ int freeze_min_age; /* min freeze age, or -1 to use default */ int freeze_table_age; /* age at which to scan whole table */ - int multixact_freeze_min_age; /* min multixact freeze age, or -1 to use default */ - int multixact_freeze_table_age; /* multixact age at which to scan whole table */ RangeVar *relation; /* single table to process, or NULL */ List *va_cols; /* list of column names, or NIL for all */ + /* place these at the end, to avoid ABI break within 9.3 branch */ + int multixact_freeze_min_age; /* min multixact freeze age, or -1 to use default */ + int multixact_freeze_table_age; /* multixact age at which to scan whole table */ } VacuumStmt; /* ---------------------- diff --git a/src/include/utils/rel.h b/src/include/utils/rel.h index 47ae106..53d5690 100644 --- a/src/include/utils/rel.h +++ b/src/include/utils/rel.h @@ -187,7 +187,10 @@ typedef struct RelationData * be applied to relations that use this format or a superset for * private options data. */ - /* autovacuum-related reloptions. */ + /* autovacuum-related reloptions. + * + * Split in two to avoid ABI break. + */ typedef struct AutoVacOpts { bool enabled; @@ -198,19 +201,24 @@ typedef struct AutoVacOpts int freeze_min_age; int freeze_max_age; int freeze_table_age; - int multixact_freeze_min_age; - int multixact_freeze_max_age; - int multixact_freeze_table_age; float8 vacuum_scale_factor; float8 analyze_scale_factor; } AutoVacOpts; +typedef struct AutoVacOpts2 +{ + int multixact_freeze_min_age; + int multixact_freeze_max_age; + int multixact_freeze_table_age; +} AutoVacOpts2; + typedef struct StdRdOptions { int32 vl_len_; /* varlena header (do not touch directly!) */ int fillfactor; /* page fill factor in percent (0..100) */ AutoVacOpts autovacuum; /* autovacuum-related options */ bool security_barrier; /* for views */ + AutoVacOpts2 autovacuum2; /* rest of autovacuum options */ } StdRdOptions; #define HEAP_MIN_FILLFACTOR 10
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers