[
https://issues.apache.org/jira/browse/CALCITE-528?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14250625#comment-14250625
]
Jinfeng Ni commented on CALCITE-528:
------------------------------------
If we always use case sensitive in RelNode/RexNode world, regardless whatever
Lex we uses, then all unquoted SqlIdentifier have to be casted to either
UPPER-CASE or LOWER-case, when we do full-qualified. Otherwise, how can two
identifier with different casing match ?
{code}
SELECT COL1 from ( select col1 from T1);
{code}
Here, the field name in row type of subquery will be "col1", while the
qualified SqlIdentifer is still "COL1" with current Calcite. That will hit
"Column 'COL1' does not exit" error.
The current code simply would not work for all case-insensitivte validation
when we use Lex other than Lex.ORACLE, since the field name or fully-qualified
SqlIdentifer are created without knowledge of case-sensitivy.
> Creating output row type of a Join does not obey case-sensitivity flags
> -----------------------------------------------------------------------
>
> Key: CALCITE-528
> URL: https://issues.apache.org/jira/browse/CALCITE-528
> Project: Calcite
> Issue Type: Bug
> Affects Versions: 0.9.1-incubating
> Reporter: Aman Sinha
> Assignee: Julian Hyde
>
> In JoinRelBase.createJoinType() which creates a row type of the output row, a
> HashSet of String is used to keep track of unique field names. The field
> names 'column1' and 'Column1' will both be stored. This creates a problem
> for systems which are treating identifiers as case-insensitive (such as
> Drill) which rely on a Project below a Join to create unique names if the
> join columns are the same name (regardless of case).
> Ideally, the comparison for this should be done based on the criteria
> specified in the Lex settings when instantiating the
> SqlParser.ParserConfigImpl. So, if the parser was created with MYSQL Lex
> settings (see Lex.java), it should be obeyed by the
> JoinRelBase.createJoinType().
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)