Finally, all the components are in place, and it is possible to create the operator class that's needed by the index:
CREATE OPERATOR CLASS sva_special_ops
FOR TYPE text USING btree
AS
OPERATOR 1 <# ,
OPERATOR 2 <=# ,
OPERATOR 3 = ,
OPERATOR 4 >=# ,
OPERATOR 5 ># ,
FUNCTION 1 si_same(text, text);
The CREATE OPERATOR CLASS command connects strategies and operators to OPERATOR 1. <# means that strategy 1 will use the <# operator. Finally, the the _same function is connected with the operator class.
Note that the operator class has a name, and that it has been explicitly defined to work with B-trees. The operator class can already be used during index creation:
CREATE INDEX idx_special ON t_sva (sva sva_special_ops);
Creating an index works in a slightly different way than before: sva sva_special_ops means that the sva column is indexed using the sva_special_ops operator class. If sva_special_ops is not explicitly used, then PostgreSQL will not go for our special sort order, and will instead decide on the default operator class.