summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane2007-07-15 23:47:13 +0000
committerTom Lane2007-07-15 23:47:13 +0000
commiteb62a1ba2806485fe584e2813fd7f015053220c6 (patch)
treef4b969a00ef972aa24bbab2d47f7952f0d872946
parent4607778b994a7800794aec485e19674c8da64f7e (diff)
Fix CHECK_RELATION_BLOCK_RANGE macro, which was not merely producing
a warning but was outright wrong.
-rw-r--r--contrib/pageinspect/btreefuncs.c7
-rw-r--r--contrib/pgstattuple/pgstatindex.c7
2 files changed, 8 insertions, 6 deletions
diff --git a/contrib/pageinspect/btreefuncs.c b/contrib/pageinspect/btreefuncs.c
index 97c5ae409a..f02c382183 100644
--- a/contrib/pageinspect/btreefuncs.c
+++ b/contrib/pageinspect/btreefuncs.c
@@ -57,12 +57,13 @@ extern Datum bt_page_stats(PG_FUNCTION_ARGS);
#define IS_BTREE(r) ((r)->rd_rel->relam == BTREE_AM_OID)
#define CHECK_PAGE_OFFSET_RANGE(pg, offnum) { \
- if ( !(FirstOffsetNumber<=(offnum) && \
- (offnum)<=PageGetMaxOffsetNumber(pg)) ) \
+ 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) ) \
+ if ( RelationGetNumberOfBlocks(rel) <= (BlockNumber) (blkno) ) \
elog(ERROR, "block number out of range"); }
/* ------------------------------------------------
diff --git a/contrib/pgstattuple/pgstatindex.c b/contrib/pgstattuple/pgstatindex.c
index 6a64d3992a..0c2c9a1448 100644
--- a/contrib/pgstattuple/pgstatindex.c
+++ b/contrib/pgstattuple/pgstatindex.c
@@ -48,12 +48,13 @@ extern Datum pg_relpages(PG_FUNCTION_ARGS);
#define IS_BTREE(r) ((r)->rd_rel->relam == BTREE_AM_OID)
#define CHECK_PAGE_OFFSET_RANGE(pg, offnum) { \
- if ( !(FirstOffsetNumber<=(offnum) && \
- (offnum)<=PageGetMaxOffsetNumber(pg)) ) \
+ 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) ) \
+ if ( RelationGetNumberOfBlocks(rel) <= (BlockNumber) (blkno) ) \
elog(ERROR, "block number out of range"); }
/* ------------------------------------------------