po 29. 10. 2018 v 7:35 odesílatel Fabien COELHO <coelho@cri.ensmp.fr> napsal:
Hello Pavel,
> I try to create operator + for varchar and integer with Oracle behave. > > create or replace function sum(varchar, int) > returns int as $$ select $1::int + $2 $$ language sql; > > create operator + (function = sum, leftarg = varchar, rightarg = int, commutator = +); > > create table foo2(a varchar); > insert into foo2 values('10'); > select a + 1 from foo2; -- it is ok > > but > > select 1 + a from foo2; -- fails > > ERROR: operator is only a shell: integer + character varying > LINE 1: select 1 + a from foo2; > > Why? This should be solved by COMMUTATOR = +
Nope. I understand commutator to be an optimization thing declaration for joins, it does not create another operator per se.