-
- Downloads
Support "x IS NOT NULL" clauses as indexscan conditions. This turns out
to be just a minor extension of the previous patch that made "x IS NULL" indexable, because we can treat the IS NOT NULL condition as if it were "x < NULL" or "x > NULL" (depending on the index's NULLS FIRST/LAST option), just like IS NULL is treated like "x = NULL". Aside from any possible usefulness in its own right, this is an important improvement for index-optimized MAX/MIN aggregates: it is now reliably possible to get a column's min or max value cheaply, even when there are a lot of nulls cluttering the interesting end of the index.
Showing
- doc/src/sgml/catalogs.sgml 2 additions, 2 deletionsdoc/src/sgml/catalogs.sgml
- doc/src/sgml/indexam.sgml 3 additions, 2 deletionsdoc/src/sgml/indexam.sgml
- doc/src/sgml/indices.sgml 5 additions, 6 deletionsdoc/src/sgml/indices.sgml
- src/backend/access/common/scankey.c 3 additions, 3 deletionssrc/backend/access/common/scankey.c
- src/backend/access/gist/gistget.c 14 additions, 8 deletionssrc/backend/access/gist/gistget.c
- src/backend/access/gist/gistscan.c 8 additions, 5 deletionssrc/backend/access/gist/gistscan.c
- src/backend/access/nbtree/nbtutils.c 109 additions, 35 deletionssrc/backend/access/nbtree/nbtutils.c
- src/backend/executor/nodeIndexscan.c 23 additions, 6 deletionssrc/backend/executor/nodeIndexscan.c
- src/backend/optimizer/path/indxpath.c 3 additions, 4 deletionssrc/backend/optimizer/path/indxpath.c
- src/backend/optimizer/plan/createplan.c 8 additions, 4 deletionssrc/backend/optimizer/plan/createplan.c
- src/backend/optimizer/plan/planagg.c 24 additions, 14 deletionssrc/backend/optimizer/plan/planagg.c
- src/backend/utils/adt/selfuncs.c 15 additions, 13 deletionssrc/backend/utils/adt/selfuncs.c
- src/include/access/skey.h 14 additions, 11 deletionssrc/include/access/skey.h
- src/include/catalog/pg_am.h 2 additions, 2 deletionssrc/include/catalog/pg_am.h
- src/include/nodes/relation.h 2 additions, 2 deletionssrc/include/nodes/relation.h
- src/include/optimizer/planmain.h 2 additions, 1 deletionsrc/include/optimizer/planmain.h
- src/test/regress/expected/create_index.out 49 additions, 1 deletionsrc/test/regress/expected/create_index.out
- src/test/regress/sql/create_index.sql 9 additions, 1 deletionsrc/test/regress/sql/create_index.sql
Loading
Please register or sign in to comment