Search in sources :

Example 26 with SqlValidator

use of org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.sql.validate.SqlValidator in project calcite by apache.

the class SqlTypeUtil method isCharTypeComparable.

/**
 * Returns whether the operands to a call are char type-comparable.
 *
 * @param binding        Binding of call to operands
 * @param operands       Operands to check for compatibility; usually the
 *                       operands of the bound call, but not always
 * @param throwOnFailure Whether to throw an exception on failure
 * @return whether operands are valid
 */
public static boolean isCharTypeComparable(SqlCallBinding binding, List<SqlNode> operands, boolean throwOnFailure) {
    final SqlValidator validator = binding.getValidator();
    final SqlValidatorScope scope = binding.getScope();
    assert operands != null;
    assert operands.size() >= 2;
    if (!isCharTypeComparable(deriveAndCollectTypes(validator, scope, operands))) {
        if (throwOnFailure) {
            String msg = "";
            for (int i = 0; i < operands.size(); i++) {
                if (i > 0) {
                    msg += ", ";
                }
                msg += operands.get(i).toString();
            }
            throw binding.newError(RESOURCE.operandNotComparable(msg));
        }
        return false;
    }
    return true;
}
Also used : SqlValidatorScope(org.apache.calcite.sql.validate.SqlValidatorScope) SqlValidator(org.apache.calcite.sql.validate.SqlValidator)

Example 27 with SqlValidator

use of org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.sql.validate.SqlValidator in project calcite by apache.

the class RelOptRulesTest method testSemiJoinTrim.

@Test
public void testSemiJoinTrim() throws Exception {
    final DiffRepository diffRepos = getDiffRepos();
    String sql = diffRepos.expand(null, "${sql}");
    TesterImpl t = (TesterImpl) tester;
    final RelDataTypeFactory typeFactory = t.getTypeFactory();
    final Prepare.CatalogReader catalogReader = t.createCatalogReader(typeFactory);
    final SqlValidator validator = t.createValidator(catalogReader, typeFactory);
    SqlToRelConverter converter = t.createSqlToRelConverter(validator, catalogReader, typeFactory, SqlToRelConverter.Config.DEFAULT);
    final SqlNode sqlQuery = t.parseQuery(sql);
    final SqlNode validatedQuery = validator.validate(sqlQuery);
    RelRoot root = converter.convertQuery(validatedQuery, false, true);
    root = root.withRel(converter.decorrelate(sqlQuery, root.rel));
    final HepProgram program = HepProgram.builder().addRuleInstance(FilterProjectTransposeRule.INSTANCE).addRuleInstance(FilterJoinRule.FILTER_ON_JOIN).addRuleInstance(ProjectMergeRule.INSTANCE).addRuleInstance(SemiJoinRule.PROJECT).build();
    HepPlanner planner = new HepPlanner(program);
    planner.setRoot(root.rel);
    root = root.withRel(planner.findBestExp());
    String planBefore = NL + RelOptUtil.toString(root.rel);
    diffRepos.assertEquals("planBefore", "${planBefore}", planBefore);
    converter = t.createSqlToRelConverter(validator, catalogReader, typeFactory, SqlToRelConverter.configBuilder().withTrimUnusedFields(true).build());
    root = root.withRel(converter.trimUnusedFields(false, root.rel));
    String planAfter = NL + RelOptUtil.toString(root.rel);
    diffRepos.assertEquals("planAfter", "${planAfter}", planAfter);
}
Also used : SqlToRelConverter(org.apache.calcite.sql2rel.SqlToRelConverter) HepProgram(org.apache.calcite.plan.hep.HepProgram) SqlValidator(org.apache.calcite.sql.validate.SqlValidator) RelDataTypeFactory(org.apache.calcite.rel.type.RelDataTypeFactory) Prepare(org.apache.calcite.prepare.Prepare) RelRoot(org.apache.calcite.rel.RelRoot) HepPlanner(org.apache.calcite.plan.hep.HepPlanner) SqlNode(org.apache.calcite.sql.SqlNode) Test(org.junit.Test)

