Java Code Examples for org.apache.calcite.sql.validate.SqlConformance

The following examples show how to use org.apache.calcite.sql.validate.SqlConformance. These examples are extracted from open source projects. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source Project: flink   Source File: PlannerContext.java    License: Apache License 2.0 6 votes vote down vote up
/**
 * Returns the SQL parser config for this environment including a custom Calcite configuration.
 */
private SqlParser.Config getSqlParserConfig() {
	return JavaScalaConversionUtil.<SqlParser.Config>toJava(getCalciteConfig(tableConfig).getSqlParserConfig()).orElseGet(
			// we use Java lex because back ticks are easier than double quotes in programming
			// and cases are preserved
			() -> {
				SqlConformance conformance = getSqlConformance();
				return SqlParser
						.configBuilder()
						.setParserFactory(FlinkSqlParserFactories.create(conformance))
						.setConformance(conformance)
						.setLex(Lex.JAVA)
						.setIdentifierMaxLength(256)
						.build();
			}
	);
}
 
Example 2
Source Project: calcite   Source File: RexToLixTranslator.java    License: Apache License 2.0 6 votes vote down vote up
private RexToLixTranslator(RexProgram program,
    JavaTypeFactory typeFactory,
    Expression root,
    InputGetter inputGetter,
    BlockBuilder list,
    RexBuilder builder,
    SqlConformance conformance,
    Function1<String, InputGetter> correlates) {
  this.program = program; // may be null
  this.typeFactory = Objects.requireNonNull(typeFactory);
  this.conformance = Objects.requireNonNull(conformance);
  this.root = Objects.requireNonNull(root);
  this.inputGetter = inputGetter;
  this.list = Objects.requireNonNull(list);
  this.builder = Objects.requireNonNull(builder);
  this.correlates = correlates; // may be null
}
 
Example 3
Source Project: calcite   Source File: RexToLixTranslator.java    License: Apache License 2.0 6 votes vote down vote up
/**
 * Translates a {@link RexProgram} to a sequence of expressions and
 * declarations.
 *
 * @param program Program to be translated
 * @param typeFactory Type factory
 * @param conformance SQL conformance
 * @param list List of statements, populated with declarations
 * @param outputPhysType Output type, or null
 * @param root Root expression
 * @param inputGetter Generates expressions for inputs
 * @param correlates Provider of references to the values of correlated
 *                   variables
 * @return Sequence of expressions, optional condition
 */
public static List<Expression> translateProjects(RexProgram program,
    JavaTypeFactory typeFactory, SqlConformance conformance,
    BlockBuilder list, PhysType outputPhysType, Expression root,
    InputGetter inputGetter, Function1<String, InputGetter> correlates) {
  List<Type> storageTypes = null;
  if (outputPhysType != null) {
    final RelDataType rowType = outputPhysType.getRowType();
    storageTypes = new ArrayList<>(rowType.getFieldCount());
    for (int i = 0; i < rowType.getFieldCount(); i++) {
      storageTypes.add(outputPhysType.getJavaFieldType(i));
    }
  }
  return new RexToLixTranslator(program, typeFactory, root, inputGetter,
      list, new RexBuilder(typeFactory), conformance, null)
      .setCorrelates(correlates)
      .translateList(program.getProjectList(), storageTypes);
}
 
Example 4
Source Project: calcite   Source File: SqlDialect.java    License: Apache License 2.0 6 votes vote down vote up
/** Returns the {@link SqlConformance} that matches this dialect.
 *
 * <p>The base implementation returns its best guess, based upon
 * {@link #databaseProduct}; sub-classes may override. */
@Nonnull public SqlConformance getConformance() {
  switch (databaseProduct) {
  case UNKNOWN:
  case CALCITE:
    return SqlConformanceEnum.DEFAULT;
  case BIG_QUERY:
    return SqlConformanceEnum.BIG_QUERY;
  case MYSQL:
    return SqlConformanceEnum.MYSQL_5;
  case ORACLE:
    return SqlConformanceEnum.ORACLE_10;
  case MSSQL:
    return SqlConformanceEnum.SQL_SERVER_2008;
  default:
    return SqlConformanceEnum.PRAGMATIC_2003;
  }
}
 
