Improve nbtree unsatisfiable RowCompare detection.
Peter Geoghegan <pg@bowt.ie>
Improve nbtree unsatisfiable RowCompare detection. Move nbtree's detection of RowCompare quals that are unsatisfiable due to having a NULL in their first row element: rather than detecting these cases at the point where _bt_first builds its insertion scan key, do so earlier, during preprocessing proper. This brings the RowCompare case in line every other case involving an unsatisfiable-due-to-NULL qual. nbtree now consistently detects such unsatisfiable quals -- even when they happen to involve a key that isn't examined by _bt_first at all. Affected cases thereby avoid useless full index scans that cannot possibly return any matching rows. Author: Peter Geoghegan <pg@bowt.ie> Reviewed-By: Matthias van de Meent <boekewurm+postgres@gmail.com> Discussion: https://postgr.es/m/CAH2-WzmySVXst2hFrOATC-zw1Byg1XC-jYUS314=mzuqsNwk+Q@mail.gmail.com
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/access/nbtree/nbtsearch.c | modified | +13 −13 |
| src/backend/access/nbtree/nbtutils.c | modified | +11 −3 |
| src/test/regress/expected/btree_index.out | modified | +127 −0 |
| src/test/regress/expected/create_index.out | modified | +13 −0 |
| src/test/regress/sql/btree_index.sql | modified | +79 −0 |
| src/test/regress/sql/create_index.sql | modified | +5 −0 |
Discussion
- More reliable nbtree detection of unsatisfiable RowCompare quals involving a leading NULL key/element 4 messages · 2024-12-23 → 2025-01-07