.setLex(Lex.MYSQL_ANSI) .build();
public Queue<Object> getExeQueue(String exeSql, Set<String> sideTableSet) throws SqlParseException { System.out.println("---exeSql---"); System.out.println(exeSql); Queue<Object> queueInfo = Queues.newLinkedBlockingQueue(); SqlParser.Config config = SqlParser .configBuilder() .setLex(Lex.MYSQL) .build(); SqlParser sqlParser = SqlParser.create(exeSql,config); SqlNode sqlNode = sqlParser.parseStmt(); parseSql(sqlNode, sideTableSet, queueInfo); queueInfo.offer(sqlNode); return queueInfo; }
.setLex(Lex.MYSQL) .build(); SqlParser sqlParser = SqlParser.create(selectSql,config);
.setLex(Lex.MYSQL) .build(); SqlNode sqlNode = org.apache.calcite.sql.parser.SqlParser.create(realSql,config).parseStmt();
.parserConfig(SqlParser.configBuilder().setLex(Lex.JAVA).build()) .defaultSchema(rootSchema) .operatorTable(new ChainedSqlOperatorTable(sqlOperatorTables))
.parserConfig(SqlParser.configBuilder().setLex(Lex.JAVA).build()) .defaultSchema(rootSchema) .operatorTable(new ChainedSqlOperatorTable(sqlOperatorTables))
FrameworkConfig config = Frameworks.newConfigBuilder() .parserConfig(SqlParser.configBuilder() .setLex(Lex.MYSQL) .setIdentifierMaxLength(PlannerSettings.DEFAULT_IDENTIFIER_MAX_LENGTH) .setParserFactory(ParserImpl.FACTORY)
traitDefs.add(RelCollationTraitDef.INSTANCE); final SqlParser.Config parserConfig = SqlParser.configBuilder().setLex(Lex.MYSQL).build(); FrameworkConfig config = Frameworks.newConfigBuilder() .parserConfig(parserConfig)
traitDefs.add(RelCollationTraitDef.INSTANCE); final SqlParser.Config parserConfig = SqlParser.configBuilder().setLex(Lex.MYSQL).build(); FrameworkConfig config = Frameworks.newConfigBuilder() .parserConfig(parserConfig)
.setLex(Lex.MYSQL_ANSI) .build();
private static Planner createPlanner() { Connection connection; SchemaPlus rootSchema; try { JavaTypeFactory typeFactory = new SamzaSqlJavaTypeFactoryImpl(); SamzaSqlDriver driver = new SamzaSqlDriver(typeFactory); DriverManager.deregisterDriver(DriverManager.getDriver("jdbc:calcite:")); DriverManager.registerDriver(driver); connection = driver.connect("jdbc:calcite:", new Properties()); CalciteConnection calciteConnection = connection.unwrap(CalciteConnection.class); rootSchema = calciteConnection.getRootSchema(); } catch (SQLException e) { throw new SamzaException(e); } final List<RelTraitDef> traitDefs = new ArrayList<>(); traitDefs.add(ConventionTraitDef.INSTANCE); traitDefs.add(RelCollationTraitDef.INSTANCE); FrameworkConfig frameworkConfig = Frameworks.newConfigBuilder() .parserConfig(SqlParser.configBuilder().setLex(Lex.JAVA).build()) .defaultSchema(rootSchema) .operatorTable(SqlStdOperatorTable.instance()) .traitDefs(traitDefs) .context(Contexts.EMPTY_CONTEXT) .costFactory(null) .build(); return Frameworks.getPlanner(frameworkConfig); }
private void runDuplicateSortCheck(String sql, String plan) throws Exception { RuleSet ruleSet = RuleSets.ofList( SortRemoveRule.INSTANCE, EnumerableRules.ENUMERABLE_PROJECT_RULE, EnumerableRules.ENUMERABLE_WINDOW_RULE, EnumerableRules.ENUMERABLE_SORT_RULE, ProjectToWindowRule.PROJECT); Planner planner = getPlanner(null, SqlParser.configBuilder().setLex(Lex.JAVA).build(), Programs.of(ruleSet)); SqlNode parse = planner.parse(sql); SqlNode validate = planner.validate(parse); RelNode convert = planner.rel(validate).rel; RelTraitSet traitSet = planner.getEmptyTraitSet() .replace(EnumerableConvention.INSTANCE); if (traitSet.getTrait(RelCollationTraitDef.INSTANCE) == null) { // SortRemoveRule can only work if collation trait is enabled. return; } RelNode transform = planner.transform(0, traitSet, convert); assertThat(toString(transform), equalTo(plan)); }
private void runDuplicateSortCheck(String sql, String plan) throws Exception { RuleSet ruleSet = RuleSets.ofList( SortRemoveRule.INSTANCE, EnumerableRules.ENUMERABLE_PROJECT_RULE, EnumerableRules.ENUMERABLE_WINDOW_RULE, EnumerableRules.ENUMERABLE_SORT_RULE, ProjectToWindowRule.PROJECT); Planner planner = getPlanner(null, SqlParser.configBuilder().setLex(Lex.JAVA).build(), Programs.of(ruleSet)); SqlNode parse = planner.parse(sql); SqlNode validate = planner.validate(parse); RelNode convert = planner.rel(validate).rel; RelTraitSet traitSet = planner.getEmptyTraitSet() .replace(EnumerableConvention.INSTANCE); if (traitSet.getTrait(RelCollationTraitDef.INSTANCE) == null) { // SortRemoveRule can only work if collation trait is enabled. return; } RelNode transform = planner.transform(0, traitSet, convert); assertThat(toString(transform), equalTo(plan)); }
private static Planner createPlanner() { Connection connection; SchemaPlus rootSchema; try { JavaTypeFactory typeFactory = new SamzaSqlJavaTypeFactoryImpl(); SamzaSqlDriver driver = new SamzaSqlDriver(typeFactory); DriverManager.deregisterDriver(DriverManager.getDriver("jdbc:calcite:")); DriverManager.registerDriver(driver); connection = driver.connect("jdbc:calcite:", new Properties()); CalciteConnection calciteConnection = connection.unwrap(CalciteConnection.class); rootSchema = calciteConnection.getRootSchema(); } catch (SQLException e) { throw new SamzaException(e); } final List<RelTraitDef> traitDefs = new ArrayList<>(); traitDefs.add(ConventionTraitDef.INSTANCE); traitDefs.add(RelCollationTraitDef.INSTANCE); FrameworkConfig frameworkConfig = Frameworks.newConfigBuilder() .parserConfig(SqlParser.configBuilder().setLex(Lex.JAVA).build()) .defaultSchema(rootSchema) .operatorTable(SqlStdOperatorTable.instance()) .traitDefs(traitDefs) .context(Contexts.EMPTY_CONTEXT) .costFactory(null) .build(); return Frameworks.getPlanner(frameworkConfig); }
private static void runProjectQueryWithLex(Lex lex, String sql) throws SqlParseException, ValidationException, RelConversionException { Config javaLex = SqlParser.configBuilder().setLex(lex).build(); Planner planner = getPlanner(null, javaLex, Programs.ofRules(Programs.RULE_SET)); SqlNode parse = planner.parse(sql); SqlNode validate = planner.validate(parse); RelNode convert = planner.rel(validate).rel; RelTraitSet traitSet = planner.getEmptyTraitSet().replace(EnumerableConvention.INSTANCE); RelNode transform = planner.transform(0, traitSet, convert); assertThat(transform, instanceOf(EnumerableProject.class)); List<String> fieldNames = transform.getRowType().getFieldNames(); assertThat(fieldNames.size(), is(2)); if (lex.caseSensitive) { assertThat(fieldNames.get(0), is("EMPID")); assertThat(fieldNames.get(1), is("empid")); } else { assertThat(fieldNames.get(0) + "-" + fieldNames.get(1), anyOf(is("EMPID-empid0"), is("EMPID0-empid"))); } }
public String checkTpchQuery(String tpchTestQuery) throws Exception { final SchemaPlus schema = Frameworks.createRootSchema(true).add("tpch", new ReflectiveSchema(new TpchSchema())); final FrameworkConfig config = Frameworks.newConfigBuilder() .parserConfig(SqlParser.configBuilder().setLex(Lex.MYSQL).build()) .defaultSchema(schema) .programs(Programs.ofRules(Programs.RULE_SET)) .build(); String plan; try (Planner p = Frameworks.getPlanner(config)) { SqlNode n = p.parse(tpchTestQuery); n = p.validate(n); RelNode r = p.rel(n).project(); plan = RelOptUtil.toString(r); } return plan; }
@Override public void parseSql(String sql, SqlTree sqlTree) { SqlParser.Config config = SqlParser .configBuilder() .setLex(Lex.MYSQL) .build(); SqlParser sqlParser = SqlParser.create(sql,config); SqlNode sqlNode = null; try { sqlNode = sqlParser.parseStmt(); } catch (SqlParseException e) { throw new RuntimeException("", e); } SqlParseResult sqlParseResult = new SqlParseResult(); parseNode(sqlNode, sqlParseResult); sqlParseResult.setExecSql(sqlNode.toString()); sqlTree.addExecSql(sqlParseResult); }
public String checkTpchQuery(String tpchTestQuery) throws Exception { final SchemaPlus schema = Frameworks.createRootSchema(true).add("tpch", new ReflectiveSchema(new TpchSchema())); final FrameworkConfig config = Frameworks.newConfigBuilder() .parserConfig(SqlParser.configBuilder().setLex(Lex.MYSQL).build()) .defaultSchema(schema) .programs(Programs.ofRules(Programs.RULE_SET)) .build(); String plan; try (Planner p = Frameworks.getPlanner(config)) { SqlNode n = p.parse(tpchTestQuery); n = p.validate(n); RelNode r = p.rel(n).project(); plan = RelOptUtil.toString(r); } return plan; }
private static void runProjectQueryWithLex(Lex lex, String sql) throws SqlParseException, ValidationException, RelConversionException { Config javaLex = SqlParser.configBuilder().setLex(lex).build(); Planner planner = getPlanner(null, javaLex, Programs.ofRules(Programs.RULE_SET)); SqlNode parse = planner.parse(sql); SqlNode validate = planner.validate(parse); RelNode convert = planner.rel(validate).rel; RelTraitSet traitSet = planner.getEmptyTraitSet().replace(EnumerableConvention.INSTANCE); RelNode transform = planner.transform(0, traitSet, convert); assertThat(transform, instanceOf(EnumerableProject.class)); List<String> fieldNames = transform.getRowType().getFieldNames(); assertThat(fieldNames.size(), is(2)); if (lex.caseSensitive) { assertThat(fieldNames.get(0), is("EMPID")); assertThat(fieldNames.get(1), is("empid")); } else { assertThat(fieldNames.get(0) + "-" + fieldNames.get(1), anyOf(is("EMPID-empid0"), is("EMPID0-empid"))); } }
public GremlinCompiler(Graph graph, SchemaConfig schemaConfig) { this.graph = graph; this.schemaConfig = schemaConfig; final SchemaPlus rootSchema = Frameworks.createRootSchema(true); final List<RelTraitDef> traitDefs = new ArrayList<>(); traitDefs.add(ConventionTraitDef.INSTANCE); traitDefs.add(RelCollationTraitDef.INSTANCE); final SqlParser.Config parserConfig = SqlParser.configBuilder().setLex(Lex.MYSQL).build(); frameworkConfig = Frameworks.newConfigBuilder() .parserConfig(parserConfig) .defaultSchema(rootSchema.add("gremlin", new GremlinSchema(graph, schemaConfig))) .traitDefs(traitDefs) .programs(Programs.sequence(Programs.ofRules(Programs.RULE_SET), Programs.CALC_PROGRAM)) .build(); }