Re: pg_autovacuum patch for 7.4.2 and HEAD
От
Tom Lane
Тема
Re: pg_autovacuum patch for 7.4.2 and HEAD
Дата
Msg-id
3086.1078463071@sss.pgh.pa.us
Ответ на
pg_autovacuum patch for 7.4.2 and HEAD (Matthew T. O'Connor)
Список
Дерево обсуждения
pg_autovacuum patch for 7.4.2 and HEAD "Matthew T. O'Connor" <matthew@zeut.net>
Re: pg_autovacuum patch for 7.4.2 and HEAD Tom Lane <tgl@sss.pgh.pa.us>
Re: pg_autovacuum patch for 7.4.2 and HEAD "Matthew T. O'Connor" <matthew@zeut.net>
Re: pg_autovacuum patch for 7.4.2 and HEAD Bruce Momjian <pgman@candle.pha.pa.us>
Re: pg_autovacuum patch for 7.4.2 and HEAD "Matthew T. O'Connor" <matthew@zeut.net>
"Matthew T. O'Connor" writes: > pg_autovacuum.c has some problems with int overflow and not using appropriate > datatypes to track certain table values. This patch attempts to fix all > these issues. Someone should take a look and make sure its valid. > ! new_tbl->relid = atol(PQgetvalue(res, row, PQfnumber(res, "oid"))); > ! new_tbl->reltuples = atof(PQgetvalue(res, row, PQfnumber(res, "reltuples"))); > ! new_tbl->relpages = atol(PQgetvalue(res, row, PQfnumber(res, "relpages"))); This ignores the fact that relid and relpages are unsigned. I would suggest adopting the same convention for OID as is used in pg_dump and other places: #define atooid(x) ((Oid) strtoul((x), NULL, 10)) You could actually use this same macro for reading relpages, but that's probably abusing the notation. I'd use strtoul directly for relpages, I think. > ! init_dbinfo(char *dbname, int oid, int age) > ... > ! init_dbinfo(char *dbname, uint oid, uint age) This (and other declarations) should be "Oid oid". regards, tom lane
В списке pgsql-patches по дате отправления