Mihai Budiu created CALCITE-6275:
------------------------------------

             Summary: Parser for data types ignores element nullability in 
collections
                 Key: CALCITE-6275
                 URL: https://issues.apache.org/jira/browse/CALCITE-6275
             Project: Calcite
          Issue Type: Bug
          Components: core, server
    Affects Versions: 1.36.0
            Reporter: Mihai Budiu


The parser (Parser.jj) has this production rule for DataType:

{code}
// Type name with optional scale and precision.
SqlDataTypeSpec DataType() :
{
    SqlTypeNameSpec typeName;
    final Span s;
}
{
    typeName = TypeName() {
        s = Span.of(typeName.getParserPos());
    }
    (
        typeName = CollectionsTypeName(typeName)
    )*
    {
        return new SqlDataTypeSpec(typeName, 
s.add(typeName.getParserPos()).pos());
    }
}
{code}

Note that there is no way to specify the nullability for the elements of a 
collection, they are always assumed to be non-null. This is most pertinent for 
the server component, where in DDL one cannot specify a table column of type 
INTEGER ARRAY; one always gets an INTEGER NOT NULL ARRAY instead.

But note that SqlCollectionTypeNameSpec cannot even represent the nullability 
of the elements' type, it takes a SqlTypeNameSpec instead of a SqlDataTypeSpec.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to