|
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; |
|