[
https://issues.apache.org/jira/browse/CALCITE-3250?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16908615#comment-16908615
]
Danny Chan commented on CALCITE-3250:
-------------------------------------
Thanks, Julian.
I add the SqlTypeNameSpec#deriveType(RelDataTypeFactory) mainly to adapter
method SqlDataTypeSpec#deriveType(RelDataTypeFactory) which invoked by many
codes that does not have the SqlValidator, #deriveType(RelDataTypeFactory) and
#deriveType(SqlValidator) actually have different semantics, one can returns
null but one never.
Personally i approve of your point to keep only one of them, but this may need
more refactoring, i'm glad to to it if you think this is necessary.
I kind of disagree with the point that we should let the validator do the whole
type inferring thing. In that case, we would have to do many code branch for
different data types(basic type, collection type, row and UDT), which would
bring in a mess of "if else" clause just like before this patch. The
SqlTypeNameSpec actually have the full information to create a data type(the
type name, precision/scale, charSet), the SqlDataTypeSpec now is a composition
of SqlTypeNameSpec plus nullability.
> Support nested collection type for SqlDataTypeSpec
> ---------------------------------------------------
>
> Key: CALCITE-3250
> URL: https://issues.apache.org/jira/browse/CALCITE-3250
> Project: Calcite
> Issue Type: Sub-task
> Components: core
> Affects Versions: 1.20.0
> Reporter: Danny Chan
> Assignee: Danny Chan
> Priority: Major
> Labels: pull-request-available
> Fix For: 1.21.0
>
> Time Spent: 20m
> Remaining Estimate: 0h
>
> According to SQL-2011, collection type can be nested:
> {code:sql}
> <array type> ::=
> <data type> ARRAY [ <left bracket or trigraph> <maximum cardinality> <right
> bracket or trigraph> ]
> <maximum cardinality> ::=
> <unsigned integer>
> {code}
> *Example*:
> {code:sql}
> int array array;
> int multiset array;
> {code}
--
This message was sent by Atlassian JIRA
(v7.6.14#76016)