Yuzhao Chen created CALCITE-2674: ------------------------------------ Summary: Column name with escape character should not be verified as a function when the column name is same with it Key: CALCITE-2674 URL: https://issues.apache.org/jira/browse/CALCITE-2674 Project: Calcite Issue Type: Bug Components: core Affects Versions: 1.18.0 Reporter: Yuzhao Chen Assignee: Julian Hyde Fix For: 1.18.0
If use defines table as schema below: {code:java} create table tt( `current_time` int, b int); {code} Then start a query: {code:java} select `current_time` from tt; {code} Calcite parser will parse the *current_time* as a normal *SqlIdentifier*, then the SqlValidator will recognize it a a builtin function with below code snippet: {code:java} public static SqlCall makeCall( SqlOperatorTable opTab, SqlIdentifier id) { if (id.names.size() == 1) { final List<SqlOperator> list = new ArrayList<>(); opTab.lookupOperatorOverloads(id, null, SqlSyntax.FUNCTION, list); for (SqlOperator operator : list) { if (operator.getSyntax() == SqlSyntax.FUNCTION_ID) { // Even though this looks like an identifier, it is a // actually a call to a function. Construct a fake // call to this function, so we can use the regular // operator validation. return new SqlBasicCall( operator, SqlNode.EMPTY_ARRAY, id.getParserPosition(), true, null); } } } return null; }{code} While i tried MYSQL and such query can work properly, so is this a bug ? Cause if the matched function return type is same with the column, then the query will output wrong results. -- This message was sent by Atlassian JIRA (v7.6.3#76005)