Hello, On Fri, Feb 02, 2018 at 06:03:27PM +0300, Ildus Kurbangaliev wrote: > Hi, > > Attached patch introduces prefix operator ^@ for text type. For 'a ^@ b' > it returns true if 'a' starts with 'b'. Also there is spgist index > support for this operator. > > It could be useful as an alternative for LIKE for 'something%' > templates. Or even used in LIKE queries instead of ~>=~ and ~<~ in the > future. But it would require new strategy for btree.
I've looked at the patch. It is applied and tests pass. I have a couple comments: > + if (ptype == Pattern_Type_Prefix) > + { > + char *s = TextDatumGetCString(constval); > + prefix = string_to_const(s, vartype); > + pstatus = Pattern_Prefix_Partial; > + rest_selec = 1.0; /* all */ > + pfree(s); > + } > + else > + pstatus = pattern_fixed_prefix(patt, ptype, collation, > + > &prefix, &rest_selec); I think it is better to put Pattern_Type_Prefix processing into pattern_fixed_prefix() as another case entry. Secondly, it is worth to fix the documentation. At least here [1]. Maybe there are another places where documentation should be fixed. 1 - https://www.postgresql.org/docs/current/static/spgist-builtin-opclasses.html -- Arthur Zakirov Postgres Professional: http://www.postgrespro.com Russian Postgres Company