From 01145f963fe4979714ffb1517903e42d56e56592 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Thu, 20 Oct 2005 16:14:47 +0000 Subject: [PATCH] Prevent core dump in contrib version of autovacuum when a table has been dropped. Per report from daveg (not his patch, though). --- contrib/pg_autovacuum/pg_autovacuum.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/contrib/pg_autovacuum/pg_autovacuum.c b/contrib/pg_autovacuum/pg_autovacuum.c index 3775157d668..d202d189859 100644 --- a/contrib/pg_autovacuum/pg_autovacuum.c +++ b/contrib/pg_autovacuum/pg_autovacuum.c @@ -142,7 +142,7 @@ init_table_info(PGresult *res, int row, db_info * dbi) void update_table_thresholds(db_info * dbi, tbl_info * tbl, int vacuum_type) { - PGresult *res = NULL; + PGresult *res; int disconnect = 0; char query[128]; @@ -156,7 +156,7 @@ update_table_thresholds(db_info * dbi, tbl_info * tbl, int vacuum_type) { snprintf(query, sizeof(query), PAGES_QUERY, tbl->relid); res = send_query(query, dbi); - if (res != NULL) + if (res != NULL && PQntuples(res) > 0) { tbl->reltuples = atof(PQgetvalue(res, 0, PQfnumber(res, "reltuples"))); @@ -178,8 +178,6 @@ update_table_thresholds(db_info * dbi, tbl_info * tbl, int vacuum_type) (args->analyze_base_threshold + args->analyze_scaling_factor * tbl->reltuples); tbl->CountAtLastAnalyze = tbl->curr_analyze_count; - PQclear(res); - /* * If the stats collector is reporting fewer updates then we * have on record then the stats were probably reset, so we @@ -192,6 +190,8 @@ update_table_thresholds(db_info * dbi, tbl_info * tbl, int vacuum_type) tbl->CountAtLastVacuum = tbl->curr_vacuum_count; } } + + PQclear(res); } if (disconnect) db_disconnect(dbi);