Example 5
Source Project: calcite   Source File: SqlDialect.java    License: Apache License 2.0 6 votes vote down vote up
private ContextImpl(DatabaseProduct databaseProduct,
    String databaseProductName, String databaseVersion,
    int databaseMajorVersion, int databaseMinorVersion,
    String literalQuoteString, String literalEscapedQuoteString,
    String identifierQuoteString, Casing quotedCasing,
    Casing unquotedCasing, boolean caseSensitive,
    SqlConformance conformance, NullCollation nullCollation,
    RelDataTypeSystem dataTypeSystem,
    JethroDataSqlDialect.JethroInfo jethroInfo) {
  this.databaseProduct = Objects.requireNonNull(databaseProduct);
  this.databaseProductName = databaseProductName;
  this.databaseVersion = databaseVersion;
  this.databaseMajorVersion = databaseMajorVersion;
  this.databaseMinorVersion = databaseMinorVersion;
  this.literalQuoteString = literalQuoteString;
  this.literalEscapedQuoteString = literalEscapedQuoteString;
  this.identifierQuoteString = identifierQuoteString;
  this.quotedCasing = Objects.requireNonNull(quotedCasing);
  this.unquotedCasing = Objects.requireNonNull(unquotedCasing);
  this.caseSensitive = caseSensitive;
  this.conformance = Objects.requireNonNull(conformance);
  this.nullCollation = Objects.requireNonNull(nullCollation);
  this.dataTypeSystem = Objects.requireNonNull(dataTypeSystem);
  this.jethroInfo = Objects.requireNonNull(jethroInfo);
}
 
Example 6
Source Project: calcite   Source File: ImmutableBeans.java    License: Apache License 2.0 6 votes vote down vote up
private static Object convertDefault(Object defaultValue, String propertyName,
    Class<?> propertyType) {
  if (propertyType.equals(SqlConformance.class)) {
    // Workaround for SqlConformance because it is actually not a Enum.
    propertyType = SqlConformanceEnum.class;
  }
  if (defaultValue == null || !propertyType.isEnum()) {
    return defaultValue;
  }
  for (Object enumConstant : propertyType.getEnumConstants()) {
    if (((Enum) enumConstant).name().equals(defaultValue)) {
      return enumConstant;
    }
  }
  throw new IllegalArgumentException("property '" + propertyName
      + "' is an enum but its default value " + defaultValue
      + " is not a valid enum constant");
}
 
Example 7
Source Project: calcite   Source File: SqlTestFactory.java    License: Apache License 2.0 6 votes vote down vote up
protected SqlTestFactory(ImmutableMap<String, Object> options,
    MockCatalogReaderFactory catalogReaderFactory,
    ValidatorFactory validatorFactory) {
  this.options = options;
  this.catalogReaderFactory = catalogReaderFactory;
  this.validatorFactory = validatorFactory;
  this.operatorTable = Suppliers.memoize(
      () -> createOperatorTable((SqlOperatorTable) options.get("operatorTable")));
  this.typeFactory = Suppliers.memoize(
      () -> createTypeFactory((SqlConformance) options.get("conformance")));
  Boolean caseSensitive = (Boolean) options.get("caseSensitive");
  this.catalogReader = Suppliers.memoize(
      () -> catalogReaderFactory.create(typeFactory.get(), caseSensitive).init());
  this.parserConfig = Suppliers.memoize(
      () -> createParserConfig(options));
}
 
Example 8
Source Project: calcite   Source File: SqlToRelTestBase.java    License: Apache License 2.0 6 votes vote down vote up
protected TesterImpl(DiffRepository diffRepos, boolean enableDecorrelate,
    boolean enableTrim, boolean enableExpand, boolean enableLateDecorrelate,
    boolean enableTypeCoercion,
    SqlTestFactory.MockCatalogReaderFactory catalogReaderFactory,
    Function<RelOptCluster, RelOptCluster> clusterFactory,
    SqlToRelConverter.Config config, SqlConformance conformance,
    Context context) {
  this.diffRepos = diffRepos;
  this.enableDecorrelate = enableDecorrelate;
  this.enableTrim = enableTrim;
  this.enableExpand = enableExpand;
  this.enableLateDecorrelate = enableLateDecorrelate;
  this.enableTypeCoercion = enableTypeCoercion;
  this.catalogReaderFactory = catalogReaderFactory;
  this.clusterFactory = clusterFactory;
  this.config = config;
  this.conformance = conformance;
  this.context = context;
}
 
