On Saturday 06 January 2001 17:56, Tom Lane wrote:
> "Robert B. Easter" <reaster@comptechnews.com> writes:
> > The IS operator is supposed to return only TRUE or FALSE, never NULL.
> > See ISO/IEC 9075-2:1999 6.30 <boolean value expression>
>
> Yeah, we do not implement IS TRUE, IS FALSE, etc per spec. IS [NOT] NULL
> is the only one of the group that works per-spec; the others all
> erroneously produce NULL for null input, and IS UNKNOWN isn't there at all.
>
> I've had that on my to-do list for awhile, but it's pretty low priority.
>
> > pgcvs=# select (nullfield = 'willbenull') is (false is false) from
> > nulltest; ERROR: parser: parse error at or near "("
> >
> > The IS operator has a problem if right side is in parenthesis.
>
> I'd be interested to know how you derive that expression from the spec.
> By my reading of the grammar, IS is supposed to be followed by one or
> two literal keywords, not an expression.
>
> regards, tom lane
<boolean test> ::=
<boolean primary> [ IS [ NOT ] <truth value> ]
<truth value> ::=
TRUE
| FALSE
| UNKNOWN
You're right about the spec. I guess there is some good reason not to allow
IS to take expressions on the right like AND and OR, even though I feel like
IS is just like AND and OR as an op that takes two boolean args and returns a
boolean (true/false only).
--
-------- Robert B. Easter reaster@comptechnews.com ---------
-- CompTechNews Message Board http://www.comptechnews.com/ --
-- CompTechServ Tech Services http://www.comptechserv.com/ --
---------- http://www.comptechnews.com/~reaster/ ------------