diff options
| author | Robert Haas <rhaas@postgresql.org> | 2012-02-02 13:10:56 -0500 |
|---|---|---|
| committer | Robert Haas <rhaas@postgresql.org> | 2012-02-02 13:10:56 -0500 |
| commit | 0ed7445d7317318ffed0d8dac9a06611771d315b (patch) | |
| tree | 56830c3c00148e5ab629fcde2f577ce1e0f9238a /src | |
| parent | b4e0741727685443657b55932da0c06f028fbc00 (diff) | |
| download | postgresql-0ed7445d7317318ffed0d8dac9a06611771d315b.tar.gz | |
Allow spgist's text_ops to handle pattern-matching operators.
This was presumably intended to work this way all along, but a few key
bits of indxpath.c didn't get the memo.
Robert Haas and Tom Lane
Diffstat (limited to 'src')
| -rw-r--r-- | src/backend/optimizer/path/indxpath.c | 4 | ||||
| -rw-r--r-- | src/include/catalog/pg_opfamily.h | 1 |
2 files changed, 4 insertions, 1 deletions
diff --git a/src/backend/optimizer/path/indxpath.c b/src/backend/optimizer/path/indxpath.c index d51e84a80a..82af494296 100644 --- a/src/backend/optimizer/path/indxpath.c +++ b/src/backend/optimizer/path/indxpath.c @@ -2847,7 +2847,7 @@ match_special_index_operator(Expr *clause, Oid opfamily, Oid idxcollation, /* * Must also check that index's opfamily supports the operators we will * want to apply. (A hash index, for example, will not support ">=".) - * Currently, only btree supports the operators we need. + * Currently, only btree and spgist support the operators we need. * * Note: actually, in the Pattern_Prefix_Exact case, we only need "=" so a * hash index would work. Currently it doesn't seem worth checking for @@ -2871,6 +2871,7 @@ match_special_index_operator(Expr *clause, Oid opfamily, Oid idxcollation, case OID_TEXT_ICREGEXEQ_OP: isIndexable = (opfamily == TEXT_PATTERN_BTREE_FAM_OID) || + (opfamily == TEXT_SPGIST_FAM_OID) || (opfamily == TEXT_BTREE_FAM_OID && (pstatus == Pattern_Prefix_Exact || lc_collate_is_c(idxcollation))); @@ -3454,6 +3455,7 @@ prefix_quals(Node *leftop, Oid opfamily, Oid collation, { case TEXT_BTREE_FAM_OID: case TEXT_PATTERN_BTREE_FAM_OID: + case TEXT_SPGIST_FAM_OID: datatype = TEXTOID; break; diff --git a/src/include/catalog/pg_opfamily.h b/src/include/catalog/pg_opfamily.h index 7b962dfe3f..41ebccccbc 100644 --- a/src/include/catalog/pg_opfamily.h +++ b/src/include/catalog/pg_opfamily.h @@ -145,5 +145,6 @@ DATA(insert OID = 3919 ( 783 range_ops PGNSP PGUID )); DATA(insert OID = 4015 ( 4000 quad_point_ops PGNSP PGUID )); DATA(insert OID = 4016 ( 4000 kd_point_ops PGNSP PGUID )); DATA(insert OID = 4017 ( 4000 text_ops PGNSP PGUID )); +#define TEXT_SPGIST_FAM_OID 4017 #endif /* PG_OPFAMILY_H */ |
