From 305d89ad93ff6eb3eecae485bbfb2531a349906f Mon Sep 17 00:00:00 2001 From: Tomas Vondra Date: Sun, 19 Feb 2023 00:41:18 +0100 Subject: [PATCH] Fix handling of multi-column BRIN indexes When evaluating clauses on multiple scan keys of a multi-column BRIN index, we can stop processing as soon as we find a scan key eliminating the range, and the range should not be added to tbe bitmap. That's how it worked before 14, but since a681e3c107a the code treated the range as matching if it matched at least the last scan key. Backpatch to 14, where this code was introduced. Backpatch-through: 14 Discussion: https://postgr.es/m/ebc18613-125e-60df-7520-fcbe0f9274fc%40enterprisedb.com --- src/backend/access/brin/brin.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/backend/access/brin/brin.c b/src/backend/access/brin/brin.c index e88f7efa7e..4b82c6b236 100644 --- a/src/backend/access/brin/brin.c +++ b/src/backend/access/brin/brin.c @@ -686,6 +686,13 @@ bringetbitmap(IndexScanDesc scan, TIDBitmap *tbm) break; } } + + /* + * If we found a scan key eliminating the range, no need to + * check additional ones. + */ + if (!addrange) + break; } } }