This is an automated email from the ASF dual-hosted git repository. dwysakowicz pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/flink.git
commit c24017f4036c208f8f3560e34d11c8c82f56299f Author: slinkydeveloper <[email protected]> AuthorDate: Fri Sep 10 09:34:28 2021 +0200 [hotfix] Refactor PlannerMocks be used as holder of different mocks Signed-off-by: slinkydeveloper <[email protected]> --- .../planner/operations/MergeTableLikeUtilTest.java | 2 +- .../flink/table/planner/utils/PlannerMocks.java | 67 ++++++++++++++++++---- 2 files changed, 57 insertions(+), 12 deletions(-) diff --git a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/operations/MergeTableLikeUtilTest.java b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/operations/MergeTableLikeUtilTest.java index cbf1238..b43b949 100644 --- a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/operations/MergeTableLikeUtilTest.java +++ b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/operations/MergeTableLikeUtilTest.java @@ -71,7 +71,7 @@ public class MergeTableLikeUtilTest { private final FlinkTypeFactory typeFactory = new FlinkTypeFactory(new FlinkTypeSystem()); private final SqlValidator sqlValidator = - PlannerMocks.createDefaultPlanner().getOrCreateSqlValidator(); + PlannerMocks.create().getPlanner().getOrCreateSqlValidator(); private final MergeTableLikeUtil util = new MergeTableLikeUtil(sqlValidator, SqlNode::toString); @Test diff --git a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/utils/PlannerMocks.java b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/utils/PlannerMocks.java index 83faafc..9279526 100644 --- a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/utils/PlannerMocks.java +++ b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/utils/PlannerMocks.java @@ -18,10 +18,12 @@ package org.apache.flink.table.planner.utils; +import org.apache.flink.table.api.Schema; import org.apache.flink.table.api.TableConfig; import org.apache.flink.table.catalog.CatalogManager; +import org.apache.flink.table.catalog.CatalogTable; import org.apache.flink.table.catalog.FunctionCatalog; -import org.apache.flink.table.delegation.Parser; +import org.apache.flink.table.catalog.ObjectIdentifier; import org.apache.flink.table.expressions.resolver.ExpressionResolver; import org.apache.flink.table.module.ModuleManager; import org.apache.flink.table.planner.calcite.FlinkPlannerImpl; @@ -31,18 +33,30 @@ import org.apache.flink.table.planner.delegation.PlannerContext; import org.apache.flink.table.utils.CatalogManagerMocks; import java.util.ArrayList; +import java.util.Collections; import static org.apache.calcite.jdbc.CalciteSchemaBuilder.asRootSchema; -/** A utility class for creating an instance of {@link FlinkPlannerImpl} for testing. */ +/** + * A utility class for instantiating and holding mocks for {@link FlinkPlannerImpl}, {@link + * ParserImpl} and {@link CatalogManager} for testing. + */ public class PlannerMocks { - public static FlinkPlannerImpl createDefaultPlanner() { - TableConfig tableConfig = new TableConfig(); - CatalogManager catalogManager = CatalogManagerMocks.createEmptyCatalogManager(); - ModuleManager moduleManager = new ModuleManager(); - FunctionCatalog functionCatalog = + + private final FlinkPlannerImpl planner; + private final ParserImpl parser; + private final CatalogManager catalogManager; + + private PlannerMocks() { + this.catalogManager = CatalogManagerMocks.createEmptyCatalogManager(); + + final TableConfig tableConfig = new TableConfig(); + final ModuleManager moduleManager = new ModuleManager(); + + final FunctionCatalog functionCatalog = new FunctionCatalog(tableConfig, catalogManager, moduleManager); - PlannerContext plannerContext = + + final PlannerContext plannerContext = new PlannerContext( false, tableConfig, @@ -50,15 +64,17 @@ public class PlannerMocks { catalogManager, asRootSchema(new CatalogManagerCalciteSchema(catalogManager, true)), new ArrayList<>()); - FlinkPlannerImpl planner = + + this.planner = plannerContext.createFlinkPlanner( catalogManager.getCurrentCatalog(), catalogManager.getCurrentDatabase()); - Parser parser = + this.parser = new ParserImpl( catalogManager, () -> planner, planner::parser, plannerContext.getSqlExprToRexConverterFactory()); + catalogManager.initSchemaResolver( true, ExpressionResolver.resolverFor( @@ -69,8 +85,37 @@ public class PlannerMocks { functionCatalog.asLookup(parser::parseIdentifier), catalogManager.getDataTypeFactory(), parser::parseSqlExpression)); + } + + public FlinkPlannerImpl getPlanner() { return planner; } - private PlannerMocks() {} + public ParserImpl getParser() { + return parser; + } + + public CatalogManager getCatalogManager() { + return catalogManager; + } + + public PlannerMocks registerTemporaryTable(String tableName, Schema tableSchema) { + final CatalogTable table = + CatalogTable.of(tableSchema, null, Collections.emptyList(), Collections.emptyMap()); + + this.getCatalogManager() + .createTemporaryTable( + table, + ObjectIdentifier.of( + this.getCatalogManager().getCurrentCatalog(), + this.getCatalogManager().getCurrentDatabase(), + tableName), + false); + + return this; + } + + public static PlannerMocks create() { + return new PlannerMocks(); + } }