Example 9
Source Project: Bats   Source File: BatsOptimizerTest.java    License: Apache License 2.0 5 votes vote down vote up
static Pair<SqlNode, SqlValidator> testSqlValidator() throws Exception {
    String sql = "select * from my_schema.test where f1=1 or f2=2 order by f3 limit 2";
    sql = "select * from test";
    sql = "select * from my_schema2.test2";
    sql = "select sum(f1),max(f2) from test";

    sql = "select t1.f1,sum(Distinct f1) as sumf1 from test as t1 "
            + "where f2>20 group by f1 having f1>10 order by f1 limit 2";
    // sql = "insert into test(f1,f2,f3) values(1,2,3)";
    // sql = "update test set f1=100 where f2>10";
    // sql = "delete from test where f2>10";
    SqlNode sqlNode = parse(sql);

    SqlOperatorTable opTab = SqlStdOperatorTable.instance();
    RelDataTypeFactory typeFactory = createJavaTypeFactory();
    SqlValidatorCatalogReader catalogReader = createCalciteCatalogReader(typeFactory);
    SqlConformance conformance = SqlConformanceEnum.DEFAULT;

    List<String> names = new ArrayList<>();
    names.add("my_schema");
    names.add("test");
    catalogReader.getTable(names);

    SqlValidator sqlValidator = SqlValidatorUtil.newValidator(opTab, catalogReader, typeFactory, conformance);
    sqlNode = sqlValidator.validate(sqlNode);
    // System.out.println(sqlNode);

    sql = "insert into test(f1,f2,f3) values(1,2,3)";
    // sqlNode = parse(sql);
    // sqlNode = sqlValidator.validate(sqlNode);

    return new Pair<>(sqlNode, sqlValidator);
}
 
Example 10
Source Project: Bats   Source File: SqlParser.java    License: Apache License 2.0 5 votes vote down vote up
private ConfigImpl(int identifierMaxLength, Casing quotedCasing,
    Casing unquotedCasing, Quoting quoting, boolean caseSensitive,
    SqlConformance conformance, SqlParserImplFactory parserFactory) {
  this.identifierMaxLength = identifierMaxLength;
  this.caseSensitive = caseSensitive;
  this.conformance = Objects.requireNonNull(conformance);
  this.quotedCasing = Objects.requireNonNull(quotedCasing);
  this.unquotedCasing = Objects.requireNonNull(unquotedCasing);
  this.quoting = Objects.requireNonNull(quoting);
  this.parserFactory = Objects.requireNonNull(parserFactory);
}
 
Example 11
Source Project: marble   Source File: HiveRexExecutorImpl.java    License: Apache License 2.0 5 votes vote down vote up
private String compile(RexBuilder rexBuilder, List<RexNode> constExps,
    RexToLixTranslator.InputGetter getter, RelDataType rowType) {
  final RexProgramBuilder programBuilder =
      new RexProgramBuilder(rowType, rexBuilder);
  for (RexNode node : constExps) {
    programBuilder.addProject(
        node, "c" + programBuilder.getProjectList().size());
  }
  final JavaTypeFactoryImpl javaTypeFactory =
      new JavaTypeFactoryImpl(rexBuilder.getTypeFactory().getTypeSystem());
  final BlockBuilder blockBuilder = new BlockBuilder();
  final ParameterExpression root0_ =
      Expressions.parameter(Object.class, "root0");
  final ParameterExpression root_ = DataContext.ROOT;
  blockBuilder.add(
      Expressions.declare(
          Modifier.FINAL, root_,
          Expressions.convert_(root0_, DataContext.class)));
  final SqlConformance conformance = SqlConformanceEnum.HIVE;
  final RexProgram program = programBuilder.getProgram();
  final List<Expression> expressions =
      RexToLixTranslator.translateProjects(program, javaTypeFactory,
          conformance, blockBuilder, null, root_, getter, null);
  blockBuilder.add(
      Expressions.return_(null,
          Expressions.newArrayInit(Object[].class, expressions)));
  final MethodDeclaration methodDecl =
      Expressions.methodDecl(Modifier.PUBLIC, Object[].class,
          BuiltInMethod.FUNCTION1_APPLY.method.getName(),
          ImmutableList.of(root0_), blockBuilder.toBlock());
  String code = Expressions.toString(methodDecl);
  if (CalcitePrepareImpl.DEBUG) {
    Util.debugCode(System.out, code);
  }
  return code;
}
 
