BUG #15055: parenthesis disappear

Started by PG Bug reporting formabout 8 years ago2 messagesbugs
Jump to latest
#1PG Bug reporting form
noreply@postgresql.org

The following bug has been logged on the website:

Bug reference: 15055
Logged by: Andrei Mitran
Email address: andrei@ivc.com
PostgreSQL version: 9.6.1
Operating system: centos
Description:

alter table ivc.merit_matches
add constraint priced_or_slotted_job
check ((survey_code is null and slot_job_code is not null) or
(slot_job_code is null and survey_code is not null));
results in:
Check constraints:
"priced_or_slotted_job" CHECK (survey_code IS NULL AND slot_job_code IS
NOT NULL OR slot_job_code IS NULL AND survey_code IS NOT NULL)

What happened to my parens around the and conditions? I am not aware of any
precedence of and over or - Am i misinformed?

#2David G. Johnston
david.g.johnston@gmail.com
In reply to: PG Bug reporting form (#1)
Re: BUG #15055: parenthesis disappear

On Wed, Feb 7, 2018 at 9:04 AM, PG Bug reporting form <
noreply@postgresql.org> wrote:

The following bug has been logged on the website:

Bug reference: 15055
Logged by: Andrei Mitran
Email address: andrei@ivc.com
PostgreSQL version: 9.6.1
Operating system: centos
Description:

alter table ivc.merit_matches
add constraint priced_or_slotted_job
check ((survey_code is null and slot_job_code is not null) or
(slot_job_code is null and survey_code is not null));
results in:
Check constraints:
"priced_or_slotted_job" CHECK (survey_code IS NULL AND slot_job_code IS
NOT NULL OR slot_job_code IS NULL AND survey_code IS NOT NULL)

What happened to my parens around the and conditions? I am not aware of any
precedence of and over or - Am i misinformed?

​Yes, see:​


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

​AND > OR

The system parses inputs and stores them in object form in the catalogs -
then reconstructs a canonical representation when asked.

David J.