On Mon, Oct 17, 2016 at 1:39 PM, Jim Nasby <jim.na...@bluetreble.com> wrote:
> On 10/17/16 11:29 AM, Tom Lane wrote: > >> Jim Nasby <jim.na...@bluetreble.com> writes: >> >>> On 10/16/16 3:13 PM, Tom Lane wrote: >>> >>>> Related to this I'd also like to add a boolean XOR operator as that's a >>>>> relatively common request/question. >>>>> >>>> >> We have boolean XOR; it's spelled "<>". >>>> >>> >> I always forget about that... >>> >> >> Maybe it should be mentioned explicitly in the docs. >> > > Hrm, went to go add it and it appears we don't have a section for boolean > type operators. I guess I should add it to 9.1? > > There are no symbolic operators, just the standard SQL keywords: AND, OR, NOT. https://www.postgresql.org/docs/current/static/functions-logical.html Adding a note there pertaining to XOR should be sufficient. though, it doesn't work for boolean arrays. >>> >> >> Define doesn't work? >> > > I would expect array[true, false] XOR array[true, true] to return > array[false, true], but <> just returns a single true (since the arrays are > !=). > > Though, I guess what would make the most sense there is a map function > that would apply an operator or function to every element of a set of > arrays. But I don't see any way to do that without major changes to how > anyarray works. Yeah, your expectations seem off here given that: SELECT array[true, false]::boolean AND array[true, true]::boolean is invalid... David J.