aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomas Vondra <tomas.vondra@postgresql.org>2023-02-19 00:41:18 +0100
committerTomas Vondra <tomas.vondra@postgresql.org>2023-02-19 01:48:22 +0100
commitf3daa3116fad6aa85686aba5b54eaecc07e8f6cf (patch)
tree62aceeb4f192bf34efb7075b819b890e4dc78075
parent14345f3c6a7bc967b168bb1ed40de369a8998941 (diff)
downloadpostgresql-f3daa3116fad6aa85686aba5b54eaecc07e8f6cf.tar.gz
postgresql-f3daa3116fad6aa85686aba5b54eaecc07e8f6cf.zip
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
-rw-r--r--src/backend/access/brin/brin.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/backend/access/brin/brin.c b/src/backend/access/brin/brin.c
index 21a23842595..de7e96c70e6 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;
}
}
}