I got several suggestions to include ordering operator for tsvector to aim grouping, union and except etc.

I wrote silly comparing function (byte to byte with some optimizations), but I wondered that for using operator < in order clause its need to declate B-tree opclass for type:

regression=# select  a from test_tsvector order by a;
ERROR:  could not identify an ordering operator for type tsvector
HINT:  Use an explicit ordering operator or modify the query.

I see in
backend/utils/cache/typcache.c near line 169:

if ((flags & TYPECACHE_LT_OPR) && typentry->lt_opr == InvalidOid)
{
if (typentry->btree_opc != InvalidOid)
typentry->lt_opr = get_opclass_member(typentry->btree_opc,InvalidOid, BTLessStrategyNumber);
}


So, I must declare b-tree opclass for tsvector. Why?
My supposition is to guarantee that operator < is really 'less-than' one. Is it?




-- Teodor Sigaev E-mail: [EMAIL PROTECTED]

---------------------------(end of broadcast)---------------------------
TIP 9: the planner will ignore your desire to choose an index scan if your
     joining column's datatypes do not match

Reply via email to