From 45839ffd28a9dad6f22cf52f10abba6ca0d57e6c Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sun, 15 Jul 2007 23:47:13 +0000 Subject: [PATCH] Fix CHECK_RELATION_BLOCK_RANGE macro, which was not merely producing a warning but was outright wrong. --- contrib/pgstattuple/pgstatindex.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/contrib/pgstattuple/pgstatindex.c b/contrib/pgstattuple/pgstatindex.c index 2982ceaf506..f1385ef0c8a 100644 --- a/contrib/pgstattuple/pgstatindex.c +++ b/contrib/pgstattuple/pgstatindex.c @@ -63,14 +63,15 @@ extern Datum pg_relpages(PG_FUNCTION_ARGS); #define IS_INDEX(r) ((r)->rd_rel->relkind == 'i') #define IS_BTREE(r) ((r)->rd_rel->relam == BTREE_AM_OID) -#define CHECK_PAGE_OFFSET_RANGE(page, offset) { \ - if ( !(FirstOffsetNumber<=(offset) && \ - (offset)<=PageGetMaxOffsetNumber(page)) ) \ - elog(ERROR, "Page offset number out of range."); } +#define CHECK_PAGE_OFFSET_RANGE(pg, offnum) { \ + if ( !(FirstOffsetNumber <= (offnum) && \ + (offnum) <= PageGetMaxOffsetNumber(pg)) ) \ + elog(ERROR, "page offset number out of range"); } +/* note: BlockNumber is unsigned, hence can't be negative */ #define CHECK_RELATION_BLOCK_RANGE(rel, blkno) { \ - if ( (blkno)<0 && RelationGetNumberOfBlocks((rel))<=(blkno) ) \ - elog(ERROR, "Block number out of range."); } + if ( RelationGetNumberOfBlocks(rel) <= (BlockNumber) (blkno) ) \ + elog(ERROR, "block number out of range"); } /* ------------------------------------------------ * structure for single btree page statistics