Alvaro Herrera wrote:
> Matthew T. O'Connor wrote:
> > Can you make 0 and -1 both valid disabled values? That way it will be
> > compatible with previous releases.
>
> Heh, sure, we can do that too and it doesn't seem like anybody would
> object. I will patch the documentation so that that the "disabled"
> value is zero, and still allow -1. That way it doesn't seem like there
> should be any objection.
Patch attached.
--
Alvaro Herrera http://www.amazon.com/gp/registry/5ZYLFMCVHXC
"Saca el libro que tu religión considere como el indicado para encontrar la
oración que traiga paz a tu alma. Luego rebootea el computador
y ve si funciona" (Carlos Duclós)
Index: doc/src/sgml/catalogs.sgml
===================================================================
RCS file: /home/alvherre/Code/cvs/pgsql/doc/src/sgml/catalogs.sgml,v
retrieving revision 2.153
diff -c -p -r2.153 catalogs.sgml
*** doc/src/sgml/catalogs.sgml 5 Jun 2007 21:31:03 -0000 2.153
--- doc/src/sgml/catalogs.sgml 8 Jun 2007 14:40:10 -0000
***************
*** 1339,1347 ****
be used for this particular value. Observe that the
<structfield>vac_cost_delay</> variable inherits its default value from the
<xref linkend="guc-autovacuum-vacuum-cost-delay"> configuration parameter,
! or from <varname>vacuum_cost_delay</> if the former is set to a negative
! value. The same applies to <structfield>vac_cost_limit</>.
! Also, autovacuum will ignore attempts to set a per-table
<structfield>freeze_max_age</> larger than the system-wide setting (it can only be set
smaller), and the <structfield>freeze_min_age value</> will be limited to half the
system-wide <xref linkend="guc-autovacuum-freeze-max-age"> setting.
--- 1339,1350 ----
be used for this particular value. Observe that the
<structfield>vac_cost_delay</> variable inherits its default value from the
<xref linkend="guc-autovacuum-vacuum-cost-delay"> configuration parameter,
! or from <xref linkend="guc-vacuum-cost-delay"> if the former is set to a negative
! value. <structfield>vac_cost_limit</> is an exception to this rule, because
! the value <literal>0</> is used to indicate that the
! <xref linkend="guc-autovacuum-vacuum-cost-limit"> configuration parameter
! should be used, or <xref linkend="guc-vacuum-cost-limit"> if the former is set to a
! zero or negative value. Note that autovacuum will ignore attempts to set a per-table
<structfield>freeze_max_age</> larger than the system-wide setting (it can only be set
smaller), and the <structfield>freeze_min_age value</> will be limited to half the
system-wide <xref linkend="guc-autovacuum-freeze-max-age"> setting.
Index: doc/src/sgml/config.sgml
===================================================================
RCS file: /home/alvherre/Code/cvs/pgsql/doc/src/sgml/config.sgml,v
retrieving revision 1.126
diff -c -p -r1.126 config.sgml
*** doc/src/sgml/config.sgml 7 Jun 2007 19:19:56 -0000 1.126
--- doc/src/sgml/config.sgml 8 Jun 2007 14:15:33 -0000
*************** SELECT * FROM parent WHERE key = 2400;
*** 3356,3362 ****
<listitem>
<para>
Specifies the cost limit value that will be used in automatic
! <command>VACUUM</> operations. If <literal>-1</> is specified (which is the
default), the regular
<xref linkend="guc-vacuum-cost-limit"> value will be used. Note that
the value is distributed proportionally among the running autovacuum
--- 3356,3362 ----
<listitem>
<para>
Specifies the cost limit value that will be used in automatic
! <command>VACUUM</> operations. If <literal>0</> is specified (which is the
default), the regular
<xref linkend="guc-vacuum-cost-limit"> value will be used. Note that
the value is distributed proportionally among the running autovacuum
Index: src/backend/postmaster/autovacuum.c
===================================================================
RCS file: /home/alvherre/Code/cvs/pgsql/src/backend/postmaster/autovacuum.c,v
retrieving revision 1.47
diff -c -p -r1.47 autovacuum.c
*** src/backend/postmaster/autovacuum.c 30 May 2007 20:11:57 -0000 1.47
--- src/backend/postmaster/autovacuum.c 8 Jun 2007 14:23:35 -0000
*************** static void
*** 1548,1554 ****
autovac_balance_cost(void)
{
WorkerInfo worker;
! int vac_cost_limit = (autovacuum_vac_cost_limit >= 0 ?
autovacuum_vac_cost_limit : VacuumCostLimit);
int vac_cost_delay = (autovacuum_vac_cost_delay >= 0 ?
autovacuum_vac_cost_delay : VacuumCostDelay);
--- 1548,1554 ----
autovac_balance_cost(void)
{
WorkerInfo worker;
! int vac_cost_limit = (autovacuum_vac_cost_limit > 0 ?
autovacuum_vac_cost_limit : VacuumCostLimit);
int vac_cost_delay = (autovacuum_vac_cost_delay >= 0 ?
autovacuum_vac_cost_delay : VacuumCostDelay);
*************** table_recheck_autovac(Oid relid)
*** 2143,2151 ****
*/
if (avForm != NULL)
{
! vac_cost_limit = (avForm->vac_cost_limit >= 0) ?
avForm->vac_cost_limit :
! ((autovacuum_vac_cost_limit >= 0) ?
autovacuum_vac_cost_limit : VacuumCostLimit);
vac_cost_delay = (avForm->vac_cost_delay >= 0) ?
--- 2143,2151 ----
*/
if (avForm != NULL)
{
! vac_cost_limit = (avForm->vac_cost_limit > 0) ?
avForm->vac_cost_limit :
! ((autovacuum_vac_cost_limit > 0) ?
autovacuum_vac_cost_limit : VacuumCostLimit);
vac_cost_delay = (avForm->vac_cost_delay >= 0) ?
*************** table_recheck_autovac(Oid relid)
*** 2158,2164 ****
}
else
{
! vac_cost_limit = (autovacuum_vac_cost_limit >= 0) ?
autovacuum_vac_cost_limit : VacuumCostLimit;
vac_cost_delay = (autovacuum_vac_cost_delay >= 0) ?
--- 2158,2164 ----
}
else
{
! vac_cost_limit = (autovacuum_vac_cost_limit > 0) ?
autovacuum_vac_cost_limit : VacuumCostLimit;
vac_cost_delay = (autovacuum_vac_cost_delay >= 0) ?
Index: src/backend/utils/misc/guc.c
===================================================================
RCS file: /home/alvherre/Code/cvs/pgsql/src/backend/utils/misc/guc.c,v
retrieving revision 1.395
diff -c -p -r1.395 guc.c
*** src/backend/utils/misc/guc.c 5 Jun 2007 21:50:19 -0000 1.395
--- src/backend/utils/misc/guc.c 8 Jun 2007 14:12:49 -0000
*************** static struct config_int ConfigureNamesI
*** 1329,1335 ****
NULL
},
&autovacuum_vac_cost_limit,
! -1, -1, 10000, NULL, NULL
},
{
--- 1329,1335 ----
NULL
},
&autovacuum_vac_cost_limit,
! 0, -1, 10000, NULL, NULL
},
{
Index: src/backend/utils/misc/postgresql.conf.sample
===================================================================
RCS file: /home/alvherre/Code/cvs/pgsql/src/backend/utils/misc/postgresql.conf.sample,v
retrieving revision 1.216
diff -c -p -r1.216 postgresql.conf.sample
*** src/backend/utils/misc/postgresql.conf.sample 3 Jun 2007 17:08:15 -0000 1.216
--- src/backend/utils/misc/postgresql.conf.sample 8 Jun 2007 14:25:11 -0000
***************
*** 394,401 ****
#autovacuum_vacuum_cost_delay = -1 # default vacuum cost delay for
# autovacuum, -1 means use
# vacuum_cost_delay
! #autovacuum_vacuum_cost_limit = -1 # default vacuum cost limit for
! # autovacuum, -1 means use
# vacuum_cost_limit
--- 394,401 ----
#autovacuum_vacuum_cost_delay = -1 # default vacuum cost delay for
# autovacuum, -1 means use
# vacuum_cost_delay
! #autovacuum_vacuum_cost_limit = 0 # default vacuum cost limit for
! # autovacuum, 0 means use
# vacuum_cost_limit
---------------------------(end of broadcast)---------------------------
TIP 9: In versions below 8.0, the planner will ignore your desire to
choose an index scan if your joining column's datatypes do not
match