PostgreSQL 9.5 operator precedence

Поиск
Список
Период
Сортировка
От Андрей Авакимов
Тема PostgreSQL 9.5 operator precedence
Дата
Msg-id 1474351364.271814.29325.2780@mail.rambler.ru
обсуждение исходный текст
Ответы Re: PostgreSQL 9.5 operator precedence  ("David G. Johnston" <david.g.johnston@gmail.com>)
Список pgsql-sql
<p><span style="font-family: 'Courier New','Courier';">Hello, </span><br /><span style="font-family: 'Courier
New','Courier';">I'vegot a question about operator precedence is version 9.5</span><br /><br /><span
style="font-family:'Courier New','Courier';">Versions lower than 9.5 worked well with constructions like</span><br
/><spanstyle="font-family: 'Courier New','Courier';">    select a is null = b is null</span><br /><span
style="font-family:'Courier New','Courier';">(it calculates if a is null, then if b is null and then compare two
booleans)</span><br/><br /><span style="font-family: 'Courier New','Courier';">But now everything is changed, and
official9.5 documentations says that </span><br /><span style="font-family: 'Courier New','Courier';">IS operator has
lowerprecedence than = operator</span><br /><br /><span style="font-family: 'Courier New','Courier';">The thing I don't
understandis the error message that I receive:</span><br /><br /><span style="font-family: 'Courier New','Courier';">  
 select1 is null = 2 is null;</span><br /><span style="font-family: 'Courier New','Courier';">  
 -----------------------------</span><br/><span style="font-family: 'Courier New','Courier';">    ERROR:  operator does
notexist: boolean = integer</span><br /><span style="font-family: 'Courier New','Courier';">    LINE 1: select 1 is
null= 2 is null</span><br /><span style="font-family: 'Courier New','Courier';">                            
^</span><br/><span style="font-family: 'Courier New','Courier';">    HINT:  No operator matches the given name and
argumenttype(s). You might need to add explicit type casts.</span><br /><br /><span style="font-family: 'Courier
New','Courier';">Forme it means that postgres calculated value in the left side of the = operator, then it decided not
tocalculate right side and compare boolean and integer.</span><br /><span style="font-family: 'Courier
New','Courier';">Whydid it not compare null and 2 firstly? </span><br /><span style="font-family: 'Courier
New','Courier';">Maybethe truth is IS operator and = operator has the same precedence, and then calculated from left to
right?</span><br/><span style="font-family: 'Courier New','Courier';">Maybe I miss something?</span><br /><br /><span
style="font-family:'Courier New','Courier';">Best Regards,</span><br /><span style="font-family: 'Courier
New','Courier';">Andrew</span><br/><br /><br /><br /><br /><br /> 

В списке pgsql-sql по дате отправления:

Предыдущее
От: Andreas Kretschmer
Дата:
Сообщение: Re: error-org.postgresql.Driver for 9.5.3 postgres version
Следующее
От: "David G. Johnston"
Дата:
Сообщение: Re: PostgreSQL 9.5 operator precedence