Hi,
I'm quite intrigued by this place in StorageDatabase::makeKey (this one
translates MySQL key values to Falcon key values during the search).
It appears that we stop building a key when encountering a null value and
ignore all following ranges
Foreach key segment
if (nullFlag)
{
<blah>
break;
}
Endforeach
That is, when NULL is given in the first segment, we produce zero-length
Falcon key
So how does searching for NULL works in practice?
How does search range search in multisegment indexes
lower bound (a = NULL, b = const1)
upper bound (a = NULL ,b = const2)
is supposed to work?
Thanks for the answer!
My first suspicion is that NULLs are excluded because NULL is encoded the
same as numeric 0 (0x80 in index) and this lead to wrong answer. But I'd
prefer to hear a qualified answer on how it was originally designed and
supposed to work.