public static SqlParser.Config createParserConfig(ImmutableMap<String, Object> options) { return SqlParser.configBuilder() .setQuoting((Quoting) options.get("quoting")) .setUnquotedCasing((Casing) options.get("unquotedCasing")) .setQuotedCasing((Casing) options.get("quotedCasing")) .setConformance((SqlConformance) options.get("conformance")) .setCaseSensitive((boolean) options.get("caseSensitive")) .build(); }
final CalciteConnectionConfig config = context.config(); final SqlParser.ConfigBuilder parserConfig = createParserConfig() .setQuotedCasing(config.quotedCasing()) .setUnquotedCasing(config.unquotedCasing()) .setQuoting(config.quoting()) .setConformance(config.conformance()) .setCaseSensitive(config.caseSensitive()); final SqlParserImplFactory parserFactory = config.parserFactory(SqlParserImplFactory.class, null); if (parserFactory != null) { parserConfig.setParserFactory(parserFactory);
final CalciteConnectionConfig config = context.config(); final SqlParser.ConfigBuilder parserConfig = createParserConfig() .setQuotedCasing(config.quotedCasing()) .setUnquotedCasing(config.unquotedCasing()) .setQuoting(config.quoting()) .setConformance(config.conformance()) .setCaseSensitive(config.caseSensitive()); final SqlParserImplFactory parserFactory = config.parserFactory(SqlParserImplFactory.class, null); if (parserFactory != null) { parserConfig.setParserFactory(parserFactory);
final CalciteConnectionConfig config = context.config(); final SqlParser.ConfigBuilder parserConfig = createParserConfig() .setQuotedCasing(config.quotedCasing()) .setUnquotedCasing(config.unquotedCasing()) .setQuoting(config.quoting()) .setConformance(config.conformance()); final SqlParserImplFactory parserFactory = config.parserFactory(SqlParserImplFactory.class, null); if (parserFactory != null) { parserConfig.setParserFactory(parserFactory);
public Object execute(ParserResult result) throws SQLException { SqlParser parser = SqlParser.create(result.getParsedSql(), SqlParser.configBuilder() .setQuotedCasing(Casing.UNCHANGED) .setUnquotedCasing(Casing.UNCHANGED) .setQuoting(Quoting.DOUBLE_QUOTE) .setParserFactory(QuarkParserImpl.FACTORY) .build()); SqlNode sqlNode; try {
FrameworkConfig config = Frameworks.newConfigBuilder() .parserConfig(SqlParser.configBuilder() .setLex(Lex.MYSQL) .setIdentifierMaxLength(PlannerSettings.DEFAULT_IDENTIFIER_MAX_LENGTH) .setParserFactory(ParserImpl.FACTORY) .build()) .defaultSchema(CalciteSchema.createRootSchema(false /* addMetadata */, false /* cache */).plus()) .convertletTable(new ConvertletTable(new ContextInformation() {
@Test public void testValidatorReportsOriginalQueryUsingReader() throws Exception { final String sql = "select a from b"; final SqlParser.Config config = configBuilder().build(); final String messagePassingSqlString; try {
private SqlAdvisor getSqlAdvisor() { final CalciteConnectionImpl con = (CalciteConnectionImpl) queryProvider; final String schemaName; try { schemaName = con.getSchema(); } catch (SQLException e) { throw new RuntimeException(e); } final List<String> schemaPath = schemaName == null ? ImmutableList.of() : ImmutableList.of(schemaName); final SqlValidatorWithHints validator = new SqlAdvisorValidator(SqlStdOperatorTable.instance(), new CalciteCatalogReader(rootSchema, schemaPath, typeFactory, con.config()), typeFactory, SqlConformanceEnum.DEFAULT); final CalciteConnectionConfig config = con.config(); // This duplicates org.apache.calcite.prepare.CalcitePrepareImpl.prepare2_ final SqlParser.Config parserConfig = SqlParser.configBuilder() .setQuotedCasing(config.quotedCasing()) .setUnquotedCasing(config.unquotedCasing()) .setQuoting(config.quoting()) .setConformance(config.conformance()) .setCaseSensitive(config.caseSensitive()) .build(); return new SqlAdvisor(validator, parserConfig); }
/** Test case for * <a href="https://issues.apache.org/jira/browse/CALCITE-2039">[CALCITE-2039] * AssertionError when pushing project to ProjectableFilterableTable</a> * using UPDATE via {@link Frameworks}. */ @Test public void testUpdate() throws Exception { Table table = new TableImpl(); final SchemaPlus rootSchema = Frameworks.createRootSchema(true); SchemaPlus schema = rootSchema.add("x", new AbstractSchema()); schema.add("MYTABLE", table); List<RelTraitDef> traitDefs = new ArrayList<>(); traitDefs.add(ConventionTraitDef.INSTANCE); traitDefs.add(RelDistributionTraitDef.INSTANCE); SqlParser.Config parserConfig = SqlParser.configBuilder(SqlParser.Config.DEFAULT) .setCaseSensitive(false) .build(); final FrameworkConfig config = Frameworks.newConfigBuilder() .parserConfig(parserConfig) .defaultSchema(schema) .traitDefs(traitDefs) // define the rules you want to apply .ruleSets( RuleSets.ofList(AbstractConverter.ExpandConversionRule.INSTANCE)) .programs(Programs.ofRules(Programs.RULE_SET)) .build(); executeQuery(config, " UPDATE MYTABLE set id=7 where id=1", CalcitePrepareImpl.DEBUG); }
private Planner buildPlanner(QueryContext context) { final List<RelTraitDef> traitDefs = new ArrayList<RelTraitDef>(); traitDefs.add(ConventionTraitDef.INSTANCE); traitDefs.add(RelCollationTraitDef.INSTANCE); final ChainedSqlOperatorTable opTab = new ChainedSqlOperatorTable( ImmutableList.of(SqlStdOperatorTable.instance(), HiveSqlOperatorTable.instance(), catalogReader)); FrameworkConfig config = Frameworks.newConfigBuilder() // .parserConfig(SqlParser.configBuilder() .setQuotedCasing(Casing.UNCHANGED) .setUnquotedCasing(Casing.TO_UPPER) .setQuoting(Quoting.DOUBLE_QUOTE) .build()) // .defaultSchema(context.getDefaultSchema()) // .operatorTable(opTab) // .traitDefs(traitDefs) // .convertletTable(StandardConvertletTable.INSTANCE)// .programs(getPrograms()) // .typeSystem(RelDataTypeSystem.DEFAULT) // .build(); return Frameworks.getPlanner(config); }
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)); }
public Parser getParser(String sql, Properties info) throws SQLException { SqlParser parser = SqlParser.create(sql, SqlParser.configBuilder() .setQuotedCasing(Casing.UNCHANGED) .setUnquotedCasing(Casing.UNCHANGED) .setQuoting(Quoting.DOUBLE_QUOTE) .setParserFactory(QuarkParserImpl.FACTORY) .build()); SqlNode sqlNode; try { sqlNode = parser.parseStmt(); } catch (SqlParseException e) { throw new RuntimeException( "parse failed: " + e.getMessage(), e); } if (sqlNode.getKind().equals(SqlKind.OTHER_DDL)) { return new DDLParser(); } else { return getSqlQueryParser(info); } } }