You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "yuqi (JIRA)" <ji...@apache.org> on 2018/10/23 14:01:00 UTC
[jira] [Updated] (CALCITE-2637) Prefix minus operator failed in
between and clause
[ https://issues.apache.org/jira/browse/CALCITE-2637?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
yuqi updated CALCITE-2637:
--------------------------
Description:
We can reproduce it like this
{code:java}
public static void main(String[] args) {
try {
SchemaPlus rootSchema = Frameworks.createRootSchema(true);
rootSchema.add("TABLE_RESULT", new AbstractTable() {
public RelDataType getRowType(final RelDataTypeFactory typeFactory) {
RelDataTypeFactory.FieldInfoBuilder builder = typeFactory.builder();
RelDataType t1 = typeFactory.createTypeWithNullability(typeFactory.createSqlType(SqlTypeName.INTEGER), true);
RelDataType t2 = typeFactory.createTypeWithNullability(typeFactory.createSqlType(SqlTypeName.CHAR), true);
RelDataType t3 = typeFactory.createTypeWithNullability(typeFactory.createSqlType(SqlTypeName.INTEGER), true);
builder.add("ID", t1);
builder.add("NAME", t2);
builder.add("SCORE", t3);;
return builder.build();
}
});
final FrameworkConfig config = Frameworks.newConfigBuilder()
.parserConfig(SqlParser.Config.DEFAULT)
.defaultSchema(rootSchema)
.build();
Planner planner = Frameworks.getPlanner(config);
String sql = "select id, score between - score * 5 and 100 from table_result";
SqlNode parse = planner.parse(sql);
SqlNode validate = planner.validate(parse);
RelRoot root = planner.rel(validate);
} catch (Exception e) {
e.printStackTrace();
}
}
{code}
the above code will cause the following problem:
{code:java}
org.apache.calcite.sql.parser.SqlParseException: Encountered "- score" at line 1, column 26.
Was expecting one of:
"SYMMETRIC" ...
"ASYMMETRIC" ...
"+" ...
"-" ...
"-" <UNSIGNED_INTEGER_LITERAL> ...
"-" <DECIMAL_NUMERIC_LITERAL> ...
"-" <APPROX_NUMERIC_LITERAL> ...
<UNSIGNED_INTEGER_LITERAL> ...
<DECIMAL_NUMERIC_LITERAL> ...
<APPROX_NUMERIC_LITERAL> ...
<BINARY_STRING_LITERAL> ...
<PREFIXED_STRING_LITERAL> ...
<QUOTED_STRING> ...
<UNICODE_STRING_LITERAL> ...
"TRUE" ...
"FALSE" ...
"UNKNOWN" ...
"NULL" ...
<LBRACE_D> ...
<LBRACE_T> ...
<LBRACE_TS> ...
"DATE" ...
"TIME" ...
"TIMESTAMP" ...
"INTERVAL" ...
"?" ...
"CAST" ...
"EXTRACT" ...
"POSITION" ...
"CONVERT" ...
"TRANSLATE" ...
"OVERLAY" ...
"FLOOR" ...
"CEIL" ...
"CEILING" ...
"SUBSTRING" ...
"TRIM" ...
"CLASSIFIER" ...
"MATCH_NUMBER" ...
"RUNNING" ...
"PREV" ...
"NEXT" ...
<LBRACE_FN> ...
"MULTISET" ...
"ARRAY" ...
"PERIOD" ...
"SPECIFIC" ...
<IDENTIFIER> ...
<QUOTED_IDENTIFIER> ...
<BACK_QUOTED_IDENTIFIER> ...
<BRACKET_QUOTED_IDENTIFIER> ...
<UNICODE_QUOTED_IDENTIFIER> ...
"ABS" ...
"AVG" ...
"CARDINALITY" ...
"CHAR_LENGTH" ...
"CHARACTER_LENGTH" ...
"COALESCE" ...
"COLLECT" ...
"COVAR_POP" ...
"COVAR_SAMP" ...
{code}
> Prefix minus operator failed in between and clause
> --------------------------------------------------
>
> Key: CALCITE-2637
> URL: https://issues.apache.org/jira/browse/CALCITE-2637
> Project: Calcite
> Issue Type: Bug
> Components: core
> Affects Versions: 1.17.0
> Environment: We can reproduce it like this
> {code:java}
> public static void main(String[] args) {
> try {
> SchemaPlus rootSchema = Frameworks.createRootSchema(true);
> rootSchema.add("TABLE_RESULT", new AbstractTable() {
> public RelDataType getRowType(final RelDataTypeFactory typeFactory) {
> RelDataTypeFactory.FieldInfoBuilder builder = typeFactory.builder();
> RelDataType t1 = typeFactory.createTypeWithNullability(typeFactory.createSqlType(SqlTypeName.INTEGER), true);
> RelDataType t2 = typeFactory.createTypeWithNullability(typeFactory.createSqlType(SqlTypeName.CHAR), true);
> RelDataType t3 = typeFactory.createTypeWithNullability(typeFactory.createSqlType(SqlTypeName.INTEGER), true);
> builder.add("ID", t1);
> builder.add("NAME", t2);
> builder.add("SCORE", t3);;
> return builder.build();
> }
> });
> final FrameworkConfig config = Frameworks.newConfigBuilder()
> .parserConfig(SqlParser.Config.DEFAULT)
> .defaultSchema(rootSchema)
> .build();
> Planner planner = Frameworks.getPlanner(config);
> String sql = "select id, score between - score * 5 and 100 from table_result";
> SqlNode parse = planner.parse(sql);
> SqlNode validate = planner.validate(parse);
> RelRoot root = planner.rel(validate);
> } catch (Exception e) {
> e.printStackTrace();
> }
> }
> {code}
> the above code will cause the following problem:
> {code:java}
> org.apache.calcite.sql.parser.SqlParseException: Encountered "- score" at line 1, column 26.
> Was expecting one of:
> "SYMMETRIC" ...
> "ASYMMETRIC" ...
> "+" ...
> "-" ...
> "-" <UNSIGNED_INTEGER_LITERAL> ...
> "-" <DECIMAL_NUMERIC_LITERAL> ...
> "-" <APPROX_NUMERIC_LITERAL> ...
> <UNSIGNED_INTEGER_LITERAL> ...
> <DECIMAL_NUMERIC_LITERAL> ...
> <APPROX_NUMERIC_LITERAL> ...
> <BINARY_STRING_LITERAL> ...
> <PREFIXED_STRING_LITERAL> ...
> <QUOTED_STRING> ...
> <UNICODE_STRING_LITERAL> ...
> "TRUE" ...
> "FALSE" ...
> "UNKNOWN" ...
> "NULL" ...
> <LBRACE_D> ...
> <LBRACE_T> ...
> <LBRACE_TS> ...
> "DATE" ...
> "TIME" ...
> "TIMESTAMP" ...
> "INTERVAL" ...
> "?" ...
> "CAST" ...
> "EXTRACT" ...
> "POSITION" ...
> "CONVERT" ...
> "TRANSLATE" ...
> "OVERLAY" ...
> "FLOOR" ...
> "CEIL" ...
> "CEILING" ...
> "SUBSTRING" ...
> "TRIM" ...
> "CLASSIFIER" ...
> "MATCH_NUMBER" ...
> "RUNNING" ...
> "PREV" ...
> "NEXT" ...
> <LBRACE_FN> ...
> "MULTISET" ...
> "ARRAY" ...
> "PERIOD" ...
> "SPECIFIC" ...
> <IDENTIFIER> ...
> <QUOTED_IDENTIFIER> ...
> <BACK_QUOTED_IDENTIFIER> ...
> <BRACKET_QUOTED_IDENTIFIER> ...
> <UNICODE_QUOTED_IDENTIFIER> ...
> "ABS" ...
> "AVG" ...
> "CARDINALITY" ...
> "CHAR_LENGTH" ...
> "CHARACTER_LENGTH" ...
> "COALESCE" ...
> "COLLECT" ...
> "COVAR_POP" ...
> "COVAR_SAMP" ...
> {code}
> Reporter: yuqi
> Assignee: Julian Hyde
> Priority: Major
> Fix For: 1.18.0
>
>
> We can reproduce it like this
> {code:java}
> public static void main(String[] args) {
> try {
> SchemaPlus rootSchema = Frameworks.createRootSchema(true);
> rootSchema.add("TABLE_RESULT", new AbstractTable() {
> public RelDataType getRowType(final RelDataTypeFactory typeFactory) {
> RelDataTypeFactory.FieldInfoBuilder builder = typeFactory.builder();
> RelDataType t1 = typeFactory.createTypeWithNullability(typeFactory.createSqlType(SqlTypeName.INTEGER), true);
> RelDataType t2 = typeFactory.createTypeWithNullability(typeFactory.createSqlType(SqlTypeName.CHAR), true);
> RelDataType t3 = typeFactory.createTypeWithNullability(typeFactory.createSqlType(SqlTypeName.INTEGER), true);
> builder.add("ID", t1);
> builder.add("NAME", t2);
> builder.add("SCORE", t3);;
> return builder.build();
> }
> });
> final FrameworkConfig config = Frameworks.newConfigBuilder()
> .parserConfig(SqlParser.Config.DEFAULT)
> .defaultSchema(rootSchema)
> .build();
> Planner planner = Frameworks.getPlanner(config);
> String sql = "select id, score between - score * 5 and 100 from table_result";
> SqlNode parse = planner.parse(sql);
> SqlNode validate = planner.validate(parse);
> RelRoot root = planner.rel(validate);
> } catch (Exception e) {
> e.printStackTrace();
> }
> }
> {code}
> the above code will cause the following problem:
> {code:java}
> org.apache.calcite.sql.parser.SqlParseException: Encountered "- score" at line 1, column 26.
> Was expecting one of:
> "SYMMETRIC" ...
> "ASYMMETRIC" ...
> "+" ...
> "-" ...
> "-" <UNSIGNED_INTEGER_LITERAL> ...
> "-" <DECIMAL_NUMERIC_LITERAL> ...
> "-" <APPROX_NUMERIC_LITERAL> ...
> <UNSIGNED_INTEGER_LITERAL> ...
> <DECIMAL_NUMERIC_LITERAL> ...
> <APPROX_NUMERIC_LITERAL> ...
> <BINARY_STRING_LITERAL> ...
> <PREFIXED_STRING_LITERAL> ...
> <QUOTED_STRING> ...
> <UNICODE_STRING_LITERAL> ...
> "TRUE" ...
> "FALSE" ...
> "UNKNOWN" ...
> "NULL" ...
> <LBRACE_D> ...
> <LBRACE_T> ...
> <LBRACE_TS> ...
> "DATE" ...
> "TIME" ...
> "TIMESTAMP" ...
> "INTERVAL" ...
> "?" ...
> "CAST" ...
> "EXTRACT" ...
> "POSITION" ...
> "CONVERT" ...
> "TRANSLATE" ...
> "OVERLAY" ...
> "FLOOR" ...
> "CEIL" ...
> "CEILING" ...
> "SUBSTRING" ...
> "TRIM" ...
> "CLASSIFIER" ...
> "MATCH_NUMBER" ...
> "RUNNING" ...
> "PREV" ...
> "NEXT" ...
> <LBRACE_FN> ...
> "MULTISET" ...
> "ARRAY" ...
> "PERIOD" ...
> "SPECIFIC" ...
> <IDENTIFIER> ...
> <QUOTED_IDENTIFIER> ...
> <BACK_QUOTED_IDENTIFIER> ...
> <BRACKET_QUOTED_IDENTIFIER> ...
> <UNICODE_QUOTED_IDENTIFIER> ...
> "ABS" ...
> "AVG" ...
> "CARDINALITY" ...
> "CHAR_LENGTH" ...
> "CHARACTER_LENGTH" ...
> "COALESCE" ...
> "COLLECT" ...
> "COVAR_POP" ...
> "COVAR_SAMP" ...
> {code}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)