Thread: Overloading '<' operator

Overloading '<' operator

From
trisuresh@yahoo.co.in (Suresh Tri)
Date:
Hi all,
 I was trying to overload '<' operator for (varchar,varchar). But  in
the function which handles the comparision I want to use the previous
'<' operator.. but it is going into a recursion.

My simplified code looks like :

create or replace function orastringcmp (varchar, varchar) returns
boolean as
'declare
        firstarg        alias for $1;
        secondarg       alias for $2;
begin
        return firstarg < secondarg;
end;
'language 'plpgsql';

create operator < (
        procedure = orastringcmp,
        leftarg = varchar,
        rightarg = varchar
);

Can any one tell how to use the previous version of ooperator while
overloading one. Are there any material online which gives the
detailed description of operator overloading? ( i could not find much
information apart from CREATE OPERATOR documentation )

Thanks,
Abhiman

Re: Overloading '<' operator

From
Peter Eisentraut
Date:
Am Dienstag, 31. August 2004 15:18 schrieb Suresh Tri:
> Can any one tell how to use the previous version of ooperator while
> overloading one.

Don't call the previous operator, call the function underlying the previous
operator.

--
Peter Eisentraut
http://developer.postgresql.org/~petere/

Re: Overloading '<' operator

From
Tom Lane
Date:
Peter Eisentraut <peter_e@gmx.net> writes:
> Am Dienstag, 31. August 2004 15:18 schrieb Suresh Tri:
>> Can any one tell how to use the previous version of ooperator while
>> overloading one.

> Don't call the previous operator, call the function underlying the previous
> operator.

Or put them in different schemas and use a schema-qualified operator
reference (x operator(foo.<) y).  But if you actually *replace* the
previous definition of the operator, there's no way you can expect
to still be able to use it.

            regards, tom lane

Re: Overloading '<' operator

From
trisuresh@yahoo.co.in (Suresh Tri)
Date:
I used the internal function text_pattern_lt and it is working fine!
Thanks for helping.

cheers
Suresh