pgsql: Push index operator lossiness determination down to GIST/GIN

From: tgl(at)postgresql(dot)org (Tom Lane)
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Push index operator lossiness determination down to GIST/GIN
Date: 2008-04-14 17:05:34
Message-ID: 20080414170534.3DA9A7559CC@cvs.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Log Message:
-----------
Push index operator lossiness determination down to GIST/GIN opclass
"consistent" functions, and remove pg_amop.opreqcheck, as per recent
discussion. The main immediate benefit of this is that we no longer need
8.3's ugly hack of requiring @@@ rather than @@ to test weight-using tsquery
searches on GIN indexes. In future it should be possible to optimize some
other queries better than is done now, by detecting at runtime whether the
index match is exact or not.

Tom Lane, after an idea of Heikki's, and with some help from Teodor.

Modified Files:
--------------
pgsql/contrib/btree_gist:
btree_bit.c (r1.7 -> r1.8)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/btree_gist/btree_bit.c?r1=1.7&r2=1.8)
btree_bytea.c (r1.6 -> r1.7)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/btree_gist/btree_bytea.c?r1=1.6&r2=1.7)
btree_cash.c (r1.5 -> r1.6)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/btree_gist/btree_cash.c?r1=1.5&r2=1.6)
btree_date.c (r1.4 -> r1.5)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/btree_gist/btree_date.c?r1=1.4&r2=1.5)
btree_float4.c (r1.5 -> r1.6)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/btree_gist/btree_float4.c?r1=1.5&r2=1.6)
btree_float8.c (r1.5 -> r1.6)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/btree_gist/btree_float8.c?r1=1.5&r2=1.6)
btree_gist.sql.in (r1.19 -> r1.20)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/btree_gist/btree_gist.sql.in?r1=1.19&r2=1.20)
btree_inet.c (r1.7 -> r1.8)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/btree_gist/btree_inet.c?r1=1.7&r2=1.8)
btree_int2.c (r1.5 -> r1.6)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/btree_gist/btree_int2.c?r1=1.5&r2=1.6)
btree_int4.c (r1.5 -> r1.6)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/btree_gist/btree_int4.c?r1=1.5&r2=1.6)
btree_int8.c (r1.5 -> r1.6)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/btree_gist/btree_int8.c?r1=1.5&r2=1.6)
btree_interval.c (r1.9 -> r1.10)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/btree_gist/btree_interval.c?r1=1.9&r2=1.10)
btree_macaddr.c (r1.5 -> r1.6)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/btree_gist/btree_macaddr.c?r1=1.5&r2=1.6)
btree_numeric.c (r1.9 -> r1.10)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/btree_gist/btree_numeric.c?r1=1.9&r2=1.10)
btree_oid.c (r1.5 -> r1.6)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/btree_gist/btree_oid.c?r1=1.5&r2=1.6)
btree_text.c (r1.9 -> r1.10)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/btree_gist/btree_text.c?r1=1.9&r2=1.10)
btree_time.c (r1.12 -> r1.13)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/btree_gist/btree_time.c?r1=1.12&r2=1.13)
btree_ts.c (r1.13 -> r1.14)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/btree_gist/btree_ts.c?r1=1.13&r2=1.14)
uninstall_btree_gist.sql (r1.4 -> r1.5)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/btree_gist/uninstall_btree_gist.sql?r1=1.4&r2=1.5)
pgsql/contrib/cube:
cube.c (r1.34 -> r1.35)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/cube/cube.c?r1=1.34&r2=1.35)
cube.sql.in (r1.23 -> r1.24)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/cube/cube.sql.in?r1=1.23&r2=1.24)
uninstall_cube.sql (r1.7 -> r1.8)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/cube/uninstall_cube.sql?r1=1.7&r2=1.8)
pgsql/contrib/hstore:
hstore.sql.in (r1.8 -> r1.9)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/hstore/hstore.sql.in?r1=1.8&r2=1.9)
hstore_gin.c (r1.2 -> r1.3)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/hstore/hstore_gin.c?r1=1.2&r2=1.3)
hstore_gist.c (r1.7 -> r1.8)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/hstore/hstore_gist.c?r1=1.7&r2=1.8)
uninstall_hstore.sql (r1.6 -> r1.7)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/hstore/uninstall_hstore.sql?r1=1.6&r2=1.7)
pgsql/contrib/intarray:
_int.sql.in (r1.27 -> r1.28)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/intarray/_int.sql.in?r1=1.27&r2=1.28)
_int_gin.c (r1.5 -> r1.6)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/intarray/_int_gin.c?r1=1.5&r2=1.6)
_int_gist.c (r1.19 -> r1.20)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/intarray/_int_gist.c?r1=1.19&r2=1.20)
_intbig_gist.c (r1.16 -> r1.17)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/intarray/_intbig_gist.c?r1=1.16&r2=1.17)
uninstall__int.sql (r1.8 -> r1.9)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/intarray/uninstall__int.sql?r1=1.8&r2=1.9)
pgsql/contrib/ltree:
_ltree_gist.c (r1.22 -> r1.23)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/ltree/_ltree_gist.c?r1=1.22&r2=1.23)
ltree.sql.in (r1.16 -> r1.17)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/ltree/ltree.sql.in?r1=1.16&r2=1.17)
ltree_gist.c (r1.22 -> r1.23)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/ltree/ltree_gist.c?r1=1.22&r2=1.23)
uninstall_ltree.sql (r1.5 -> r1.6)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/ltree/uninstall_ltree.sql?r1=1.5&r2=1.6)
pgsql/contrib/pg_trgm:
pg_trgm.sql.in (r1.7 -> r1.8)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/pg_trgm/pg_trgm.sql.in?r1=1.7&r2=1.8)
trgm_gin.c (r1.2 -> r1.3)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/pg_trgm/trgm_gin.c?r1=1.2&r2=1.3)
trgm_gist.c (r1.12 -> r1.13)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/pg_trgm/trgm_gist.c?r1=1.12&r2=1.13)
uninstall_pg_trgm.sql (r1.5 -> r1.6)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/pg_trgm/uninstall_pg_trgm.sql?r1=1.5&r2=1.6)
pgsql/contrib/seg:
seg.c (r1.19 -> r1.20)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/seg/seg.c?r1=1.19&r2=1.20)
seg.sql.in (r1.16 -> r1.17)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/seg/seg.sql.in?r1=1.16&r2=1.17)
uninstall_seg.sql (r1.5 -> r1.6)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/seg/uninstall_seg.sql?r1=1.5&r2=1.6)
pgsql/contrib/tsearch2:
tsearch2.sql.in (r1.4 -> r1.5)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/tsearch2/tsearch2.sql.in?r1=1.4&r2=1.5)
pgsql/doc/src/sgml:
catalogs.sgml (r2.164 -> r2.165)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/catalogs.sgml?r1=2.164&r2=2.165)
func.sgml (r1.429 -> r1.430)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/func.sgml?r1=1.429&r2=1.430)
gin.sgml (r2.13 -> r2.14)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/gin.sgml?r1=2.13&r2=2.14)
gist.sgml (r1.29 -> r1.30)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/gist.sgml?r1=1.29&r2=1.30)
indexam.sgml (r2.25 -> r2.26)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/indexam.sgml?r1=2.25&r2=2.26)
textsearch.sgml (r1.42 -> r1.43)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/textsearch.sgml?r1=1.42&r2=1.43)
xindex.sgml (r1.61 -> r1.62)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/xindex.sgml?r1=1.61&r2=1.62)
pgsql/doc/src/sgml/ref:
alter_opfamily.sgml (r1.3 -> r1.4)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/ref/alter_opfamily.sgml?r1=1.3&r2=1.4)
create_opclass.sgml (r1.21 -> r1.22)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/ref/create_opclass.sgml?r1=1.21&r2=1.22)
pgsql/src/backend/access/gin:
ginarrayproc.c (r1.12 -> r1.13)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/gin/ginarrayproc.c?r1=1.12&r2=1.13)
ginget.c (r1.12 -> r1.13)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/gin/ginget.c?r1=1.12&r2=1.13)
pgsql/src/backend/access/gist:
gistget.c (r1.71 -> r1.72)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/gist/gistget.c?r1=1.71&r2=1.72)
gistproc.c (r1.13 -> r1.14)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/gist/gistproc.c?r1=1.13&r2=1.14)
pgsql/src/backend/commands:
opclasscmds.c (r1.59 -> r1.60)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/opclasscmds.c?r1=1.59&r2=1.60)
pgsql/src/backend/nodes:
copyfuncs.c (r1.391 -> r1.392)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/copyfuncs.c?r1=1.391&r2=1.392)
equalfuncs.c (r1.320 -> r1.321)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/equalfuncs.c?r1=1.320&r2=1.321)
pgsql/src/backend/parser:
gram.y (r2.611 -> r2.612)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/parser/gram.y?r1=2.611&r2=2.612)
pgsql/src/backend/utils/adt:
tsginidx.c (r1.10 -> r1.11)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/adt/tsginidx.c?r1=1.10&r2=1.11)
tsgistidx.c (r1.7 -> r1.8)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/adt/tsgistidx.c?r1=1.7&r2=1.8)
tsquery_gist.c (r1.4 -> r1.5)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/adt/tsquery_gist.c?r1=1.4&r2=1.5)
pgsql/src/bin/pg_dump:
pg_dump.c (r1.487 -> r1.488)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/bin/pg_dump/pg_dump.c?r1=1.487&r2=1.488)
pgsql/src/include/catalog:
catversion.h (r1.447 -> r1.448)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/catversion.h?r1=1.447&r2=1.448)
pg_amop.h (r1.85 -> r1.86)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/pg_amop.h?r1=1.85&r2=1.86)
pg_proc.h (r1.488 -> r1.489)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/pg_proc.h?r1=1.488&r2=1.489)
pgsql/src/include/nodes:
parsenodes.h (r1.361 -> r1.362)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/nodes/parsenodes.h?r1=1.361&r2=1.362)

Browse pgsql-committers by date

  From Date Subject
Next Message Andrew Dunstan 2008-04-15 12:16:51 pgsql: Make integer_datetimes the default for MSVC even if not mentioned
Previous Message Alvaro Herrera 2008-04-14 15:04:20 pgsql: Fix indentation in new REFERENCED BY psql output, per Brendan