Jungtaek Lim created CALCITE-1401:
-------------------------------------

             Summary: SqlFunctions.arrayItem doesn't respect SQL standard when 
accessing array with index out of bound
                 Key: CALCITE-1401
                 URL: https://issues.apache.org/jira/browse/CALCITE-1401
             Project: Calcite
          Issue Type: Bug
          Components: core
    Affects Versions: 1.9.0
            Reporter: Jungtaek Lim
            Assignee: Julian Hyde


Below is the comment from Julian:
https://github.com/apache/calcite/pull/283#issuecomment-250353662

{quote}
I have a question about testNestedArrayOutOfBoundAccess. You go with 
PostgreSQL's semantics (return null) rather than standard SQL (throw an 
exception). I'd prefer to go with the standard behavior, and return null only 
if enabled by a Conformance setting. Do you agree?
{quote}

and related SQL standard which Julian shared:

{code}
>From SQL:2014...

6.24 <array element reference> Function

...

General Rules

1)  If the value of <array value expression> or <numeric value expression> is 
the null value, then the result of <array element reference> is the null value.

2)  Let i be the value of <numeric value expression>. Case:

a)  If i is greater than zero and less than or equal to the cardinality of 
<array value expression>, then the result of <array element reference> is the 
value of the i-th element of the value of <array value expression>.

b)  Otherwise, an exception condition is raised: data exception — array element 
error.
{code}

Based on above standard, exception condition is raised when we access the index 
which is out of bound. But current implementation of SqlFunctions.arrayItem() 
does bound check and return null when index is out of bound.



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

Reply via email to