Example 12
Source Project: dremio-oss   Source File: SqlValidatorImpl.java    License: Apache License 2.0 5 votes vote down vote up
protected SqlValidatorImpl(
    FlattenOpCounter flattenCount,
    SqlOperatorTable opTab,
    SqlValidatorCatalogReader catalogReader,
    RelDataTypeFactory typeFactory,
    SqlConformance conformance) {
  super(opTab, catalogReader, typeFactory, conformance);
  this.flattenCount = flattenCount;
}
 
Example 13
Source Project: flink   Source File: FlinkSqlParserFactories.java    License: Apache License 2.0 5 votes vote down vote up
public static SqlParserImplFactory create(SqlConformance conformance) {
	if (conformance == FlinkSqlConformance.HIVE) {
		return FlinkHiveSqlParserImpl.FACTORY;
	} else {
		return FlinkSqlParserImpl.FACTORY;
	}
}
 
Example 14
Source Project: flink   Source File: FlinkDDLDataTypeTest.java    License: Apache License 2.0 5 votes vote down vote up
TestFactory(
		Map<String, Object> options,
		SqlTestFactory.MockCatalogReaderFactory catalogReaderFactory,
		SqlTestFactory.ValidatorFactory validatorFactory) {
	this.options = options;
	this.validatorFactory = validatorFactory;
	this.operatorTable =
		createOperatorTable((SqlOperatorTable) options.get("operatorTable"));
	this.typeFactory = createTypeFactory((SqlConformance) options.get("conformance"));
	Boolean caseSensitive = (Boolean) options.get("caseSensitive");
	this.catalogReader = catalogReaderFactory.create(typeFactory, caseSensitive).init();
	this.parserConfig = createParserConfig(options);
}
 
Example 15
Source Project: flink   Source File: FlinkDDLDataTypeTest.java    License: Apache License 2.0 5 votes vote down vote up
public SqlValidator getValidator() {
	final SqlConformance conformance =
		(SqlConformance) options.get("conformance");
	final boolean enableTypeCoercion = (boolean) options.get("enableTypeCoercion");
	return validatorFactory.create(operatorTable,
		catalogReader,
		typeFactory,
		conformance)
		.setEnableTypeCoercion(enableTypeCoercion);
}
 
Example 16
Source Project: flink   Source File: FlinkDDLDataTypeTest.java    License: Apache License 2.0 5 votes vote down vote up
private static SqlParser.Config createParserConfig(Map<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"))
		.setParserFactory((SqlParserImplFactory) options.get("parserFactory"))
		.build();
}
 
Example 17
Source Project: calcite   Source File: RexToLixTranslator.java    License: Apache License 2.0 5 votes vote down vote up
public static Expression translateTableFunction(JavaTypeFactory typeFactory,
    SqlConformance conformance, BlockBuilder blockBuilder,
    Expression root, RexCall rexCall, Expression inputEnumerable,
    PhysType inputPhysType, PhysType outputPhysType) {
  return new RexToLixTranslator(null, typeFactory, root, null,
      blockBuilder, new RexBuilder(typeFactory), conformance, null)
      .translateTableFunction(rexCall, inputEnumerable, inputPhysType, outputPhysType);
}
 
Example 18
Source Project: calcite   Source File: RexToLixTranslator.java    License: Apache License 2.0 5 votes vote down vote up
/** Creates a translator for translating aggregate functions. */
public static RexToLixTranslator forAggregation(JavaTypeFactory typeFactory,
    BlockBuilder list, InputGetter inputGetter, SqlConformance conformance) {
  final ParameterExpression root = DataContext.ROOT;
  return new RexToLixTranslator(null, typeFactory, root, inputGetter, list,
      new RexBuilder(typeFactory), conformance, null);
}
 