Example 28 with SqlValidator

use of org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.sql.validate.SqlValidator in project calcite by apache.

the class SqlValidatorTest method testCoalesceWithRewrite.

@Test
public void testCoalesceWithRewrite() {
    SqlValidator validator = tester.getValidator();
    validator.setCallRewrite(true);
    if (validator.shouldExpandIdentifiers()) {
        tester.checkRewrite(validator, "select coalesce(deptno, empno) from emp", "SELECT CASE WHEN `EMP`.`DEPTNO` IS NOT NULL THEN `EMP`.`DEPTNO` ELSE `EMP`.`EMPNO` END\n" + "FROM `CATALOG`.`SALES`.`EMP` AS `EMP`");
    } else {
        tester.checkRewrite(validator, "select coalesce(deptno, empno) from emp", "SELECT CASE WHEN `DEPTNO` IS NOT NULL THEN `DEPTNO` ELSE `EMPNO` END\n" + "FROM `EMP`");
    }
}
Also used : SqlValidator(org.apache.calcite.sql.validate.SqlValidator) Test(org.junit.Test)

Example 29 with SqlValidator

use of org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.sql.validate.SqlValidator in project calcite by apache.

the class SqlValidatorTest method testRewriteWithOffsetWithoutOrderBy.

@Test
public void testRewriteWithOffsetWithoutOrderBy() {
    SqlValidator validator = tester.getValidator();
    validator.setIdentifierExpansion(false);
    final String sql = "select name from dept offset 2";
    final String expected = "SELECT `NAME`\n" + "FROM `DEPT`\n" + "OFFSET 2 ROWS";
    tester.checkRewrite(validator, sql, expected);
}
Also used : SqlValidator(org.apache.calcite.sql.validate.SqlValidator) Test(org.junit.Test)

Example 30 with SqlValidator

use of org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.sql.validate.SqlValidator in project calcite by apache.

the class SqlValidatorTest method testRewriteWithLimitWithDynamicParameters.

@Test
public void testRewriteWithLimitWithDynamicParameters() {
    SqlValidator validator = tester.getValidator();
    validator.setIdentifierExpansion(false);
    final String sql = "select name from dept offset ? rows fetch next ? rows only";
    final String expected = "SELECT `NAME`\n" + "FROM `DEPT`\n" + "OFFSET ? ROWS\n" + "FETCH NEXT ? ROWS ONLY";
    tester.checkRewrite(validator, sql, expected);
}
Also used : SqlValidator(org.apache.calcite.sql.validate.SqlValidator) Test(org.junit.Test)

Aggregations

SqlValidator (org.apache.calcite.sql.validate.SqlValidator)31 SqlNode (org.apache.calcite.sql.SqlNode)17 Test (org.junit.Test)11 RelDataType (org.apache.calcite.rel.type.RelDataType)8 RelDataTypeField (org.apache.calcite.rel.type.RelDataTypeField)4 SqlValidatorScope (org.apache.calcite.sql.validate.SqlValidatorScope)4 ImmutableList (com.google.common.collect.ImmutableList)3 ArrayList (java.util.ArrayList)3 List (java.util.List)3 RelDataTypeFactory (org.apache.calcite.rel.type.RelDataTypeFactory)3 SqlCall (org.apache.calcite.sql.SqlCall)3 SqlParseException (org.apache.calcite.sql.parser.SqlParseException)3 JavaTypeFactory (org.apache.calcite.adapter.java.JavaTypeFactory)2 RelRoot (org.apache.calcite.rel.RelRoot)2 SqlIdentifier (org.apache.calcite.sql.SqlIdentifier)2 SqlIntervalLiteral (org.apache.calcite.sql.SqlIntervalLiteral)2 SqlSelect (org.apache.calcite.sql.SqlSelect)2 SqlParser (org.apache.calcite.sql.parser.SqlParser)2 RESOURCE (com.hazelcast.jet.sql.impl.parse.ParserResource.RESOURCE)1 HazelcastTable (com.hazelcast.jet.sql.impl.schema.HazelcastTable)1