This is an automated email from the ASF dual-hosted git repository.
azexin 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 7165c9fbff8 Extract openGauss special impl from
AbstractDataSourcePreparer to OpenGaussDataSourcePreparer (#24003)
7165c9fbff8 is described below
commit 7165c9fbff81197f0ab8412e638341685ce70f0e
Author: Hongsheng Zhong <[email protected]>
AuthorDate: Mon Feb 6 13:40:45 2023 +0800
Extract openGauss special impl from AbstractDataSourcePreparer to
OpenGaussDataSourcePreparer (#24003)
* Move special prepareTargetSchemas impl to OpenGaussDataSourcePreparer
* Move special executeTargetTableSQL impl to OpenGaussDataSourcePreparer
---
.../datasource/AbstractDataSourcePreparer.java | 19 +++-----------
.../datasource/OpenGaussDataSourcePreparer.java | 30 ++++++++++++++++++++++
2 files changed, 33 insertions(+), 16 deletions(-)
diff --git
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/prepare/datasource/AbstractDataSourcePreparer.java
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/prepare/datasource/AbstractDataSourcePreparer.java
index e09a55ef720..5e87e2630a1 100644
---
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/prepare/datasource/AbstractDataSourcePreparer.java
+++
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/prepare/datasource/AbstractDataSourcePreparer.java
@@ -49,11 +49,8 @@ public abstract class AbstractDataSourcePreparer implements
DataSourcePreparer {
private static final Pattern PATTERN_CREATE_TABLE =
Pattern.compile("CREATE\\s+TABLE\\s+", Pattern.CASE_INSENSITIVE);
- // TODO it's just used for openGauss
- private static final String[] IGNORE_EXCEPTION_MESSAGE = {"multiple
primary keys for table", "already exists"};
-
@Override
- public void prepareTargetSchemas(final PrepareTargetSchemasParameter
param) {
+ public void prepareTargetSchemas(final PrepareTargetSchemasParameter
param) throws SQLException {
DatabaseType targetDatabaseType = param.getTargetDatabaseType();
if (!targetDatabaseType.isSchemaAvailable()) {
return;
@@ -75,14 +72,12 @@ public abstract class AbstractDataSourcePreparer implements
DataSourcePreparer {
}
}
- private void executeCreateSchema(final PipelineDataSourceManager
dataSourceManager, final PipelineDataSourceConfiguration
targetDataSourceConfig, final String sql) {
+ private void executeCreateSchema(final PipelineDataSourceManager
dataSourceManager, final PipelineDataSourceConfiguration
targetDataSourceConfig, final String sql) throws SQLException {
log.info("prepareTargetSchemas, sql={}", sql);
try (Connection connection = getCachedDataSource(dataSourceManager,
targetDataSourceConfig).getConnection()) {
try (Statement statement = connection.createStatement()) {
statement.execute(sql);
}
- } catch (final SQLException ex) {
- log.warn("create schema failed, error: {}", ex.getMessage());
}
}
@@ -97,18 +92,10 @@ public abstract class AbstractDataSourcePreparer implements
DataSourcePreparer {
* @param sql SQL
* @throws SQLException SQL exception
*/
- protected final void executeTargetTableSQL(final Connection
targetConnection, final String sql) throws SQLException {
+ protected void executeTargetTableSQL(final Connection targetConnection,
final String sql) throws SQLException {
log.info("execute target table sql: {}", sql);
try (Statement statement = targetConnection.createStatement()) {
statement.execute(sql);
- } catch (final SQLException ex) {
- log.warn("execute target table sql failed", ex);
- for (String ignoreMessage : IGNORE_EXCEPTION_MESSAGE) {
- if (ex.getMessage().contains(ignoreMessage)) {
- return;
- }
- }
- throw ex;
}
}
diff --git
a/kernel/data-pipeline/dialect/opengauss/src/main/java/org/apache/shardingsphere/data/pipeline/opengauss/prepare/datasource/OpenGaussDataSourcePreparer.java
b/kernel/data-pipeline/dialect/opengauss/src/main/java/org/apache/shardingsphere/data/pipeline/opengauss/prepare/datasource/OpenGaussDataSourcePreparer.java
index 889562fe45e..98287f43919 100644
---
a/kernel/data-pipeline/dialect/opengauss/src/main/java/org/apache/shardingsphere/data/pipeline/opengauss/prepare/datasource/OpenGaussDataSourcePreparer.java
+++
b/kernel/data-pipeline/dialect/opengauss/src/main/java/org/apache/shardingsphere/data/pipeline/opengauss/prepare/datasource/OpenGaussDataSourcePreparer.java
@@ -18,10 +18,12 @@
package org.apache.shardingsphere.data.pipeline.opengauss.prepare.datasource;
import com.google.common.base.Splitter;
+import lombok.extern.slf4j.Slf4j;
import org.apache.curator.shaded.com.google.common.base.Strings;
import
org.apache.shardingsphere.data.pipeline.api.config.CreateTableConfiguration.CreateTableEntry;
import
org.apache.shardingsphere.data.pipeline.api.datasource.PipelineDataSourceManager;
import
org.apache.shardingsphere.data.pipeline.core.prepare.datasource.AbstractDataSourcePreparer;
+import
org.apache.shardingsphere.data.pipeline.core.prepare.datasource.PrepareTargetSchemasParameter;
import
org.apache.shardingsphere.data.pipeline.core.prepare.datasource.PrepareTargetTablesParameter;
import java.sql.Connection;
@@ -31,8 +33,22 @@ import java.util.stream.Collectors;
/**
* Data source preparer for openGauss.
*/
+@Slf4j
public final class OpenGaussDataSourcePreparer extends
AbstractDataSourcePreparer {
+ private static final String[] IGNORE_EXCEPTION_MESSAGE = {"multiple
primary keys for table", "already exists"};
+
+ @Override
+ public void prepareTargetSchemas(final PrepareTargetSchemasParameter
param) {
+ try {
+ super.prepareTargetSchemas(param);
+ } catch (final SQLException ex) {
+ // openGauss CREATE SCHEMA doesn't support IF NOT EXISTS
+ // TODO Use actual data source to create schema, check whether
schema exists or not
+ log.warn("create schema failed", ex);
+ }
+ }
+
@Override
public void prepareTargetTables(final PrepareTargetTablesParameter param)
throws SQLException {
PipelineDataSourceManager dataSourceManager =
param.getDataSourceManager();
@@ -46,6 +62,20 @@ public final class OpenGaussDataSourcePreparer extends
AbstractDataSourcePrepare
}
}
+ @Override
+ protected void executeTargetTableSQL(final Connection targetConnection,
final String sql) throws SQLException {
+ try {
+ super.executeTargetTableSQL(targetConnection, sql);
+ } catch (final SQLException ex) {
+ for (String ignoreMessage : IGNORE_EXCEPTION_MESSAGE) {
+ if (ex.getMessage().contains(ignoreMessage)) {
+ return;
+ }
+ }
+ throw ex;
+ }
+ }
+
@Override
public String getType() {
return "openGauss";