Precedence of bitwise operators

Started by Bauyrzhan Sakhariyevabout 3 years ago2 messages
#1Bauyrzhan Sakhariyev
baurzhansahariev@gmail.com

Hi! Do I get it right, that bitwise operations have the same precedence?

Query *SELECT 1 & 2 | 3, 3 | 1 & 2*
returns 3 and 2 respectively. See also
https://www.db-fiddle.com/f/iZHd8zG7A1HjbB6J2y8R7k/1. It looks like the
result is calculated from left to right and operators have
the same precedence.

I checked relevant documentation pages (
https://www.postgresql.org/docs/current/functions-bitstring.html and
https://www.postgresql.org/docs/current/sql-syntax-lexical.html) and
couldn't find any information about bitwise operations precedence, only
information about logical operations precedence.

I'm not saying it's a bug, rather trying to clarify as precedence of
bitwise operators is different in programming languages, say c++ (
https://en.cppreference.com/w/c/language/operator_precedence) or java (
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html)

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Bauyrzhan Sakhariyev (#1)
Re: Precedence of bitwise operators

Bauyrzhan Sakhariyev <baurzhansahariev@gmail.com> writes:

Hi! Do I get it right, that bitwise operations have the same precedence?

Yes, that is what the documentation says:

https://www.postgresql.org/docs/current/sql-syntax-lexical.html#SQL-PRECEDENCE

Operator precedence is hard-wired into our parser, so we don't get
to have a lot of flexibility in assigning precedences for any except
a very small set of operator names.

regards, tom lane