You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2021/05/20 11:53:56 UTC
[shardingsphere] branch master updated: Use OptimizeContext instead
of CalciteContext (#10404)
This is an automated email from the ASF dual-hosted git repository.
zhangliang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 8b21735 Use OptimizeContext instead of CalciteContext (#10404)
8b21735 is described below
commit 8b217352c4798a18044f33473d278c6953b87dd4
Author: Juan Pan(Trista) <pa...@apache.org>
AuthorDate: Thu May 20 19:53:11 2021 +0800
Use OptimizeContext instead of CalciteContext (#10404)
---
.../sql/optimize/context/CalciteContext.java | 45 -------
.../optimize/context/CalciteContextFactory.java | 144 +--------------------
.../sql/optimize/execute/CalciteJDBCExecutor.java | 10 +-
.../optimize/execute/raw/CalciteRawExecutor.java | 4 +-
.../execute/raw/context/CalciteDataContext.java | 4 +-
.../execute/raw/convert/SqlNodeConverter.java | 41 ------
.../infra/optimize/context/OptimizeContext.java | 2 +
.../optimize/context/OptimizeContextFactory.java | 4 +-
8 files changed, 21 insertions(+), 233 deletions(-)
diff --git a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/optimize/context/CalciteContext.java b/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/optimize/context/CalciteContext.java
deleted file mode 100644
index 0c935f2..0000000
--- a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/optimize/context/CalciteContext.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.infra.executor.sql.optimize.context;
-
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-import org.apache.calcite.sql.parser.SqlParser;
-import org.apache.calcite.sql.validate.SqlValidator;
-import org.apache.calcite.sql2rel.SqlToRelConverter;
-import org.apache.shardingsphere.infra.executor.sql.optimize.schema.CalciteLogicSchema;
-
-import java.util.Properties;
-
-/**
- * Calcite context.
- */
-@RequiredArgsConstructor
-@Getter
-public final class CalciteContext {
-
- private final Properties connectionProperties;
-
- private final CalciteLogicSchema calciteLogicSchema;
-
- private final SqlParser.Config parserConfig;
-
- private final SqlValidator validator;
-
- private final SqlToRelConverter relConverter;
-}
diff --git a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/optimize/context/CalciteContextFactory.java b/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/optimize/context/CalciteContextFactory.java
index 5cbcd4d..152f093 100644
--- a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/optimize/context/CalciteContextFactory.java
+++ b/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/optimize/context/CalciteContextFactory.java
@@ -17,129 +17,23 @@
package org.apache.shardingsphere.infra.executor.sql.optimize.context;
-import org.apache.calcite.config.CalciteConnectionConfig;
-import org.apache.calcite.config.CalciteConnectionConfigImpl;
-import org.apache.calcite.config.CalciteConnectionProperty;
-import org.apache.calcite.config.Lex;
-import org.apache.calcite.jdbc.CalciteSchema;
-import org.apache.calcite.jdbc.JavaTypeFactoryImpl;
-import org.apache.calcite.plan.RelOptCluster;
-import org.apache.calcite.plan.RelOptPlanner;
-import org.apache.calcite.plan.RelOptTable;
-import org.apache.calcite.plan.volcano.VolcanoPlanner;
-import org.apache.calcite.prepare.CalciteCatalogReader;
-import org.apache.calcite.rel.type.RelDataTypeFactory;
-import org.apache.calcite.rex.RexBuilder;
-import org.apache.calcite.sql.fun.SqlStdOperatorTable;
-import org.apache.calcite.sql.parser.SqlParser;
-import org.apache.calcite.sql.parser.SqlParser.Config;
-import org.apache.calcite.sql.parser.impl.SqlParserImpl;
-import org.apache.calcite.sql.validate.SqlConformanceEnum;
-import org.apache.calcite.sql.validate.SqlValidator;
-import org.apache.calcite.sql.validate.SqlValidatorUtil;
-import org.apache.calcite.sql2rel.SqlToRelConverter;
-import org.apache.calcite.sql2rel.StandardConvertletTable;
-import org.apache.shardingsphere.infra.database.type.DatabaseType;
-import org.apache.shardingsphere.infra.database.type.dialect.H2DatabaseType;
-import org.apache.shardingsphere.infra.database.type.dialect.MariaDBDatabaseType;
-import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
-import org.apache.shardingsphere.infra.database.type.dialect.OracleDatabaseType;
-import org.apache.shardingsphere.infra.database.type.dialect.PostgreSQLDatabaseType;
-import org.apache.shardingsphere.infra.database.type.dialect.SQL92DatabaseType;
-import org.apache.shardingsphere.infra.database.type.dialect.SQLServerDatabaseType;
-import org.apache.shardingsphere.infra.exception.ShardingSphereException;
-import org.apache.shardingsphere.infra.executor.sql.optimize.execute.raw.plan.PlannerInitializer;
import org.apache.shardingsphere.infra.executor.sql.optimize.schema.CalciteLogicSchema;
-import org.apache.shardingsphere.infra.executor.sql.optimize.schema.CalciteLogicSchemaFactory;
import org.apache.shardingsphere.infra.executor.sql.optimize.schema.row.CalciteRowExecutor;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
+import org.apache.shardingsphere.infra.optimize.context.OptimizeContext;
+import org.apache.shardingsphere.infra.optimize.context.OptimizeContextFactory;
-import java.util.Collections;
import java.util.Map;
-import java.util.Properties;
/**
* Calcite context factory.
*/
public final class CalciteContextFactory {
- private static final String LEX_CAMEL_NAME = CalciteConnectionProperty.LEX.camelName();
-
- private static final String CONFORMANCE_CAMEL_NAME = CalciteConnectionProperty.CONFORMANCE.camelName();
-
- private final Properties properties = new Properties();
-
- private final CalciteConnectionConfig connectionConfig;
-
- private final Config parserConfig;
-
- private final RelDataTypeFactory typeFactory;
-
- private final CalciteLogicSchemaFactory factory;
-
- private final RelOptCluster cluster;
+ private final OptimizeContextFactory optimizeContextFactory;
public CalciteContextFactory(final Map<String, ShardingSphereMetaData> metaDataMap) {
- DatabaseType databaseType = metaDataMap.isEmpty() ? null : metaDataMap.values().iterator().next().getResource().getDatabaseType();
- initProperties(databaseType);
- typeFactory = new JavaTypeFactoryImpl();
- cluster = newCluster();
- factory = new CalciteLogicSchemaFactory(metaDataMap);
- connectionConfig = new CalciteConnectionConfigImpl(properties);
- parserConfig = SqlParser.config()
- .withLex(connectionConfig.lex())
- .withIdentifierMaxLength(SqlParser.DEFAULT_IDENTIFIER_MAX_LENGTH)
- .withConformance(connectionConfig.conformance())
- .withParserFactory(SqlParserImpl.FACTORY);
- }
-
- private void initProperties(final DatabaseType databaseType) {
- // TODO Logic could be improved.
- if (databaseType instanceof MySQLDatabaseType || databaseType == null) {
- properties.setProperty(LEX_CAMEL_NAME, Lex.MYSQL.name());
- properties.setProperty(CONFORMANCE_CAMEL_NAME, SqlConformanceEnum.MYSQL_5.name());
- return;
- }
- if (databaseType instanceof H2DatabaseType) {
- // TODO No suitable type of Lex
- properties.setProperty(LEX_CAMEL_NAME, Lex.MYSQL.name());
- properties.setProperty(CONFORMANCE_CAMEL_NAME, SqlConformanceEnum.DEFAULT.name());
- return;
- }
- if (databaseType instanceof MariaDBDatabaseType) {
- properties.setProperty(LEX_CAMEL_NAME, Lex.MYSQL.name());
- properties.setProperty(CONFORMANCE_CAMEL_NAME, SqlConformanceEnum.MYSQL_5.name());
- return;
- }
- if (databaseType instanceof OracleDatabaseType) {
- properties.setProperty(LEX_CAMEL_NAME, Lex.ORACLE.name());
- properties.setProperty(CONFORMANCE_CAMEL_NAME, SqlConformanceEnum.ORACLE_12.name());
- return;
- }
- if (databaseType instanceof PostgreSQLDatabaseType) {
- // TODO No suitable type of Lex and conformance
- properties.setProperty(LEX_CAMEL_NAME, Lex.MYSQL.name());
- properties.setProperty(CONFORMANCE_CAMEL_NAME, SqlConformanceEnum.DEFAULT.name());
- return;
- }
- if (databaseType instanceof SQL92DatabaseType) {
- // TODO No suitable type of Lex
- properties.setProperty(LEX_CAMEL_NAME, Lex.MYSQL.name());
- properties.setProperty(CONFORMANCE_CAMEL_NAME, SqlConformanceEnum.STRICT_92.name());
- return;
- }
- if (databaseType instanceof SQLServerDatabaseType) {
- properties.setProperty(LEX_CAMEL_NAME, Lex.SQL_SERVER.name());
- properties.setProperty(CONFORMANCE_CAMEL_NAME, SqlConformanceEnum.SQL_SERVER_2008.name());
- return;
- }
- throw new ShardingSphereException("No matching DatabaseType found");
- }
-
- private RelOptCluster newCluster() {
- RelOptPlanner planner = new VolcanoPlanner();
- PlannerInitializer.init(planner);
- return RelOptCluster.create(planner, new RexBuilder(typeFactory));
+ optimizeContextFactory = new OptimizeContextFactory(metaDataMap);
}
/**
@@ -149,32 +43,8 @@ public final class CalciteContextFactory {
* @param executor executor
* @return calcite context
*/
- public CalciteContext create(final String schema, final CalciteRowExecutor executor) {
- CalciteLogicSchema calciteLogicSchema = factory.create(schema, executor);
- CalciteCatalogReader catalogReader = createCalciteCatalogReader(schema, connectionConfig, typeFactory, calciteLogicSchema);
- SqlValidator validator = createSqlValidator(connectionConfig, typeFactory, catalogReader);
- SqlToRelConverter relConverter = createSqlToRelConverter(cluster, validator, catalogReader);
- return new CalciteContext(properties, calciteLogicSchema, parserConfig, validator, relConverter);
- }
-
- private CalciteCatalogReader createCalciteCatalogReader(final String schema, final CalciteConnectionConfig config,
- final RelDataTypeFactory typeFactory, final CalciteLogicSchema calciteLogicSchema) {
- CalciteSchema rootSchema = CalciteSchema.createRootSchema(true);
- rootSchema.add(calciteLogicSchema.getName(), calciteLogicSchema);
- return new CalciteCatalogReader(rootSchema, Collections.singletonList(schema), typeFactory, config);
- }
-
- private SqlValidator createSqlValidator(final CalciteConnectionConfig config, final RelDataTypeFactory typeFactory, final CalciteCatalogReader catalogReader) {
- return SqlValidatorUtil.newValidator(SqlStdOperatorTable.instance(), catalogReader, typeFactory, SqlValidator.Config.DEFAULT
- .withLenientOperatorLookup(config.lenientOperatorLookup())
- .withSqlConformance(config.conformance())
- .withDefaultNullCollation(config.defaultNullCollation())
- .withIdentifierExpansion(true));
- }
-
- private SqlToRelConverter createSqlToRelConverter(final RelOptCluster cluster, final SqlValidator validator, final CalciteCatalogReader catalogReader) {
- SqlToRelConverter.Config config = SqlToRelConverter.config().withTrimUnusedFields(true);
- RelOptTable.ViewExpander expander = (rowType, queryString, schemaPath, viewPath) -> null;
- return new SqlToRelConverter(expander, validator, catalogReader, cluster, StandardConvertletTable.INSTANCE, config);
+ public OptimizeContext create(final String schema, final CalciteRowExecutor executor) {
+ CalciteLogicSchema calciteLogicSchema = new CalciteLogicSchema(optimizeContextFactory.getSchemaMetadatas().getSchemas().get(schema), executor);
+ return optimizeContextFactory.create(schema, calciteLogicSchema);
}
}
diff --git a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/optimize/execute/CalciteJDBCExecutor.java b/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/optimize/execute/CalciteJDBCExecutor.java
index 07ce4eb..87a1278 100644
--- a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/optimize/execute/CalciteJDBCExecutor.java
+++ b/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/optimize/execute/CalciteJDBCExecutor.java
@@ -22,7 +22,7 @@ import org.apache.calcite.jdbc.CalciteConnection;
import org.apache.calcite.schema.SchemaPlus;
import org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResult;
import org.apache.shardingsphere.infra.executor.sql.execute.result.query.impl.driver.jdbc.type.stream.JDBCStreamQueryResult;
-import org.apache.shardingsphere.infra.executor.sql.optimize.context.CalciteContext;
+import org.apache.shardingsphere.infra.optimize.context.OptimizeContext;
import java.sql.Connection;
import java.sql.DriverManager;
@@ -45,7 +45,7 @@ public final class CalciteJDBCExecutor implements CalciteExecutor {
public static final Properties PROPERTIES = new Properties();
- private final CalciteContext context;
+ private final OptimizeContext context;
private Statement statement;
@@ -57,7 +57,7 @@ public final class CalciteJDBCExecutor implements CalciteExecutor {
}
}
- public CalciteJDBCExecutor(final CalciteContext context) {
+ public CalciteJDBCExecutor(final OptimizeContext context) {
this.context = context;
PROPERTIES.setProperty(CalciteConnectionProperty.LEX.camelName(), context.getConnectionProperties().getProperty(CalciteConnectionProperty.LEX.camelName()));
PROPERTIES.setProperty(CalciteConnectionProperty.CONFORMANCE.camelName(), context.getConnectionProperties().getProperty(CalciteConnectionProperty.CONFORMANCE.camelName()));
@@ -92,8 +92,8 @@ public final class CalciteJDBCExecutor implements CalciteExecutor {
Connection result = DriverManager.getConnection(CONNECTION_URL, PROPERTIES);
CalciteConnection calciteConnection = result.unwrap(CalciteConnection.class);
SchemaPlus rootSchema = calciteConnection.getRootSchema();
- rootSchema.add(context.getCalciteLogicSchema().getName(), context.getCalciteLogicSchema());
- calciteConnection.setSchema(context.getCalciteLogicSchema().getName());
+ rootSchema.add(context.getSchemaName(), context.getLogicSchema());
+ calciteConnection.setSchema(context.getSchemaName());
return result;
}
diff --git a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/optimize/execute/raw/CalciteRawExecutor.java b/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/optimize/execute/raw/CalciteRawExecutor.java
index 5f3c304..b251d9e 100644
--- a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/optimize/execute/raw/CalciteRawExecutor.java
+++ b/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/optimize/execute/raw/CalciteRawExecutor.java
@@ -30,9 +30,9 @@ import org.apache.calcite.sql.SqlNode;
import org.apache.calcite.sql.parser.SqlParseException;
import org.apache.calcite.sql.parser.SqlParser;
import org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResult;
-import org.apache.shardingsphere.infra.executor.sql.optimize.context.CalciteContext;
import org.apache.shardingsphere.infra.executor.sql.optimize.execute.CalciteExecutor;
import org.apache.shardingsphere.infra.executor.sql.optimize.execute.raw.context.CalciteDataContext;
+import org.apache.shardingsphere.infra.optimize.context.OptimizeContext;
import java.sql.ResultSet;
import java.util.Collections;
@@ -44,7 +44,7 @@ import java.util.List;
@RequiredArgsConstructor
public final class CalciteRawExecutor implements CalciteExecutor {
- private final CalciteContext context;
+ private final OptimizeContext context;
@Override
public List<QueryResult> executeQuery(final String sql, final List<Object> parameters) {
diff --git a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/optimize/execute/raw/context/CalciteDataContext.java b/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/optimize/execute/raw/context/CalciteDataContext.java
index da76af8..b453a06 100644
--- a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/optimize/execute/raw/context/CalciteDataContext.java
+++ b/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/optimize/execute/raw/context/CalciteDataContext.java
@@ -22,7 +22,7 @@ import org.apache.calcite.DataContext;
import org.apache.calcite.adapter.java.JavaTypeFactory;
import org.apache.calcite.linq4j.QueryProvider;
import org.apache.calcite.schema.SchemaPlus;
-import org.apache.shardingsphere.infra.executor.sql.optimize.context.CalciteContext;
+import org.apache.shardingsphere.infra.optimize.context.OptimizeContext;
/**
* Calcite data context.
@@ -30,7 +30,7 @@ import org.apache.shardingsphere.infra.executor.sql.optimize.context.CalciteCont
@RequiredArgsConstructor
public final class CalciteDataContext implements DataContext {
- private final CalciteContext context;
+ private final OptimizeContext context;
@Override
public SchemaPlus getRootSchema() {
diff --git a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/optimize/execute/raw/convert/SqlNodeConverter.java b/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/optimize/execute/raw/convert/SqlNodeConverter.java
deleted file mode 100644
index 748266d..0000000
--- a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/optimize/execute/raw/convert/SqlNodeConverter.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.infra.executor.sql.optimize.execute.raw.convert;
-
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
-import org.apache.calcite.sql.SqlNode;
-import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
-
-import java.util.Optional;
-
-/**
- * SqlNode converter.
- */
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class SqlNodeConverter {
-
- /**
- * Convert.
- * @param statementContext statement context
- * @return sqlNode optional
- */
- public static Optional<SqlNode> convert(final SQLStatementContext<?> statementContext) {
- return Optional.empty();
- }
-}
diff --git a/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/context/OptimizeContext.java b/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/context/OptimizeContext.java
index 7dc346e..d11a911 100644
--- a/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/context/OptimizeContext.java
+++ b/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/context/OptimizeContext.java
@@ -35,6 +35,8 @@ public final class OptimizeContext {
private final Properties connectionProperties;
+ private final String schemaName;
+
private final Schema logicSchema;
private final SqlParser.Config parserConfig;
diff --git a/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/context/OptimizeContextFactory.java b/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/context/OptimizeContextFactory.java
index a3dac54..0104ad1 100644
--- a/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/context/OptimizeContextFactory.java
+++ b/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/context/OptimizeContextFactory.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.infra.optimize.context;
+import lombok.Getter;
import org.apache.calcite.config.CalciteConnectionConfig;
import org.apache.calcite.config.CalciteConnectionConfigImpl;
import org.apache.calcite.config.CalciteConnectionProperty;
@@ -74,6 +75,7 @@ public final class OptimizeContextFactory {
private final RelDataTypeFactory typeFactory;
+ @Getter
private final LogicSchemaMetadatas schemaMetadatas;
private final RelOptCluster cluster;
@@ -152,7 +154,7 @@ public final class OptimizeContextFactory {
CalciteCatalogReader catalogReader = createCalciteCatalogReader(schemaName, connectionConfig, typeFactory, logicSchema);
SqlValidator validator = createSqlValidator(connectionConfig, typeFactory, catalogReader);
SqlToRelConverter relConverter = createSqlToRelConverter(cluster, validator, catalogReader);
- return new OptimizeContext(properties, logicSchema, parserConfig, validator, relConverter);
+ return new OptimizeContext(properties, schemaName, logicSchema, parserConfig, validator, relConverter);
}
private CalciteCatalogReader createCalciteCatalogReader(final String schemaName, final CalciteConnectionConfig config,