Here is my next take on binary operators for integers.
It implements the following operators for int2/int4/int8:
~ - not
& - and
^ - xor
| - or
<< - shift left
>> - shift right
Notes:
* My original choice for xor was '#' because the '^' operator conflicts
with power operator on floats but Tom Lane said:
> Well, you *could* use '^' since there's no definition of it for integer
> operands. But that would mean that something like '4^2', which was
> formerly implicitly coerced to float and interpreted as floating
> power function, would suddenly mean something different. Again a
> serious risk of silently breaking applications. This doesn't apply to
> '|' though, since it has no numeric interpretation at all right now.
As the bit-string uses '^' too for xor-ing it would be nice to be
consistent. I am quite unsure on this matter. The patch now seems
otherwise sane to me, this is the only issue left.
* On << and >> the second argument is always int32 as this seems
to be the 'default' int type in PostgreSQL.
* Oids used are 1874 - 1909.
Comments?
Patch is against current CVS.
--
marko