Re: binary operators on integers - Mailing list pgsql-patches

From Peter Eisentraut
Subject Re: binary operators on integers
Date
Msg-id Pine.LNX.4.21.0010242219020.1165-100000@peter.localdomain
Whole thread Raw
In response to binary operators on integers  (Marko Kreen <marko@l-t.ee>)
Responses Re: binary operators on integers
Re: binary operators on integers
List pgsql-patches
This patch was installed, with xor as "#".  The parser still needs work.
Besides the known issue of "|", this also parses funny:

=> select 5 & ~ 6;
ERROR:  Unable to identify a right operator '&' for type 'int4'


Marko Kreen writes:

> 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.
>
>

--
Peter Eisentraut      peter_e@gmx.net       http://yi.org/peter-e/


pgsql-patches by date:

Previous
From: Peter Eisentraut
Date:
Subject: Re: add darwin/osxpb support to cvs
Next
From: Marko Kreen
Date:
Subject: Re: binary operators on integers