differences between <> and != when using signed values on the right hand side

Поиск
Список
Период
Сортировка
От David Hunnisett
Тема differences between <> and != when using signed values on the right hand side
Дата
Msg-id B9C40FC5-5FA1-40DF-BC91-114493622F61@probit.io
обсуждение исходный текст
Ответы Re: differences between <> and != when using signed values on the right hand side
Список pgsql-bugs
When using a signed comparison != does not behave like <> if the right hand side comparator is signed and there is no space between the comparator and the sign

<>+1
<>-1 
Both bahave as the inverse to
=+1
=-1
But 
!=-1
!=+1
Throw errors.


Tested with 16.3,13.15 and 9.6.24


postgres=# select version();

                                                          version                                                          

---------------------------------------------------------------------------------------------------------------------------

 PostgreSQL 16.3 (Debian 16.3-1.pgdg120+1) on aarch64-unknown-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit

(1 row)


postgres=# select 1<>-1.0;

 ?column? 

----------

 t

(1 row)


postgres=# select 1<>-1;

 ?column? 

----------

 t

(1 row)


postgres=# select 1!=-1.0;

ERROR:  operator does not exist: integer !=- numeric

LINE 1: select 1!=-1.0;

                ^

HINT:  No operator matches the given name and argument types. You might need to add explicit type casts.

postgres=# select 1!=-1;

ERROR:  operator does not exist: integer !=- integer

LINE 1: select 1!=-1;

                ^

HINT:  No operator matches the given name and argument types. You might need to add explicit type casts.


Adding a space does produce the expected answer


select 1!= -1.0;

 ?column? 

----------

 t

(1 row)



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

Предыдущее
От: Etsuro Fujita
Дата:
Сообщение: Re: BUG #18467: postgres_fdw (deparser) ignores LimitOption
Следующее
От: Japin Li
Дата:
Сообщение: Re: BUG #18467: postgres_fdw (deparser) ignores LimitOption