[jira] [Updated] (CALCITE-2349) Failed to build RexCall with SqlDatetimeSubtractionOperator
[ https://issues.apache.org/jira/browse/CALCITE-2349?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Julian Hyde updated CALCITE-2349: - Fix Version/s: (was: 1.18.0) > Failed to build RexCall with SqlDatetimeSubtractionOperator > --- > > Key: CALCITE-2349 > URL: https://issues.apache.org/jira/browse/CALCITE-2349 > Project: Calcite > Issue Type: Bug > Components: core >Affects Versions: 1.16.0 >Reporter: yuqi >Assignee: Julian Hyde >Priority: Minor > Attachments: 1.png, screenshot-1.png > > > When use RexBuilder to build RexCall with SqlDatetimeSubtractionOperator, it > will throw exception. > {code:java} > java.lang.IndexOutOfBoundsException: index (2) must be less than size (2) > at > com.google.common.base.Preconditions.checkElementIndex(Preconditions.java:310) > at > com.google.common.base.Preconditions.checkElementIndex(Preconditions.java:293) > at > com.google.common.collect.RegularImmutableList.get(RegularImmutableList.java:67) > at > org.apache.calcite.rex.RexCallBinding.getOperandType(RexCallBinding.java:132) > at > org.apache.calcite.sql.type.OrdinalReturnTypeInference.inferReturnType(OrdinalReturnTypeInference.java:40) > at > org.apache.calcite.sql.type.SqlTypeTransformCascade.inferReturnType(SqlTypeTransformCascade.java:54) > at > org.apache.calcite.sql.SqlOperator.inferReturnType(SqlOperator.java:470) > at > org.apache.calcite.rex.RexBuilder.deriveReturnType(RexBuilder.java:274) > at org.apache.calcite.rex.RexBuilder.makeCall(RexBuilder.java:248) > at com.netease.yuqi.calcatetest.TestThree.main(TestThree.java:100) > {code} > Below is My code: > {code:java} > public static void main(String[] args) { > try { > SchemaPlus rootSchema = > Frameworks.createRootSchema(true); > rootSchema.add("USERS", new AbstractTable() { > public RelDataType getRowType(final > RelDataTypeFactory typeFactory) { > RelDataTypeFactory.FieldInfoBuilder > builder = typeFactory.builder(); > builder.add("ID", new BasicSqlType(new > RelDataTypeSystemImpl() { > }, SqlTypeName.INTEGER)); > builder.add("NAME", new > BasicSqlType(new RelDataTypeSystemImpl() { > }, SqlTypeName.CHAR)); > builder.add("TIME_D", new > BasicSqlType(new RelDataTypeSystemImpl() { > }, SqlTypeName.TIMESTAMP)); > return builder.build(); > } > }); > rootSchema.add("TABLE_RESULT", new AbstractTable() { > public RelDataType getRowType(final > RelDataTypeFactory typeFactory) { > RelDataTypeFactory.FieldInfoBuilder > builder = typeFactory.builder(); > builder.add("ID", new BasicSqlType(new > RelDataTypeSystemImpl() { > }, SqlTypeName.INTEGER)); > builder.add("NAME", new > BasicSqlType(new RelDataTypeSystemImpl() { > }, SqlTypeName.CHAR)); > builder.add("SCORE", new > BasicSqlType(new RelDataTypeSystemImpl() { > }, SqlTypeName.INTEGER)); > return builder.build(); > } > }); > final FrameworkConfig config = > Frameworks.newConfigBuilder() > .parserConfig(SqlParser.Config.DEFAULT) > .defaultSchema(rootSchema) > .build(); > Planner planner = Frameworks.getPlanner(config); > SqlNode parse1 = planner.parse("insert into > table_result(id, name, score) select a.id as id, a.name as name, 1 from users > a where month(a.time_d - interval '30' day) >= 2"); > SqlNode validate = planner.validate(parse1); > RelRoot root = planner.rel(validate); > RexBuilder builder1 = > root.rel.getCluster().getRexBuilder(); > LogicalFilter filter = (LogicalFilter) > root.rel.getInput(0).getInput(0); > //get RexCall of SqlDatetimeSubtractionOperator > RexCall call = (RexCall) ((RexCall) ((RexCall) >
[jira] [Updated] (CALCITE-2349) Failed to build RexCall with SqlDatetimeSubtractionOperator
[ https://issues.apache.org/jira/browse/CALCITE-2349?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] yuqi updated CALCITE-2349: -- Attachment: screenshot-1.png > Failed to build RexCall with SqlDatetimeSubtractionOperator > --- > > Key: CALCITE-2349 > URL: https://issues.apache.org/jira/browse/CALCITE-2349 > Project: Calcite > Issue Type: Bug > Components: core >Affects Versions: 1.16.0 >Reporter: yuqi >Assignee: Julian Hyde >Priority: Minor > Fix For: 1.17.0 > > Attachments: 1.png, screenshot-1.png > > > When use RexBuilder to build RexCall with SqlDatetimeSubtractionOperator, it > will throw exception. > {code:java} > java.lang.IndexOutOfBoundsException: index (2) must be less than size (2) > at > com.google.common.base.Preconditions.checkElementIndex(Preconditions.java:310) > at > com.google.common.base.Preconditions.checkElementIndex(Preconditions.java:293) > at > com.google.common.collect.RegularImmutableList.get(RegularImmutableList.java:67) > at > org.apache.calcite.rex.RexCallBinding.getOperandType(RexCallBinding.java:132) > at > org.apache.calcite.sql.type.OrdinalReturnTypeInference.inferReturnType(OrdinalReturnTypeInference.java:40) > at > org.apache.calcite.sql.type.SqlTypeTransformCascade.inferReturnType(SqlTypeTransformCascade.java:54) > at > org.apache.calcite.sql.SqlOperator.inferReturnType(SqlOperator.java:470) > at > org.apache.calcite.rex.RexBuilder.deriveReturnType(RexBuilder.java:274) > at org.apache.calcite.rex.RexBuilder.makeCall(RexBuilder.java:248) > at com.netease.yuqi.calcatetest.TestThree.main(TestThree.java:100) > {code} > Below is My code: > {code:java} > public static void main(String[] args) { > try { > SchemaPlus rootSchema = > Frameworks.createRootSchema(true); > rootSchema.add("USERS", new AbstractTable() { > public RelDataType getRowType(final > RelDataTypeFactory typeFactory) { > RelDataTypeFactory.FieldInfoBuilder > builder = typeFactory.builder(); > builder.add("ID", new BasicSqlType(new > RelDataTypeSystemImpl() { > }, SqlTypeName.INTEGER)); > builder.add("NAME", new > BasicSqlType(new RelDataTypeSystemImpl() { > }, SqlTypeName.CHAR)); > builder.add("TIME_D", new > BasicSqlType(new RelDataTypeSystemImpl() { > }, SqlTypeName.TIMESTAMP)); > return builder.build(); > } > }); > rootSchema.add("TABLE_RESULT", new AbstractTable() { > public RelDataType getRowType(final > RelDataTypeFactory typeFactory) { > RelDataTypeFactory.FieldInfoBuilder > builder = typeFactory.builder(); > builder.add("ID", new BasicSqlType(new > RelDataTypeSystemImpl() { > }, SqlTypeName.INTEGER)); > builder.add("NAME", new > BasicSqlType(new RelDataTypeSystemImpl() { > }, SqlTypeName.CHAR)); > builder.add("SCORE", new > BasicSqlType(new RelDataTypeSystemImpl() { > }, SqlTypeName.INTEGER)); > return builder.build(); > } > }); > final FrameworkConfig config = > Frameworks.newConfigBuilder() > .parserConfig(SqlParser.Config.DEFAULT) > .defaultSchema(rootSchema) > .build(); > Planner planner = Frameworks.getPlanner(config); > SqlNode parse1 = planner.parse("insert into > table_result(id, name, score) select a.id as id, a.name as name, 1 from users > a where month(a.time_d - interval '30' day) >= 2"); > SqlNode validate = planner.validate(parse1); > RelRoot root = planner.rel(validate); > RexBuilder builder1 = > root.rel.getCluster().getRexBuilder(); > LogicalFilter filter = (LogicalFilter) > root.rel.getInput(0).getInput(0); > //get RexCall of SqlDatetimeSubtractionOperator > RexCall call = (RexCall) ((RexCall) ((RexCall) >
[jira] [Updated] (CALCITE-2349) Failed to build RexCall with SqlDatetimeSubtractionOperator
[ https://issues.apache.org/jira/browse/CALCITE-2349?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] yuqi updated CALCITE-2349: -- Attachment: 1.png > Failed to build RexCall with SqlDatetimeSubtractionOperator > --- > > Key: CALCITE-2349 > URL: https://issues.apache.org/jira/browse/CALCITE-2349 > Project: Calcite > Issue Type: Bug > Components: core >Affects Versions: 1.16.0 >Reporter: yuqi >Assignee: Julian Hyde >Priority: Minor > Fix For: 1.17.0 > > Attachments: 1.png > > > When use RexBuilder to build RexCall with SqlDatetimeSubtractionOperator, it > will throw exception. > {code:java} > java.lang.IndexOutOfBoundsException: index (2) must be less than size (2) > at > com.google.common.base.Preconditions.checkElementIndex(Preconditions.java:310) > at > com.google.common.base.Preconditions.checkElementIndex(Preconditions.java:293) > at > com.google.common.collect.RegularImmutableList.get(RegularImmutableList.java:67) > at > org.apache.calcite.rex.RexCallBinding.getOperandType(RexCallBinding.java:132) > at > org.apache.calcite.sql.type.OrdinalReturnTypeInference.inferReturnType(OrdinalReturnTypeInference.java:40) > at > org.apache.calcite.sql.type.SqlTypeTransformCascade.inferReturnType(SqlTypeTransformCascade.java:54) > at > org.apache.calcite.sql.SqlOperator.inferReturnType(SqlOperator.java:470) > at > org.apache.calcite.rex.RexBuilder.deriveReturnType(RexBuilder.java:274) > at org.apache.calcite.rex.RexBuilder.makeCall(RexBuilder.java:248) > at com.netease.yuqi.calcatetest.TestThree.main(TestThree.java:100) > {code} > Below is My code: > {code:java} > public static void main(String[] args) { > try { > SchemaPlus rootSchema = > Frameworks.createRootSchema(true); > rootSchema.add("USERS", new AbstractTable() { > public RelDataType getRowType(final > RelDataTypeFactory typeFactory) { > RelDataTypeFactory.FieldInfoBuilder > builder = typeFactory.builder(); > builder.add("ID", new BasicSqlType(new > RelDataTypeSystemImpl() { > }, SqlTypeName.INTEGER)); > builder.add("NAME", new > BasicSqlType(new RelDataTypeSystemImpl() { > }, SqlTypeName.CHAR)); > builder.add("TIME_D", new > BasicSqlType(new RelDataTypeSystemImpl() { > }, SqlTypeName.TIMESTAMP)); > return builder.build(); > } > }); > rootSchema.add("TABLE_RESULT", new AbstractTable() { > public RelDataType getRowType(final > RelDataTypeFactory typeFactory) { > RelDataTypeFactory.FieldInfoBuilder > builder = typeFactory.builder(); > builder.add("ID", new BasicSqlType(new > RelDataTypeSystemImpl() { > }, SqlTypeName.INTEGER)); > builder.add("NAME", new > BasicSqlType(new RelDataTypeSystemImpl() { > }, SqlTypeName.CHAR)); > builder.add("SCORE", new > BasicSqlType(new RelDataTypeSystemImpl() { > }, SqlTypeName.INTEGER)); > return builder.build(); > } > }); > final FrameworkConfig config = > Frameworks.newConfigBuilder() > .parserConfig(SqlParser.Config.DEFAULT) > .defaultSchema(rootSchema) > .build(); > Planner planner = Frameworks.getPlanner(config); > SqlNode parse1 = planner.parse("insert into > table_result(id, name, score) select a.id as id, a.name as name, 1 from users > a where month(a.time_d - interval '30' day) >= 2"); > SqlNode validate = planner.validate(parse1); > RelRoot root = planner.rel(validate); > RexBuilder builder1 = > root.rel.getCluster().getRexBuilder(); > LogicalFilter filter = (LogicalFilter) > root.rel.getInput(0).getInput(0); > //get RexCall of SqlDatetimeSubtractionOperator > RexCall call = (RexCall) ((RexCall) ((RexCall) >