Allow GiST distance function to return merely a lower-bound.
The distance function can now set *recheck = false, like index quals. The executor will then re-check the ORDER BY expressions, and use a queue to reorder the results on the fly. This makes it possible to do kNN-searches on polygons and circles, which don't store the exact value in the index, but just a bounding box. Alexander Korotkov and me
Showing
- doc/src/sgml/gist.sgml 27 additions, 8 deletionsdoc/src/sgml/gist.sgml
- src/backend/access/gist/gistget.c 21 additions, 9 deletionssrc/backend/access/gist/gistget.c
- src/backend/access/gist/gistproc.c 37 additions, 0 deletionssrc/backend/access/gist/gistproc.c
- src/backend/access/gist/gistscan.c 5 additions, 0 deletionssrc/backend/access/gist/gistscan.c
- src/backend/executor/nodeIndexscan.c 376 additions, 3 deletionssrc/backend/executor/nodeIndexscan.c
- src/backend/optimizer/plan/createplan.c 58 additions, 15 deletionssrc/backend/optimizer/plan/createplan.c
- src/backend/utils/adt/geo_ops.c 27 additions, 0 deletionssrc/backend/utils/adt/geo_ops.c
- src/include/access/genam.h 3 additions, 0 deletionssrc/include/access/genam.h
- src/include/access/relscan.h 9 additions, 0 deletionssrc/include/access/relscan.h
- src/include/catalog/catversion.h 1 addition, 1 deletionsrc/include/catalog/catversion.h
- src/include/catalog/pg_amop.h 2 additions, 0 deletionssrc/include/catalog/pg_amop.h
- src/include/catalog/pg_amproc.h 2 additions, 0 deletionssrc/include/catalog/pg_amproc.h
- src/include/catalog/pg_operator.h 6 additions, 2 deletionssrc/include/catalog/pg_operator.h
- src/include/catalog/pg_proc.h 4 additions, 0 deletionssrc/include/catalog/pg_proc.h
- src/include/nodes/execnodes.h 20 additions, 0 deletionssrc/include/nodes/execnodes.h
- src/include/nodes/plannodes.h 8 additions, 2 deletionssrc/include/nodes/plannodes.h
- src/include/utils/geo_decls.h 3 additions, 0 deletionssrc/include/utils/geo_decls.h
- src/test/regress/expected/create_index.out 78 additions, 0 deletionssrc/test/regress/expected/create_index.out
- src/test/regress/sql/create_index.sql 12 additions, 0 deletionssrc/test/regress/sql/create_index.sql
Loading
Please register or sign in to comment