Example 19
Source Project: calcite   Source File: RexToLixTranslator.java    License: Apache License 2.0 5 votes vote down vote up
public static Expression translateCondition(RexProgram program,
    JavaTypeFactory typeFactory, BlockBuilder list, InputGetter inputGetter,
    Function1<String, InputGetter> correlates, SqlConformance conformance) {
  if (program.getCondition() == null) {
    return RexImpTable.TRUE_EXPR;
  }
  final ParameterExpression root = DataContext.ROOT;
  RexToLixTranslator translator =
      new RexToLixTranslator(program, typeFactory, root, inputGetter, list,
          new RexBuilder(typeFactory), conformance, null);
  translator = translator.setCorrelates(correlates);
  return translator.translate(
      program.getCondition(),
      RexImpTable.NullAs.FALSE);
}
 
Example 20
Source Project: calcite   Source File: EnumerableTableFunctionScan.java    License: Apache License 2.0 5 votes vote down vote up
private Result tvfImplementorBasedImplement(
    EnumerableRelImplementor implementor, Prefer pref) {
  final JavaTypeFactory typeFactory = implementor.getTypeFactory();
  final BlockBuilder builder = new BlockBuilder();
  final EnumerableRel child = (EnumerableRel) getInputs().get(0);
  final Result result =
      implementor.visitChild(this, 0, child, pref);
  final PhysType physType = PhysTypeImpl.of(
      typeFactory, getRowType(), pref.prefer(result.format));
  final Expression inputEnumerable = builder.append(
      "_input", result.block, false);
  final SqlConformance conformance =
      (SqlConformance) implementor.map.getOrDefault("_conformance",
          SqlConformanceEnum.DEFAULT);

  builder.add(
      RexToLixTranslator.translateTableFunction(
          typeFactory,
          conformance,
          builder,
          DataContext.ROOT,
          (RexCall) getCall(),
          inputEnumerable,
          result.physType,
          physType
      )
  );

  return implementor.result(physType, builder.toBlock());
}
 
Example 21
Source Project: calcite   Source File: SqlParser.java    License: Apache License 2.0 5 votes vote down vote up
private ConfigImpl(int identifierMaxLength, Casing quotedCasing,
    Casing unquotedCasing, Quoting quoting, boolean caseSensitive,
    SqlConformance conformance, SqlParserImplFactory parserFactory) {
  this.identifierMaxLength = identifierMaxLength;
  this.caseSensitive = caseSensitive;
  this.conformance = Objects.requireNonNull(conformance);
  this.quotedCasing = Objects.requireNonNull(quotedCasing);
  this.unquotedCasing = Objects.requireNonNull(unquotedCasing);
  this.quoting = Objects.requireNonNull(quoting);
  this.parserFactory = Objects.requireNonNull(parserFactory);
}
 
Example 22
Source Project: calcite   Source File: SqlDialect.java    License: Apache License 2.0 5 votes vote down vote up
@Nonnull public Context withConformance(SqlConformance conformance) {
  return new ContextImpl(databaseProduct, databaseProductName,
      databaseVersion, databaseMajorVersion, databaseMinorVersion,
      literalQuoteString, literalEscapedQuoteString,
      identifierQuoteString, quotedCasing, unquotedCasing, caseSensitive,
      conformance, nullCollation, dataTypeSystem, jethroInfo);
}
 
