From: | Richard Huxton <dev(at)archonet(dot)com> |
---|---|
To: | sad <sad(at)bankir(dot)ru> |
Cc: | Rosser Schwarz <rosser(dot)schwarz(at)gmail(dot)com>, pgsql-sql(at)postgresql(dot)org |
Subject: | Re: feature request ? |
Date: | 2004-06-25 08:33:30 |
Message-ID: | 40DBE35A.70104@archonet.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
sad wrote:
> On Friday 25 June 2004 09:37, Rosser Schwarz wrote:
>
>>On Fri, 25 Jun 2004 08:16:47 +0400, sad <sad(at)bankir(dot)ru> wrote:
>>
>>>>Very simply, a boolean may have to values: true or false. It's also
>>>>possible that it's not been set to anything (NULL).
>>>
>>>really ?
>>>what about (13 < NULL)::BOOL
>>
>>Per the semantics of NULL, 13 is neither greater than nor less than
>>NULL. NULL is the *unknown* value; it's impossible to meaningfully
>>compare it to anything else. Try (NULL = NULL)::boolean. It's NULL,
>>also.
>
>
> READ THE THREAD BEFORE ANSWER
WHAT MAKES YOU THINK HE HASN'T?
OH, AND WHY ARE WE SHOUTING?
Your main argument seems to be:
1. A boolean value may have 3 states: true/false/null
2. The "if" statement has only if/then/else/endif
3. The "if" statement needs to be expanded to include "elsenull" or
similar.
Now, you can argue for/against special-casing nulls, but all other
languages cope with defined(), isset() etc. tests.
The key point of argument, and where the problem is with your (13 <
NULL)::BOOL point is this:
- Boolean _values_ can have one of two states: true/false
- Boolean _variables_ can have one of three states: true/false/null
What you had in your example was an undefined boolean variable, not a
boolean value with a third state. You can argue that the null in
question is of type boolean (I don't), but it is explicitly _not_ a value.
Now, your point that:
IF (...)=true
is not the same as
IF NOT((...)=false)
is a good one. Handling of NULLs causes a great deal of pain to
inexperienced and experienced developers alike. You might be interested
in the archives at http://www.dbdebunk.com/ which IIRC contains some
articles arguing against nulls at all in a relational system.
--
Richard Huxton
Archonet Ltd
From | Date | Subject | |
---|---|---|---|
Next Message | Richard Huxton | 2004-06-25 08:37:55 | Re: Normalising an existing table - how? |
Previous Message | sad | 2004-06-25 07:54:05 | Re: feature request ? |