summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Korotkov2022-12-06 00:29:18 +0000
committerAlexander Korotkov2022-12-06 00:29:18 +0000
commit941aa6a6268a6a66f6895401aad6b5329111d412 (patch)
tree35fc725d5924e8636ea48f430ae61353cbf28467
parenta7885c9bb22de3efcc0ba4e79bbde8a77e8b7036 (diff)
Check the snapshot argument of index_beginscan and family
Passing a NULL snapshot (InvalidSnapshot) is going to work but only as long as the index can't find any matching rows. This can be confusing for the extension authors, so add an explicit check for this argument. The check is implemented with Assert() in order to avoid overhead in release builds. Reported-by: Sven Klemm Discussion: https://postgr.es/m/CAJ7c6TPxitD4vbKyP-mpmC1XwyHdPPqvjLzm%2BVpB88h8LGgneQ%40mail.gmail.com Author: Aleksander Alekseev Reviewed-by: Pavel Borisov
-rw-r--r--src/backend/access/index/indexam.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/backend/access/index/indexam.c b/src/backend/access/index/indexam.c
index fe80b8b0ba..dc303995e5 100644
--- a/src/backend/access/index/indexam.c
+++ b/src/backend/access/index/indexam.c
@@ -209,6 +209,8 @@ index_beginscan(Relation heapRelation,
{
IndexScanDesc scan;
+ Assert(snapshot != InvalidSnapshot);
+
scan = index_beginscan_internal(indexRelation, nkeys, norderbys, snapshot, NULL, false);
/*
@@ -237,6 +239,8 @@ index_beginscan_bitmap(Relation indexRelation,
{
IndexScanDesc scan;
+ Assert(snapshot != InvalidSnapshot);
+
scan = index_beginscan_internal(indexRelation, nkeys, 0, snapshot, NULL, false);
/*
@@ -403,6 +407,8 @@ index_parallelscan_estimate(Relation indexRelation, Snapshot snapshot)
{
Size nbytes;
+ Assert(snapshot != InvalidSnapshot);
+
RELATION_CHECKS;
nbytes = offsetof(ParallelIndexScanDescData, ps_snapshot_data);
@@ -437,6 +443,8 @@ index_parallelscan_initialize(Relation heapRelation, Relation indexRelation,
{
Size offset;
+ Assert(snapshot != InvalidSnapshot);
+
RELATION_CHECKS;
offset = add_size(offsetof(ParallelIndexScanDescData, ps_snapshot_data),