Jianfeng Jia created ASTERIXDB-1212:
---------------------------------------

             Summary: Close-type list doesn't handle NULL well 
                 Key: ASTERIXDB-1212
                 URL: https://issues.apache.org/jira/browse/ASTERIXDB-1212
             Project: Apache AsterixDB
          Issue Type: Bug
          Components: Data Model
            Reporter: Jianfeng Jia


First, I observed the out of range access for the closed-type list and 
open-type list are quite different:
{code}
// closed type:
let $all := [ { "ka":"a1",  "kb":"b1"}, 
                 { "ka":"a2",  "kb":"b2"}]
return $all[3].ka
{code}
It returns a "", I think it should be null. 
If I change the type to a hytogenous type like below 
{code}
// open type:
let $all := [ { "ka":"a1",  "kb":"b1"}, 
                 { "ka":2,  "kb":"b2"}]
return $all[3].ka
{code}
It returns a null as expected. 

Furthermore, the closed-type will return the wrong result by just access field 
by index other than by name. Here is example
{code}
let $all := [ { "ka":"a1",  "kb":"b1"}, 
                   { "ka":"a2",  "kb":"b2"}]
for $x in $all
group by $k := $x.kb with $x
return { "g": $k, "s1": $x[1].ka}
{code}
It returns
{code}
{ "g": "b1", "s1": "b1" }
{ "g": "b2", "s1": "b2" }
{code}
It seems it skipped some offset directly without verify if the record is null 
or not. 

The open type doesn't have this problem. The following code 
{code}
let $all := [ { "ka":"a1",  "kb":"b1"}, 
                   { "ka":2,  "kb":"b2"}]  // change ka to 2 to make a 
heterogenous type list
for $x in $all
group by $k := $x.kb with $x
return { "g": $k, "s1": $x[1].ka}
{code}
will always return 
{code}
{ "g": "b1", "s1": null }
{ "g": "b2", "s1": null }
{code}




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to