You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2021/09/11 13:57:20 UTC
[shardingsphere] branch master updated: Scaling prepare tables part
1 : Define interface and implement MySQL dialect (#12369)
This is an automated email from the ASF dual-hosted git repository.
panjuan 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 237fa0a Scaling prepare tables part 1 : Define interface and implement MySQL dialect (#12369)
237fa0a is described below
commit 237fa0aaa13210e67f3f0758bdeb1bfe613febfe
Author: Hongsheng Zhong <sa...@126.com>
AuthorDate: Sat Sep 11 21:56:41 2021 +0800
Scaling prepare tables part 1 : Define interface and implement MySQL dialect (#12369)
* Add JobTargetPreparer interface and fixture impl
* EnvironmentChecker add getJobTargetPreparerClass() method and empty impl
* Integrate JobTargetPreparer with ScalingJobPreparer
* Rename
* Add DataSourcePreparer MySQL impl
* Log
---
.../sqlbuilder/AbstractScalingSQLBuilder.java | 2 +-
.../scaling/core/job/JobContext.java | 2 +-
.../scaling/core/job/check/EnvironmentChecker.java | 8 ++
.../core/job/check/EnvironmentCheckerFactory.java | 17 ++++
.../core/job/preparer/DataSourcePreparer.java} | 23 +++--
.../core/job/preparer/ScalingJobPreparer.java | 11 +++
.../core/fixture/FixtureDataSourcePreparer.java} | 15 ++--
.../core/fixture/FixtureEnvironmentChecker.java | 6 ++
.../component/checker/MySQLDataSourcePreparer.java | 99 ++++++++++++++++++++++
.../component/checker/MySQLEnvironmentChecker.java | 6 ++
.../checker/PostgreSQLEnvironmentChecker.java | 7 ++
11 files changed, 171 insertions(+), 25 deletions(-)
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/common/sqlbuilder/AbstractScalingSQLBuilder.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/common/sqlbuilder/AbstractScalingSQLBuilder.java
index 9ceeecc..b163e9c 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/common/sqlbuilder/AbstractScalingSQLBuilder.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/common/sqlbuilder/AbstractScalingSQLBuilder.java
@@ -68,7 +68,7 @@ public abstract class AbstractScalingSQLBuilder implements ScalingSQLBuilder {
* @param item to add quote item
* @return add quote string
*/
- protected StringBuilder quote(final String item) {
+ public StringBuilder quote(final String item) {
return new StringBuilder().append(getLeftIdentifierQuoteString()).append(item).append(getRightIdentifierQuoteString());
}
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/JobContext.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/JobContext.java
index 880db2f..be4c690 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/JobContext.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/JobContext.java
@@ -51,7 +51,7 @@ public final class JobContext {
private final List<IncrementalTask> incrementalTasks = new LinkedList<>();
- private JobConfiguration jobConfig;
+ private final JobConfiguration jobConfig;
private ScalingJobPreparer jobPreparer;
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/EnvironmentChecker.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/EnvironmentChecker.java
index 84e9434..8d88e59 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/EnvironmentChecker.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/EnvironmentChecker.java
@@ -19,6 +19,7 @@ package org.apache.shardingsphere.scaling.core.job.check;
import org.apache.shardingsphere.scaling.core.job.check.consistency.DataConsistencyChecker;
import org.apache.shardingsphere.scaling.core.job.check.source.DataSourceChecker;
+import org.apache.shardingsphere.scaling.core.job.preparer.DataSourcePreparer;
/**
* Environment checker.
@@ -38,4 +39,11 @@ public interface EnvironmentChecker {
* @return data consistency checker type.
*/
Class<? extends DataConsistencyChecker> getDataConsistencyCheckerClass();
+
+ /**
+ * Get data source preparer type.
+ *
+ * @return data source preparer type.
+ */
+ Class<? extends DataSourcePreparer> getDataSourcePreparerClass();
}
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/EnvironmentCheckerFactory.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/EnvironmentCheckerFactory.java
index 3d5f659..d7233ea 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/EnvironmentCheckerFactory.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/check/EnvironmentCheckerFactory.java
@@ -21,6 +21,7 @@ import lombok.SneakyThrows;
import org.apache.shardingsphere.scaling.core.job.JobContext;
import org.apache.shardingsphere.scaling.core.job.check.consistency.DataConsistencyChecker;
import org.apache.shardingsphere.scaling.core.job.check.source.DataSourceChecker;
+import org.apache.shardingsphere.scaling.core.job.preparer.DataSourcePreparer;
import org.apache.shardingsphere.scaling.core.spi.ScalingEntry;
import org.apache.shardingsphere.scaling.core.spi.ScalingEntryLoader;
@@ -53,4 +54,20 @@ public final class EnvironmentCheckerFactory {
ScalingEntry scalingEntry = ScalingEntryLoader.getInstance(databaseType);
return scalingEntry.getEnvironmentCheckerClass().getConstructor().newInstance().getDataSourceCheckerClass().getConstructor().newInstance();
}
+
+ /**
+ * Create data source preparer instance.
+ *
+ * @param databaseType database type
+ * @return data source preparer
+ */
+ @SneakyThrows(ReflectiveOperationException.class)
+ public static DataSourcePreparer getDataSourcePreparer(final String databaseType) {
+ ScalingEntry scalingEntry = ScalingEntryLoader.getInstance(databaseType);
+ Class<? extends DataSourcePreparer> preparerClass = scalingEntry.getEnvironmentCheckerClass().getConstructor().newInstance().getDataSourcePreparerClass();
+ if (null == preparerClass) {
+ return null;
+ }
+ return preparerClass.getConstructor().newInstance();
+ }
}
diff --git a/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/main/java/org/apache/shardingsphere/scaling/mysql/component/checker/MySQLEnvironmentChecker.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/preparer/DataSourcePreparer.java
similarity index 60%
copy from shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/main/java/org/apache/shardingsphere/scaling/mysql/component/checker/MySQLEnvironmentChecker.java
copy to shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/preparer/DataSourcePreparer.java
index ce34ebf..94f0a81 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/main/java/org/apache/shardingsphere/scaling/mysql/component/checker/MySQLEnvironmentChecker.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/preparer/DataSourcePreparer.java
@@ -15,22 +15,19 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.scaling.mysql.component.checker;
+package org.apache.shardingsphere.scaling.core.job.preparer;
-import org.apache.shardingsphere.scaling.core.job.check.EnvironmentChecker;
+import org.apache.shardingsphere.scaling.core.config.JobConfiguration;
/**
- * MySQL environment checker.
+ * Data source preparer.
*/
-public final class MySQLEnvironmentChecker implements EnvironmentChecker {
+public interface DataSourcePreparer {
- @Override
- public Class<MySQLDataSourceChecker> getDataSourceCheckerClass() {
- return MySQLDataSourceChecker.class;
- }
-
- @Override
- public Class<MySQLDataConsistencyChecker> getDataConsistencyCheckerClass() {
- return MySQLDataConsistencyChecker.class;
- }
+ /**
+ * Prepare target tables.
+ *
+ * @param jobConfig job configuration
+ */
+ void prepareTargetTables(JobConfiguration jobConfig);
}
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/preparer/ScalingJobPreparer.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/preparer/ScalingJobPreparer.java
index 18a36eb..e0087b2 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/preparer/ScalingJobPreparer.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/preparer/ScalingJobPreparer.java
@@ -20,6 +20,7 @@ package org.apache.shardingsphere.scaling.core.job.preparer;
import lombok.extern.slf4j.Slf4j;
import org.apache.shardingsphere.scaling.core.common.datasource.DataSourceManager;
import org.apache.shardingsphere.scaling.core.common.exception.PrepareFailedException;
+import org.apache.shardingsphere.scaling.core.config.JobConfiguration;
import org.apache.shardingsphere.scaling.core.config.TaskConfiguration;
import org.apache.shardingsphere.scaling.core.job.JobContext;
import org.apache.shardingsphere.scaling.core.job.JobStatus;
@@ -50,6 +51,7 @@ public final class ScalingJobPreparer {
* @param jobContext job context
*/
public void prepare(final JobContext jobContext) {
+ prepareTarget(jobContext.getJobConfig());
try (DataSourceManager dataSourceManager = new DataSourceManager(jobContext.getTaskConfigs())) {
checkDataSource(jobContext, dataSourceManager);
initIncrementalTasks(jobContext, dataSourceManager);
@@ -60,6 +62,15 @@ public final class ScalingJobPreparer {
}
}
+ private void prepareTarget(final JobConfiguration jobConfig) {
+ DataSourcePreparer dataSourcePreparer = EnvironmentCheckerFactory.getDataSourcePreparer(jobConfig.getHandleConfig().getDatabaseType());
+ if (null == dataSourcePreparer) {
+ log.info("dataSourcePreparer null, ignore prepare target");
+ return;
+ }
+ dataSourcePreparer.prepareTargetTables(jobConfig);
+ }
+
private void checkDataSource(final JobContext jobContext, final DataSourceManager dataSourceManager) {
checkSourceDataSources(jobContext, dataSourceManager);
if (null == jobContext.getInitProgress()) {
diff --git a/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-postgresql/src/main/java/org/apache/shardingsphere/scaling/postgresql/component/checker/PostgreSQLEnvironmentChecker.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureDataSourcePreparer.java
similarity index 61%
copy from shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-postgresql/src/main/java/org/apache/shardingsphere/scaling/postgresql/component/checker/PostgreSQLEnvironmentChecker.java
copy to shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureDataSourcePreparer.java
index a75d9ea..0230e98 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-postgresql/src/main/java/org/apache/shardingsphere/scaling/postgresql/component/checker/PostgreSQLEnvironmentChecker.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureDataSourcePreparer.java
@@ -15,19 +15,14 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.scaling.postgresql.component.checker;
+package org.apache.shardingsphere.scaling.core.fixture;
-import org.apache.shardingsphere.scaling.core.job.check.EnvironmentChecker;
+import org.apache.shardingsphere.scaling.core.config.JobConfiguration;
+import org.apache.shardingsphere.scaling.core.job.preparer.DataSourcePreparer;
-public final class PostgreSQLEnvironmentChecker implements EnvironmentChecker {
+public final class FixtureDataSourcePreparer implements DataSourcePreparer {
@Override
- public Class<PostgreSQLDataSourceChecker> getDataSourceCheckerClass() {
- return PostgreSQLDataSourceChecker.class;
- }
-
- @Override
- public Class<PostgreSQLDataConsistencyChecker> getDataConsistencyCheckerClass() {
- return PostgreSQLDataConsistencyChecker.class;
+ public void prepareTargetTables(final JobConfiguration jobConfig) {
}
}
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureEnvironmentChecker.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureEnvironmentChecker.java
index 0a8066e..90e8d28 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureEnvironmentChecker.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/fixture/FixtureEnvironmentChecker.java
@@ -20,6 +20,7 @@ package org.apache.shardingsphere.scaling.core.fixture;
import org.apache.shardingsphere.scaling.core.job.check.EnvironmentChecker;
import org.apache.shardingsphere.scaling.core.job.check.consistency.DataConsistencyChecker;
import org.apache.shardingsphere.scaling.core.job.check.source.DataSourceChecker;
+import org.apache.shardingsphere.scaling.core.job.preparer.DataSourcePreparer;
public final class FixtureEnvironmentChecker implements EnvironmentChecker {
@@ -32,4 +33,9 @@ public final class FixtureEnvironmentChecker implements EnvironmentChecker {
public Class<? extends DataConsistencyChecker> getDataConsistencyCheckerClass() {
return FixtureDataConsistencyChecker.class;
}
+
+ @Override
+ public Class<? extends DataSourcePreparer> getDataSourcePreparerClass() {
+ return FixtureDataSourcePreparer.class;
+ }
}
diff --git a/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/main/java/org/apache/shardingsphere/scaling/mysql/component/checker/MySQLDataSourcePreparer.java b/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/main/java/org/apache/shardingsphere/scaling/mysql/component/checker/MySQLDataSourcePreparer.java
new file mode 100644
index 0000000..96949dc
--- /dev/null
+++ b/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/main/java/org/apache/shardingsphere/scaling/mysql/component/checker/MySQLDataSourcePreparer.java
@@ -0,0 +1,99 @@
+/*
+ * 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.scaling.mysql.component.checker;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shardingsphere.scaling.core.common.datasource.DataSourceFactory;
+import org.apache.shardingsphere.scaling.core.common.datasource.DataSourceWrapper;
+import org.apache.shardingsphere.scaling.core.common.exception.PrepareFailedException;
+import org.apache.shardingsphere.scaling.core.config.JobConfiguration;
+import org.apache.shardingsphere.scaling.core.config.datasource.ScalingDataSourceConfiguration;
+import org.apache.shardingsphere.scaling.core.config.datasource.ShardingSphereJDBCDataSourceConfiguration;
+import org.apache.shardingsphere.scaling.core.config.yaml.ShardingRuleConfigurationSwapper;
+import org.apache.shardingsphere.scaling.core.job.preparer.DataSourcePreparer;
+import org.apache.shardingsphere.scaling.mysql.component.MySQLScalingSQLBuilder;
+import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
+import org.apache.shardingsphere.sharding.api.config.rule.ShardingAutoTableRuleConfiguration;
+import org.apache.shardingsphere.sharding.api.config.rule.ShardingTableRuleConfiguration;
+
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * Data source preparer for MySQL.
+ */
+@Slf4j
+public final class MySQLDataSourcePreparer implements DataSourcePreparer {
+
+ private final DataSourceFactory dataSourceFactory = new DataSourceFactory();
+
+ private final MySQLScalingSQLBuilder scalingSQLBuilder = new MySQLScalingSQLBuilder(Collections.emptyMap());
+
+ @Override
+ public void prepareTargetTables(final JobConfiguration jobConfig) {
+ ScalingDataSourceConfiguration sourceConfig = jobConfig.getRuleConfig().getSource().unwrap();
+ ScalingDataSourceConfiguration targetConfig = jobConfig.getRuleConfig().getTarget().unwrap();
+ try (DataSourceWrapper sourceDataSource = dataSourceFactory.newInstance(sourceConfig);
+ Connection sourceConnection = sourceDataSource.getConnection();
+ DataSourceWrapper targetDataSource = dataSourceFactory.newInstance(targetConfig);
+ Connection targetConnection = targetDataSource.getConnection()) {
+ List<String> logicTableNames = getLogicTableNames(sourceConfig);
+ for (String logicTableName : logicTableNames) {
+ createTargetTable(sourceConnection, targetConnection, logicTableName);
+ log.info("create target table '{}' success", logicTableName);
+ }
+ } catch (final SQLException ex) {
+ throw new PrepareFailedException("prepare target tables failed.", ex);
+ }
+ }
+
+ private List<String> getLogicTableNames(final ScalingDataSourceConfiguration sourceConfig) {
+ List<String> result = new ArrayList<>();
+ ShardingSphereJDBCDataSourceConfiguration source = (ShardingSphereJDBCDataSourceConfiguration) sourceConfig;
+ ShardingRuleConfiguration ruleConfig = ShardingRuleConfigurationSwapper.findAndConvertShardingRuleConfiguration(source.getRootConfig().getRules());
+ List<String> tableNames = ruleConfig.getTables().stream().map(ShardingTableRuleConfiguration::getLogicTable).collect(Collectors.toList());
+ List<String> autoTableNames = ruleConfig.getAutoTables().stream().map(ShardingAutoTableRuleConfiguration::getLogicTable).collect(Collectors.toList());
+ result.addAll(tableNames);
+ result.addAll(autoTableNames);
+ return result;
+ }
+
+ private void createTargetTable(final Connection sourceConnection, final Connection targetConnection, final String logicTableName) throws SQLException {
+ String createTableSQL = getCreateTableSQL(sourceConnection, logicTableName);
+ log.info("logicTableName: {}, createTableSQL: {}", logicTableName, createTableSQL);
+ try (Statement statement = targetConnection.createStatement()) {
+ statement.execute(createTableSQL);
+ }
+ }
+
+ private String getCreateTableSQL(final Connection sourceConnection, final String logicTableName) throws SQLException {
+ String showCreateTableSQL = "SHOW CREATE TABLE " + scalingSQLBuilder.quote(logicTableName);
+ try (Statement statement = sourceConnection.createStatement(); ResultSet resultSet = statement.executeQuery(showCreateTableSQL)) {
+ if (!resultSet.next()) {
+ throw new PrepareFailedException("show create table has no result, sql: " + showCreateTableSQL);
+ }
+ return resultSet.getString(2);
+ }
+ }
+}
diff --git a/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/main/java/org/apache/shardingsphere/scaling/mysql/component/checker/MySQLEnvironmentChecker.java b/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/main/java/org/apache/shardingsphere/scaling/mysql/component/checker/MySQLEnvironmentChecker.java
index ce34ebf..d833216 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/main/java/org/apache/shardingsphere/scaling/mysql/component/checker/MySQLEnvironmentChecker.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-mysql/src/main/java/org/apache/shardingsphere/scaling/mysql/component/checker/MySQLEnvironmentChecker.java
@@ -18,6 +18,7 @@
package org.apache.shardingsphere.scaling.mysql.component.checker;
import org.apache.shardingsphere.scaling.core.job.check.EnvironmentChecker;
+import org.apache.shardingsphere.scaling.core.job.preparer.DataSourcePreparer;
/**
* MySQL environment checker.
@@ -33,4 +34,9 @@ public final class MySQLEnvironmentChecker implements EnvironmentChecker {
public Class<MySQLDataConsistencyChecker> getDataConsistencyCheckerClass() {
return MySQLDataConsistencyChecker.class;
}
+
+ @Override
+ public Class<? extends DataSourcePreparer> getDataSourcePreparerClass() {
+ return MySQLDataSourcePreparer.class;
+ }
}
diff --git a/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-postgresql/src/main/java/org/apache/shardingsphere/scaling/postgresql/component/checker/PostgreSQLEnvironmentChecker.java b/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-postgresql/src/main/java/org/apache/shardingsphere/scaling/postgresql/component/checker/PostgreSQLEnvironmentChecker.java
index a75d9ea..86a2f03 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-postgresql/src/main/java/org/apache/shardingsphere/scaling/postgresql/component/checker/PostgreSQLEnvironmentChecker.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-postgresql/src/main/java/org/apache/shardingsphere/scaling/postgresql/component/checker/PostgreSQLEnvironmentChecker.java
@@ -18,6 +18,7 @@
package org.apache.shardingsphere.scaling.postgresql.component.checker;
import org.apache.shardingsphere.scaling.core.job.check.EnvironmentChecker;
+import org.apache.shardingsphere.scaling.core.job.preparer.DataSourcePreparer;
public final class PostgreSQLEnvironmentChecker implements EnvironmentChecker {
@@ -30,4 +31,10 @@ public final class PostgreSQLEnvironmentChecker implements EnvironmentChecker {
public Class<PostgreSQLDataConsistencyChecker> getDataConsistencyCheckerClass() {
return PostgreSQLDataConsistencyChecker.class;
}
+
+ @Override
+ public Class<? extends DataSourcePreparer> getDataSourcePreparerClass() {
+ //TODO
+ return null;
+ }
}