Re: NULLs: theoretical problems?
From: V.J. Kumar <vjkmail_at_gmail.com>
Date: Wed, 22 Aug 2007 17:37:27 +0200 (CEST)
Message-ID: <Xns999476473C10Cvdghher_at_194.177.96.26>
>> Jan Hidders <hidd..._at_gmail.com> wrote
>> innews:1187766113.827952.167510_at_i38g2000prf.googlegroups.com:
>>
>>
>>
>> > On 22 aug, 00:06, "V.J. Kumar" <vjkm..._at_gmail.com> wrote:
>> >> Jan Hidders <hidd..._at_gmail.com> wrote
>> >> innews:1187729150.610272.117790_at_r29g2000hsg.googlegroups.com:
>> >> >> I do not understand. You have:
>>
>> >> >> DEF y y DEF y:y
>> >> >> 1 1 1 (1)
>> >> >> 1 0 0 (2)
>> >> >> 0 0 (3)
>>
>> >> >> So 'DEF y:y' will give the same result when y is either
>> >> >> undefined or 'false', rows (2) and (3). How is it not
>> >> >> substituting 'false' for undefined ?
>>
>> >> > In the way that if y is undefined then "DEF y : f" is not always
>> >> > equivalent with "f[y/false]" i.e. "f" with all free occurrence
>> >> > of y replaced with "false".
>>
>> >> I do not understand. Could you show what you mean with an example
>> >> ?
>>
>> > If y is undefined then "DEF y : NOT(y)" evaluates to "false".
>>
>> Is it not what line(3) shows and what SQL queries do, namely
>> substituting 'false' for unknown ?
Date: Wed, 22 Aug 2007 17:37:27 +0200 (CEST)
Message-ID: <Xns999476473C10Cvdghher_at_194.177.96.26>
Jan Hidders <hidders_at_gmail.com> wrote in news:1187787815.215103.100820_at_k79g2000hse.googlegroups.com:
> On 22 aug, 13:23, "V.J. Kumar" <vjkm..._at_gmail.com> wrote:
>> Jan Hidders <hidd..._at_gmail.com> wrote
>> innews:1187766113.827952.167510_at_i38g2000prf.googlegroups.com:
>>
>>
>>
>> > On 22 aug, 00:06, "V.J. Kumar" <vjkm..._at_gmail.com> wrote:
>> >> Jan Hidders <hidd..._at_gmail.com> wrote
>> >> innews:1187729150.610272.117790_at_r29g2000hsg.googlegroups.com:
>> >> >> I do not understand. You have:
>>
>> >> >> DEF y y DEF y:y
>> >> >> 1 1 1 (1)
>> >> >> 1 0 0 (2)
>> >> >> 0 0 (3)
>>
>> >> >> So 'DEF y:y' will give the same result when y is either
>> >> >> undefined or 'false', rows (2) and (3). How is it not
>> >> >> substituting 'false' for undefined ?
>>
>> >> > In the way that if y is undefined then "DEF y : f" is not always
>> >> > equivalent with "f[y/false]" i.e. "f" with all free occurrence
>> >> > of y replaced with "false".
>>
>> >> I do not understand. Could you show what you mean with an example
>> >> ?
>>
>> > If y is undefined then "DEF y : NOT(y)" evaluates to "false".
>>
>> Is it not what line(3) shows and what SQL queries do, namely
>> substituting 'false' for unknown ?
> > Yes, it is what line 3 shows, but I would not describe that as > "substituting 'false' for unknown".
In your language, the expression 'def y:x AND y' where 'y' is 'undefined' evaluates to 'false'. In SQL, the expression 'x AND y' where 'y'is 'unknown' evaluates to 'unknown'. The effect of having a predicate that evaluates to 'unknown' is the same as having a predicate that evaluates to 'false': no rows will be selected. That's what I meant by "substituting 'false' for unknown".
>In fact, I have no idea what you > mean with that phrase. I can think of a few meanings but none of those > is what SQL does. > > -- Jan Hidders >Received on Wed Aug 22 2007 - 17:37:27 CEST