mirror of
https://github.com/postgres/postgres.git
synced 2025-07-02 09:02:37 +03:00
Add text-vs-name cross-type operators, and unify name_ops with text_ops.
Now that name comparison has effectively the same behavior as text comparison, we might as well merge the name_ops opfamily into text_ops, allowing cross-type comparisons to be processed without forcing a datatype coercion first. We need do little more than add cross-type operators to make the opfamily complete, and fix one or two places in the planner that assumed text_ops was a single-datatype opfamily. I chose to unify hash name_ops into hash text_ops as well, since the types have compatible hashing semantics. This allows marking the new cross-type equality operators as oprcanhash. (Note: this doesn't remove the name_ops opclasses, so there's no breakage of index definitions. Those opclasses are just reparented into the text_ops opfamily.) Discussion: https://postgr.es/m/15938.1544377821@sss.pgh.pa.us
This commit is contained in:
@ -1292,14 +1292,12 @@ patternsel(PG_FUNCTION_ARGS, Pattern_Type ptype, bool negate)
|
||||
switch (vartype)
|
||||
{
|
||||
case TEXTOID:
|
||||
case NAMEOID:
|
||||
opfamily = TEXT_BTREE_FAM_OID;
|
||||
break;
|
||||
case BPCHAROID:
|
||||
opfamily = BPCHAR_BTREE_FAM_OID;
|
||||
break;
|
||||
case NAMEOID:
|
||||
opfamily = NAME_BTREE_FAM_OID;
|
||||
break;
|
||||
case BYTEAOID:
|
||||
opfamily = BYTEA_BTREE_FAM_OID;
|
||||
break;
|
||||
|
Reference in New Issue
Block a user