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