Example 23
Source Project: calcite   Source File: RexExecutorImpl.java    License: Apache License 2.0 5 votes vote down vote up
private static String compile(RexBuilder rexBuilder, List<RexNode> constExps,
    RexToLixTranslator.InputGetter getter, RelDataType rowType) {
  final RexProgramBuilder programBuilder =
      new RexProgramBuilder(rowType, rexBuilder);
  for (RexNode node : constExps) {
    programBuilder.addProject(
        node, "c" + programBuilder.getProjectList().size());
  }
  final JavaTypeFactoryImpl javaTypeFactory =
      new JavaTypeFactoryImpl(rexBuilder.getTypeFactory().getTypeSystem());
  final BlockBuilder blockBuilder = new BlockBuilder();
  final ParameterExpression root0_ =
      Expressions.parameter(Object.class, "root0");
  final ParameterExpression root_ = DataContext.ROOT;
  blockBuilder.add(
      Expressions.declare(
          Modifier.FINAL, root_,
          Expressions.convert_(root0_, DataContext.class)));
  final SqlConformance conformance = SqlConformanceEnum.DEFAULT;
  final RexProgram program = programBuilder.getProgram();
  final List<Expression> expressions =
      RexToLixTranslator.translateProjects(program, javaTypeFactory,
          conformance, blockBuilder, null, root_, getter, null);
  blockBuilder.add(
      Expressions.return_(null,
          Expressions.newArrayInit(Object[].class, expressions)));
  final MethodDeclaration methodDecl =
      Expressions.methodDecl(Modifier.PUBLIC, Object[].class,
          BuiltInMethod.FUNCTION1_APPLY.method.getName(),
          ImmutableList.of(root0_), blockBuilder.toBlock());
  String code = Expressions.toString(methodDecl);
  if (CalciteSystemProperty.DEBUG.value()) {
    Util.debugCode(System.out, code);
  }
  return code;
}
 
Example 24
Source Project: calcite   Source File: SqlTestFactory.java    License: Apache License 2.0 5 votes vote down vote up
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();
}
 
Example 25
Source Project: calcite   Source File: SqlTestFactory.java    License: Apache License 2.0 5 votes vote down vote up
public SqlValidator getValidator() {
  final SqlConformance conformance =
      (SqlConformance) options.get("conformance");
  final boolean lenientOperatorLookup =
      (boolean) options.get("lenientOperatorLookup");
  final boolean enableTypeCoercion = (boolean) options.get("enableTypeCoercion");
  final SqlValidator.Config config = SqlValidator.Config.DEFAULT
      .withSqlConformance(conformance)
      .withTypeCoercionEnabled(enableTypeCoercion)
      .withLenientOperatorLookup(lenientOperatorLookup);
  return validatorFactory.create(operatorTable.get(),
      catalogReader.get(),
      typeFactory.get(),
      config);
}
 
Example 26
Source Project: calcite   Source File: AbstractSqlTester.java    License: Apache License 2.0 5 votes vote down vote up
public SqlTester withConformance(SqlConformance conformance) {
  if (conformance == null) {
    conformance = SqlConformanceEnum.DEFAULT;
  }
  final SqlTester tester = with("conformance", conformance);
  if (conformance instanceof SqlConformanceEnum) {
    return tester
        .withConnectionFactory(
            CalciteAssert.EMPTY_CONNECTION_FACTORY
                .with(CalciteConnectionProperty.CONFORMANCE, conformance));
  } else {
    return tester;
  }
}
 
Example 27
Source Project: calcite   Source File: SqlToRelConverterTest.java    License: Apache License 2.0 5 votes vote down vote up
Sql(String sql, boolean decorrelate, Tester tester,
    boolean trim, UnaryOperator<SqlToRelConverter.ConfigBuilder> config,
    SqlConformance conformance) {
  this.sql = sql;
  this.decorrelate = decorrelate;
  this.tester = tester;
  this.trim = trim;
  this.config = config;
  this.conformance = conformance;
}
 
Example 28
Source Project: Bats   Source File: SqlParser.java    License: Apache License 2.0 4 votes vote down vote up
public ConfigBuilder setConformance(SqlConformance conformance) {
  this.conformance = conformance;
  return this;
}
 
Example 29
Source Project: Bats   Source File: SqlParser.java    License: Apache License 2.0 4 votes vote down vote up
public SqlConformance conformance() {
  return conformance;
}
 
Example 30
Source Project: Bats   Source File: CalciteConnectionConfigImpl.java    License: Apache License 2.0 4 votes vote down vote up
public SqlConformance conformance() {
  return CalciteConnectionProperty.CONFORMANCE.wrap(properties)
      .getEnum(SqlConformanceEnum.class);
}