PG 9.2.2, Windows, empty database

just curious, redefinition of various operators seems to work nicely but
"text to text" operator redefinition (last block down here) seems
completely ignored:

set search_path to public;

select 'aa'::varchar = 'aa  '::varchar;  -- returns false
create or replace function public.opr_vceqvc(varchar, varchar)
  returns boolean as
  $$
    select rtrim($1)=rtrim($2)
  $$
  language sql immutable;
create operator public.= (leftarg = varchar, rightarg = varchar, procedure
= public.opr_vceqvc,  commutator = =, negator = <>, restrict = eqsel, join
= eqjoinsel, hashes, merges);
select 'aa'::varchar = 'aa  '::varchar;  -- returns true
drop operator if exists public.= (varchar, varchar);


select 'aa'::text = 'aa  '::varchar;  -- returns false
create or replace function public.opr_txeqvc(text, varchar)
  returns boolean as
  $$
    select rtrim($1)=rtrim($2)
  $$
  language sql immutable;
create operator public.= (leftarg = text, rightarg = varchar, procedure =
public.opr_txeqvc,  commutator = =, negator = <>, restrict = eqsel, join =
eqjoinsel, hashes, merges);
select 'aa'::text = 'aa  '::varchar;  -- returns true
drop operator if exists public.= (text, varchar);


select 'aa'::text = 'aa  '::text;  -- returns false
create or replace function public.opr_txeqtx(text, text)
  returns boolean as
  $$
    -- select rtrim($1)=rtrim($2);
    select true;
  $$
  language sql immutable;
create operator public.= (leftarg = text, rightarg = text, procedure =
public.opr_txeqtx,  commutator = =, negator = <>, restrict = eqsel, join =
eqjoinsel, hashes, merges);
select 'aa'::text = 'aa  '::text;  -- ALWAYS RETURNS FALSE!
drop operator if exists public.= (text, text);





-- 
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

Reply via email to