|
55 | 55 | *
|
56 | 56 | *
|
57 | 57 | * IDENTIFICATION
|
58 |
| - * $PostgreSQL: pgsql/src/backend/postmaster/autovacuum.c,v 1.102 2009/08/24 17:23:02 alvherre Exp $ |
| 58 | + * $PostgreSQL: pgsql/src/backend/postmaster/autovacuum.c,v 1.103 2009/08/27 17:18:44 alvherre Exp $ |
59 | 59 | *
|
60 | 60 | *-------------------------------------------------------------------------
|
61 | 61 | */
|
@@ -2448,25 +2448,29 @@ table_recheck_autovac(Oid relid, HTAB *table_toast_map,
|
2448 | 2448 | * toast table, try the main table too. Otherwise use the GUC
|
2449 | 2449 | * defaults, autovacuum's own first and plain vacuum second.
|
2450 | 2450 | */
|
2451 |
| -if (avopts) |
2452 |
| -{ |
2453 |
| -vac_cost_delay=avopts->vacuum_cost_delay; |
2454 |
| -vac_cost_limit=avopts->vacuum_cost_limit; |
2455 |
| -freeze_min_age=avopts->freeze_min_age; |
2456 |
| -freeze_table_age=avopts->freeze_table_age; |
2457 |
| -} |
2458 |
| -else |
2459 |
| -{ |
2460 |
| -/* -1 in autovac setting means use plain vacuum_cost_delay */ |
2461 |
| -vac_cost_delay=autovacuum_vac_cost_delay >=0 ? |
2462 |
| -autovacuum_vac_cost_delay :VacuumCostDelay; |
2463 |
| -/* 0 or -1 in autovac setting means use plain vacuum_cost_limit */ |
2464 |
| -vac_cost_limit=autovacuum_vac_cost_limit>0 ? |
2465 |
| -autovacuum_vac_cost_limit :VacuumCostLimit; |
2466 |
| -/* these do not have autovacuum-specific settings */ |
2467 |
| -freeze_min_age=default_freeze_min_age; |
2468 |
| -freeze_table_age=default_freeze_table_age; |
2469 |
| -} |
| 2451 | + |
| 2452 | +/* -1 in autovac setting means use plain vacuum_cost_delay */ |
| 2453 | +vac_cost_delay= (avopts&&avopts->vacuum_cost_delay >=0) |
| 2454 | +?avopts->vacuum_cost_delay |
| 2455 | +: (autovacuum_vac_cost_delay >=0) |
| 2456 | +?autovacuum_vac_cost_delay |
| 2457 | +:VacuumCostDelay; |
| 2458 | + |
| 2459 | +/* 0 or -1 in autovac setting means use plain vacuum_cost_limit */ |
| 2460 | +vac_cost_limit= (avopts&&avopts->vacuum_cost_limit>0) |
| 2461 | +?avopts->vacuum_cost_limit |
| 2462 | +: (autovacuum_vac_cost_limit>0) |
| 2463 | +?autovacuum_vac_cost_limit |
| 2464 | +:VacuumCostLimit; |
| 2465 | + |
| 2466 | +/* these do not have autovacuum-specific settings */ |
| 2467 | +freeze_min_age= (avopts&&avopts->freeze_min_age >=0) |
| 2468 | +?avopts->freeze_min_age |
| 2469 | +:default_freeze_min_age; |
| 2470 | + |
| 2471 | +freeze_table_age= (avopts&&avopts->freeze_table_age >=0) |
| 2472 | +?avopts->freeze_table_age |
| 2473 | +:default_freeze_table_age; |
2470 | 2474 |
|
2471 | 2475 | tab=palloc(sizeof(autovac_table));
|
2472 | 2476 | tab->at_relid=relid;
|
@@ -2563,25 +2567,29 @@ relation_needs_vacanalyze(Oid relid,
|
2563 | 2567 | * sources: the passed reloptions (which could be a main table or a toast
|
2564 | 2568 | * table), or the autovacuum GUC variables.
|
2565 | 2569 | */
|
2566 |
| -if (relopts) |
2567 |
| -{ |
2568 |
| -vac_scale_factor=relopts->vacuum_scale_factor; |
2569 |
| -vac_base_thresh=relopts->vacuum_threshold; |
2570 |
| -anl_scale_factor=relopts->analyze_scale_factor; |
2571 |
| -anl_base_thresh=relopts->analyze_threshold; |
2572 |
| -freeze_max_age=Min(relopts->freeze_max_age, |
2573 |
| -autovacuum_freeze_max_age); |
2574 |
| -av_enabled=relopts->enabled; |
2575 |
| -} |
2576 |
| -else |
2577 |
| -{ |
2578 |
| -vac_scale_factor=autovacuum_vac_scale; |
2579 |
| -vac_base_thresh=autovacuum_vac_thresh; |
2580 |
| -anl_scale_factor=autovacuum_anl_scale; |
2581 |
| -anl_base_thresh=autovacuum_anl_thresh; |
2582 |
| -freeze_max_age=autovacuum_freeze_max_age; |
2583 |
| -av_enabled= true; |
2584 |
| -} |
| 2570 | + |
| 2571 | +/* -1 in autovac setting means use plain vacuum_cost_delay */ |
| 2572 | +vac_scale_factor= (relopts&&relopts->vacuum_scale_factor >=0) |
| 2573 | +?relopts->vacuum_scale_factor |
| 2574 | +:autovacuum_vac_scale; |
| 2575 | + |
| 2576 | +vac_base_thresh= (relopts&&relopts->vacuum_threshold >=0) |
| 2577 | +?relopts->vacuum_threshold |
| 2578 | +:autovacuum_vac_thresh; |
| 2579 | + |
| 2580 | +anl_scale_factor= (relopts&&relopts->analyze_scale_factor >=0) |
| 2581 | +?relopts->analyze_scale_factor |
| 2582 | +:autovacuum_anl_scale; |
| 2583 | + |
| 2584 | +anl_base_thresh= (relopts&&relopts->analyze_threshold >=0) |
| 2585 | +?relopts->analyze_threshold |
| 2586 | +:autovacuum_anl_thresh; |
| 2587 | + |
| 2588 | +freeze_max_age= (relopts&&relopts->freeze_max_age >=0) |
| 2589 | +?Min(relopts->freeze_max_age,autovacuum_freeze_max_age) |
| 2590 | +:autovacuum_freeze_max_age; |
| 2591 | + |
| 2592 | +av_enabled= (relopts ?relopts->enabled : true); |
2585 | 2593 |
|
2586 | 2594 | /* Force vacuum if table is at risk of wraparound */
|
2587 | 2595 | xidForceLimit=recentXid-freeze_max_age;
|
|