public ParseResult parse(Context context, String sql) { final JavaTypeFactory typeFactory = context.getTypeFactory(); OptiqCatalogReader catalogReader = new OptiqCatalogReader(context.getRootSchema(), typeFactory); final OptiqPreparingStmt preparingStmt = new OptiqPreparingStmt(catalogReader, typeFactory, context.getRootSchema()); preparingStmt.setResultCallingConvention(CallingConvention.ENUMERABLE); SqlParser parser = new SqlParser(sql); SqlNode sqlNode; try { sqlNode = parser.parseQuery(); } catch (SqlParseException e) { throw new RuntimeException("parse failed", e); } SqlValidator validator = new SqlValidatorImpl( SqlStdOperatorTable.instance(), catalogReader, typeFactory, SqlConformance.Default) {}; SqlNode sqlNode1 = validator.validate(sqlNode); return new ParseResult(sql, sqlNode1, validator.getValidatedNodeType(sqlNode1)); }
@Override public RelNode expandView(RelDataType rowType, String queryString) { expansionDepth++; SqlParser parser = new SqlParser(queryString); SqlNode sqlNode; try { sqlNode = parser.parseQuery(); } catch (SqlParseException e) { throw new RuntimeException("parse failed", e); } SqlValidator validator = getSqlValidator(); SqlNode sqlNode1 = validator.validate(sqlNode); SqlToRelConverter sqlToRelConverter = getSqlToRelConverter(validator, catalogReader); RelNode relNode = sqlToRelConverter.convertQuery(sqlNode1, true, false); --expansionDepth; return relNode; }