Re: BUG #13289: ANY() function produces a paradox

Поиск
Список
Период
Сортировка
От David G. Johnston
Тема Re: BUG #13289: ANY() function produces a paradox
Дата
Msg-id CAKFQuwbGesuhR-zKJtj0ddNxooSY-gDM-L5o-VNX0+gcGCGi-g@mail.gmail.com
обсуждение исходный текст
Ответ на Re: BUG #13289: ANY() function produces a paradox  (Alvaro Herrera <alvherre@2ndquadrant.com>)
Список pgsql-bugs
On Thu, May 14, 2015 at 10:01 PM, Alvaro Herrera <alvherre@2ndquadrant.com>
wrote:

> udtelco@gmail.com wrote:
> > The following bug has been logged on the website:
> >
> > Bug reference:      13289
> > Logged by:          Anton
> > Email address:      udtelco@gmail.com
> > PostgreSQL version: 9.3.2
> > Operating system:   Solaris 11.2
> > Description:
> >
> > select ('2' !=3D any('{2,3}')) , ('2' =3D any('{2,3}'))
> >
> > When !=3D (or <>) operator is applied to any() , results are wrong.
> Thereby,
> > you have a situation where x =3D y AND x !=3D y both evaluating as true=
.
>
> There is no paradox here.  When you specify "op ANY array", the operator =
is
> applied to each element in the array and the whole construct returns
> true if the operator yields true with any of the array elements.  2 !=3D =
3
> therefore 2 !=3D any ('{2,3}') is true.
>
> Maybe you want !=3D ALL instead of !=3D ANY.  With !=3D ALL, the element =
would
> be compared to every element and the whole construct would yield true
> only if all the operations yield true.
>

Using de Morgan::

http://en.wikipedia.org/wiki/De_Morgan%27s_laws

(A OR B) =3D> NOT (A OR B) =3D (NOT A AND NOT B)=E2=80=8B
(=E2=80=8Bx =3D ANY) =3D> NOT(x =3D ANY) =3D (X !=3D ALL)=E2=80=8B

ANY =3D OR; ALL =3D AND

David J.

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

Предыдущее
От: "David G. Johnston"
Дата:
Сообщение: Re: BUG #13289: ANY() function produces a paradox
Следующее
От: rodrigomiranda@hubsystem.com.br
Дата:
Сообщение: BUG #13295: help