Thread: Precedence of bitwise operators

Precedence of bitwise operators

From
Bauyrzhan Sakhariyev
Date:
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)


Re: Precedence of bitwise operators

From
Tom Lane
Date:
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