/** * Wrapper function to parse a SQL query (SELECT or VALUES, but not INSERT, * UPDATE, DELETE, CREATE, DROP etc.), throwing a {@link SqlParseException} * if the statement is not syntactically valid. * * @param sql SQL statement * @return parse tree * @throws SqlParseException if not syntactically valid */ protected SqlNode parseQuery(String sql) throws SqlParseException { SqlParser parser = SqlParser.create(sql); return parser.parseStmt(); }
/** * Wrapper function to parse a SQL query (SELECT or VALUES, but not INSERT, * UPDATE, DELETE, CREATE, DROP etc.), throwing a {@link SqlParseException} * if the statement is not syntactically valid. * * @param sql SQL statement * * @return parse tree * * @throws SqlParseException if not syntactically valid */ protected SqlNode parseQuery(String sql) throws SqlParseException { SqlParser parser = new SqlParser(sql); return parser.parseStmt(); }
protected SqlNode parseStmt(String sql) throws SqlParseException { return new SqlParser(sql).parseStmt(); }
protected SqlNode parseStmt(String sql) throws SqlParseException { return getSqlParser(sql).parseStmt(); }
public SqlNode parse(final String sql) throws SqlParseException { switch (state) { case STATE_0_CLOSED: case STATE_1_RESET: ready(); } ensure(State.STATE_2_READY); SqlParser parser = SqlParser.create(parserFactory, sql, lex.quoting, lex.unquotedCasing, lex.quotedCasing); SqlNode sqlNode = parser.parseStmt(); state = State.STATE_3_PARSED; return sqlNode; }
/** Populates a materialization record, converting a table path * (essentially a list of strings, like ["hr", "sales"]) into a table object * that can be used in the planning process. */ void populate(Materialization materialization) { SqlParser parser = new SqlParser(materialization.sql); SqlNode node; try { node = parser.parseStmt(); } catch (SqlParseException e) { throw new RuntimeException("parse failed", e); } SqlToRelConverter sqlToRelConverter2 = getSqlToRelConverter(getSqlValidator(), catalogReader); materialization.queryRel = sqlToRelConverter2.convertQuery(node, true, true); RelOptTable table = catalogReader.getTable(materialization.materializedTable.path()); materialization.tableRel = table.toRel(sqlToRelConverter2.makeToRelContext()); } }
/** Populates a materialization record, converting a table path * (essentially a list of strings, like ["hr", "sales"]) into a table object * that can be used in the planning process. */ void populate(Materialization materialization) { SqlParser parser = SqlParser.create(materialization.sql); SqlNode node; try { node = parser.parseStmt(); } catch (SqlParseException e) { throw new RuntimeException("parse failed", e); } SqlToRelConverter sqlToRelConverter2 = getSqlToRelConverter(getSqlValidator(), catalogReader); materialization.queryRel = sqlToRelConverter2.convertQuery(node, true, true); // Identify and substitute a StarTable in queryRel. // // It is possible that no StarTables match. That is OK, but the // materialization patterns that are recognized will not be as rich. // // It is possible that more than one StarTable matches. TBD: should we // take the best (whatever that means), or all of them? useStar(schema, materialization); RelOptTable table = this.catalogReader.getTable(materialization.materializedTable.path()); materialization.tableRel = sqlToRelConverter2.toRel(table); }
public ParseResult parse( Context context, String sql) { final JavaTypeFactory typeFactory = context.getTypeFactory(); OptiqCatalogReader catalogReader = new OptiqCatalogReader( context.getRootSchema(), context.getDefaultSchemaPath(), typeFactory); SqlParser parser = new SqlParser(sql); SqlNode sqlNode; try { sqlNode = parser.parseStmt(); } catch (SqlParseException e) { throw new RuntimeException("parse failed", e); } final SqlValidator validator = new OptiqSqlValidator( SqlStdOperatorTable.instance(), catalogReader, typeFactory); SqlNode sqlNode1 = validator.validate(sqlNode); return new ParseResult( sql, sqlNode1, validator.getValidatedNodeType(sqlNode1)); }
public ParseResult parse( Context context, String sql) { final JavaTypeFactory typeFactory = context.getTypeFactory(); OptiqCatalogReader catalogReader = new OptiqCatalogReader( context.getRootSchema(), context.config().caseSensitive(), context.getDefaultSchemaPath(), typeFactory); SqlParser parser = SqlParser.create(sql); SqlNode sqlNode; try { sqlNode = parser.parseStmt(); } catch (SqlParseException e) { throw new RuntimeException("parse failed", e); } final SqlValidator validator = new OptiqSqlValidator( SqlStdOperatorTable.instance(), catalogReader, typeFactory); SqlNode sqlNode1 = validator.validate(sqlNode); return new ParseResult(this, validator, sql, sqlNode1, validator.getValidatedNodeType(sqlNode1)); }
SqlNode sqlNode; try { sqlNode = parser.parseStmt(); } catch (SqlParseException e) { throw new RuntimeException("parse failed", e);
@Test public void testSqlOptions() throws SqlParseException { SqlNode node = SqlParser.create("alter system set schema = true").parseStmt(); SqlSetOption opt = (SqlSetOption) node; assertThat(opt.getScope(), equalTo("SYSTEM")); assertThat(opt.getName(), equalTo("SCHEMA")); SqlPrettyWriter writer = new SqlPrettyWriter(SqlDialect.EIGENBASE); assertThat(writer.format(opt.getValue()), equalTo("TRUE")); writer = new SqlPrettyWriter(SqlDialect.EIGENBASE); assertThat(writer.format(opt), equalTo("ALTER SYSTEM SET \"SCHEMA\" = TRUE")); check("alter system set \"a number\" = 1", "ALTER SYSTEM SET `a number` = 1"); check("alter system set flag = false", "ALTER SYSTEM SET `FLAG` = FALSE"); check("alter system set approx = -12.3450", "ALTER SYSTEM SET `APPROX` = -12.3450"); check("alter system set onOff = on", "ALTER SYSTEM SET `ONOFF` = `ON`"); check("alter system set onOff = off", "ALTER SYSTEM SET `ONOFF` = `OFF`"); check("alter system set baz = foo", "ALTER SYSTEM SET `BAZ` = `FOO`"); // expressions not allowed checkFails("alter system set aString = 'abc' ^||^ 'def' ", "(?s)Encountered \"\\|\\|\" at line 1, column 34\\..*"); // multiple assignments not allowed checkFails("alter system set x = 1^,^ y = 2", "(?s)Encountered \",\" at line 1, column 23\\..*"); }
SqlNode sqlNode; try { sqlNode = parser.parseStmt(); } catch (SqlParseException e) { throw new RuntimeException(