TIMESTAMP is a reserved word. Put double-quotes around the column name and you should be OK. In https://issues.apache.org/jira/browse/CALCITE-997 <https://issues.apache.org/jira/browse/CALCITE-997> someone was having a very similar problem with a column called VALUE.
Julian > On May 12, 2016, at 9:06 AM, Kiril Menshikov <[email protected]> wrote: > > Hi, > > I am trying to modify SQL query with Calcite (add select fields and where > statements). The schema are created from JDBC connection. > > Executing simple SQL statement I get exception. > > SqlParseException: Encounted ".timestamp" at line 1, column 10. > > Can you help me and point me what is wrong? SQL are correct and executed > from sqlplus. > > My Code: > > Class.*forName*("org.apache.calcite.jdbc.Driver"); > > Connection connection = DriverManager.*getConnection*( > "jdbc:calcite:"); > > CalciteConnection calciteConnection =connection > .unwrap(CalciteConnection.*class*); > > calciteConnection.setSchema("latency"); > > SchemaPlus rootSchema = calciteConnection.getRootSchema(); > > JdbcSchema defaultSchema = JdbcSchema.*create*(rootSchema, > "latency", dataSource, *null*,*null*); > > rootSchema.add("latency", defaultSchema); > > > > List<*RelTraitDef*> traitDefs = *new*ArrayList<*RelTraitDef* >> (); > > SchemaPlus *defaultSchema1*; > > FrameworkConfig calciteFrameworkConfig = Frameworks. > *newConfigBuilder*() > > .parserConfig(SqlParser.*configBuilder* > ().setLex(Lex.*ORACLE*).build()) > > .defaultSchema(rootSchema.getSubSchema( > calciteConnection.getSchema())).traitDefs(traitDefs) > > .context(Contexts.*EMPTY_CONTEXT* > ).ruleSets(RuleSets.*ofList*()).costFactory(*null*) > > .typeSystem(RelDataTypeSystem.*DEFAULT*).build(); > > Planner planner1 = Frameworks.*getPlanner*( > calciteFrameworkConfig); > > SqlNode sqlNode1 = planner1.parse("select i1.timestamp > timestamp from latency i1"); > > SqlNode validatedSqlNode1 =planner1.validate(sqlNode1); > > RelNode *logicalPlan* =planner1.rel(validatedSqlNode1 > ).project(); > > > Thanks, > --Kiril
