mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-10-01 13:01:20 +02:00
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
This commit is contained in:
parent
b4e0741727
commit
0ed7445d73
@ -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
|
* Must also check that index's opfamily supports the operators we will
|
||||||
* want to apply. (A hash index, for example, will not support ">=".)
|
* 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
|
* 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
|
* 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:
|
case OID_TEXT_ICREGEXEQ_OP:
|
||||||
isIndexable =
|
isIndexable =
|
||||||
(opfamily == TEXT_PATTERN_BTREE_FAM_OID) ||
|
(opfamily == TEXT_PATTERN_BTREE_FAM_OID) ||
|
||||||
|
(opfamily == TEXT_SPGIST_FAM_OID) ||
|
||||||
(opfamily == TEXT_BTREE_FAM_OID &&
|
(opfamily == TEXT_BTREE_FAM_OID &&
|
||||||
(pstatus == Pattern_Prefix_Exact ||
|
(pstatus == Pattern_Prefix_Exact ||
|
||||||
lc_collate_is_c(idxcollation)));
|
lc_collate_is_c(idxcollation)));
|
||||||
@ -3454,6 +3455,7 @@ prefix_quals(Node *leftop, Oid opfamily, Oid collation,
|
|||||||
{
|
{
|
||||||
case TEXT_BTREE_FAM_OID:
|
case TEXT_BTREE_FAM_OID:
|
||||||
case TEXT_PATTERN_BTREE_FAM_OID:
|
case TEXT_PATTERN_BTREE_FAM_OID:
|
||||||
|
case TEXT_SPGIST_FAM_OID:
|
||||||
datatype = TEXTOID;
|
datatype = TEXTOID;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -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 = 4015 ( 4000 quad_point_ops PGNSP PGUID ));
|
||||||
DATA(insert OID = 4016 ( 4000 kd_point_ops PGNSP PGUID ));
|
DATA(insert OID = 4016 ( 4000 kd_point_ops PGNSP PGUID ));
|
||||||
DATA(insert OID = 4017 ( 4000 text_ops PGNSP PGUID ));
|
DATA(insert OID = 4017 ( 4000 text_ops PGNSP PGUID ));
|
||||||
|
#define TEXT_SPGIST_FAM_OID 4017
|
||||||
|
|
||||||
#endif /* PG_OPFAMILY_H */
|
#endif /* PG_OPFAMILY_H */
|
||||||
|
Loading…
Reference in New Issue
Block a user