This is an automated email from the ASF dual-hosted git repository.

zhaojinchao 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 ecfb53ec485 Remove DialectDataSourceChecker in pipeline module (#32152)
ecfb53ec485 is described below

commit ecfb53ec485d506434340b9d0f59616739fe43b4
Author: Raigor <[email protected]>
AuthorDate: Wed Jul 17 18:41:25 2024 +0800

    Remove DialectDataSourceChecker in pipeline module (#32152)
    
    * Remove DialectDataSourceChecker in pipeline module
    
    * Remove DialectDataSourceChecker in pipeline module
---
 .../PostgreSQLDatabaseEnvironmentCheckerTest.java  |  19 ++--
 .../core/checker/DataSourceCheckEngine.java        |   8 +-
 .../core/checker/DialectDataSourceChecker.java     |  44 ---------
 .../check/datasource/MySQLDataSourceChecker.java   | 108 --------------------
 ....pipeline.core.checker.DialectDataSourceChecker |  18 ----
 .../datasource/MySQLDataSourceCheckerTest.java     | 109 ---------------------
 .../datasource/OpenGaussDataSourceChecker.java     |  70 -------------
 ....pipeline.core.checker.DialectDataSourceChecker |  18 ----
 .../datasource/PostgreSQLDataSourceChecker.java    |  72 --------------
 ....pipeline.core.checker.DialectDataSourceChecker |  18 ----
 .../fixture/h2/checker/H2DataSourceChecker.java    |  41 --------
 ....pipeline.core.checker.DialectDataSourceChecker |  18 ----
 12 files changed, 15 insertions(+), 528 deletions(-)

diff --git 
a/kernel/data-pipeline/dialect/postgresql/src/test/java/org/apache/shardingsphere/data/pipeline/postgresql/check/datasource/PostgreSQLDataSourceCheckerTest.java
 
b/infra/database/type/postgresql/src/test/java/org/apache/shardingsphere/infra/database/postgresql/checker/PostgreSQLDatabaseEnvironmentCheckerTest.java
similarity index 76%
rename from 
kernel/data-pipeline/dialect/postgresql/src/test/java/org/apache/shardingsphere/data/pipeline/postgresql/check/datasource/PostgreSQLDataSourceCheckerTest.java
rename to 
infra/database/type/postgresql/src/test/java/org/apache/shardingsphere/infra/database/postgresql/checker/PostgreSQLDatabaseEnvironmentCheckerTest.java
index 17471ac5643..96ba13810a5 100644
--- 
a/kernel/data-pipeline/dialect/postgresql/src/test/java/org/apache/shardingsphere/data/pipeline/postgresql/check/datasource/PostgreSQLDataSourceCheckerTest.java
+++ 
b/infra/database/type/postgresql/src/test/java/org/apache/shardingsphere/infra/database/postgresql/checker/PostgreSQLDatabaseEnvironmentCheckerTest.java
@@ -15,9 +15,10 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.data.pipeline.postgresql.check.datasource;
+package org.apache.shardingsphere.infra.database.postgresql.checker;
 
-import 
org.apache.shardingsphere.data.pipeline.core.exception.job.PrepareJobWithoutEnoughPrivilegeException;
+import 
org.apache.shardingsphere.infra.database.core.checker.PrivilegeCheckType;
+import 
org.apache.shardingsphere.infra.database.core.exception.MissingRequiredPrivilegeException;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -38,7 +39,7 @@ import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 @ExtendWith(MockitoExtension.class)
-class PostgreSQLDataSourceCheckerTest {
+class PostgreSQLDatabaseEnvironmentCheckerTest {
     
     @Mock
     private DataSource dataSource;
@@ -67,28 +68,28 @@ class PostgreSQLDataSourceCheckerTest {
     
     @Test
     void assertCheckRolReplication() throws SQLException {
-        PostgreSQLDataSourceChecker dataSourceChecker = new 
PostgreSQLDataSourceChecker();
+        PostgreSQLDatabaseEnvironmentChecker dataSourceChecker = new 
PostgreSQLDatabaseEnvironmentChecker();
         when(resultSet.getString("rolreplication")).thenReturn("t");
         when(resultSet.getString("rolsuper")).thenReturn("f");
-        dataSourceChecker.checkPrivilege(dataSource);
+        dataSourceChecker.checkPrivilege(dataSource, 
PrivilegeCheckType.PIPELINE);
         verify(resultSet, atLeastOnce()).getString("rolsuper");
     }
     
     @Test
     void assertCheckRolSuper() throws SQLException {
-        PostgreSQLDataSourceChecker dataSourceChecker = new 
PostgreSQLDataSourceChecker();
+        PostgreSQLDatabaseEnvironmentChecker dataSourceChecker = new 
PostgreSQLDatabaseEnvironmentChecker();
         when(resultSet.getString("rolsuper")).thenReturn("t");
         when(resultSet.getString("rolreplication")).thenReturn("f");
-        dataSourceChecker.checkPrivilege(dataSource);
+        dataSourceChecker.checkPrivilege(dataSource, 
PrivilegeCheckType.PIPELINE);
         verify(resultSet, atLeastOnce()).getString("rolreplication");
     }
     
     @Test
     void assertCheckNoPrivilege() throws SQLException {
-        PostgreSQLDataSourceChecker dataSourceChecker = new 
PostgreSQLDataSourceChecker();
+        PostgreSQLDatabaseEnvironmentChecker dataSourceChecker = new 
PostgreSQLDatabaseEnvironmentChecker();
         when(resultSet.getString("rolsuper")).thenReturn("f");
         when(resultSet.getString("rolreplication")).thenReturn("f");
-        assertThrows(PrepareJobWithoutEnoughPrivilegeException.class, () -> 
dataSourceChecker.checkPrivilege(dataSource));
+        assertThrows(MissingRequiredPrivilegeException.class, () -> 
dataSourceChecker.checkPrivilege(dataSource, PrivilegeCheckType.PIPELINE));
         verify(resultSet, atLeastOnce()).getString("rolreplication");
     }
 }
diff --git 
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/checker/DataSourceCheckEngine.java
 
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/checker/DataSourceCheckEngine.java
index 55a55d10058..89062655669 100644
--- 
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/checker/DataSourceCheckEngine.java
+++ 
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/checker/DataSourceCheckEngine.java
@@ -20,6 +20,8 @@ package org.apache.shardingsphere.data.pipeline.core.checker;
 import 
org.apache.shardingsphere.data.pipeline.core.exception.job.PrepareJobWithTargetTableNotEmptyException;
 import 
org.apache.shardingsphere.data.pipeline.core.importer.ImporterConfiguration;
 import 
org.apache.shardingsphere.data.pipeline.core.sqlbuilder.sql.PipelinePrepareSQLBuilder;
+import 
org.apache.shardingsphere.infra.database.core.checker.DialectDatabaseEnvironmentChecker;
+import 
org.apache.shardingsphere.infra.database.core.checker.PrivilegeCheckType;
 import 
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
 import 
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
@@ -38,12 +40,12 @@ import java.util.Collection;
  */
 public final class DataSourceCheckEngine {
     
-    private final DialectDataSourceChecker checker;
+    private final DialectDatabaseEnvironmentChecker checker;
     
     private final PipelinePrepareSQLBuilder sqlBuilder;
     
     public DataSourceCheckEngine(final DatabaseType databaseType) {
-        checker = 
DatabaseTypedSPILoader.findService(DialectDataSourceChecker.class, 
databaseType).orElse(null);
+        checker = 
DatabaseTypedSPILoader.findService(DialectDatabaseEnvironmentChecker.class, 
databaseType).orElse(null);
         sqlBuilder = new PipelinePrepareSQLBuilder(databaseType);
     }
     
@@ -73,7 +75,7 @@ public final class DataSourceCheckEngine {
         if (null == checker) {
             return;
         }
-        dataSources.forEach(checker::checkPrivilege);
+        dataSources.forEach(each -> checker.checkPrivilege(each, 
PrivilegeCheckType.PIPELINE));
         dataSources.forEach(checker::checkVariable);
     }
     
diff --git 
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/checker/DialectDataSourceChecker.java
 
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/checker/DialectDataSourceChecker.java
deleted file mode 100644
index 946f6b53e71..00000000000
--- 
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/checker/DialectDataSourceChecker.java
+++ /dev/null
@@ -1,44 +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.data.pipeline.core.checker;
-
-import org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPI;
-import org.apache.shardingsphere.infra.spi.annotation.SingletonSPI;
-
-import javax.sql.DataSource;
-
-/**
- * Dialect data source checker.
- */
-@SingletonSPI
-public interface DialectDataSourceChecker extends DatabaseTypedSPI {
-    
-    /**
-     * Check user privileges.
-     *
-     * @param dataSource data source to be checked
-     */
-    void checkPrivilege(DataSource dataSource);
-    
-    /**
-     * Check variables.
-     *
-     * @param dataSource data source to be checked
-     */
-    void checkVariable(DataSource dataSource);
-}
diff --git 
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/check/datasource/MySQLDataSourceChecker.java
 
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/check/datasource/MySQLDataSourceChecker.java
deleted file mode 100644
index acf445a48ad..00000000000
--- 
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/check/datasource/MySQLDataSourceChecker.java
+++ /dev/null
@@ -1,108 +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.data.pipeline.mysql.check.datasource;
-
-import 
org.apache.shardingsphere.data.pipeline.core.exception.job.PrepareJobWithCheckPrivilegeFailedException;
-import 
org.apache.shardingsphere.data.pipeline.core.exception.job.PrepareJobWithInvalidSourceDataSourceException;
-import 
org.apache.shardingsphere.data.pipeline.core.exception.job.PrepareJobWithoutEnoughPrivilegeException;
-import 
org.apache.shardingsphere.data.pipeline.core.checker.DialectDataSourceChecker;
-import 
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
-
-import javax.sql.DataSource;
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.stream.Collectors;
-
-/**
- * Data source checker for MySQL.
- */
-public final class MySQLDataSourceChecker implements DialectDataSourceChecker {
-    
-    private static final String SHOW_GRANTS_SQL = "SHOW GRANTS";
-    
-    // BINLOG MONITOR is a synonym for REPLICATION CLIENT for MariaDB
-    private static final String[][] REQUIRED_PRIVILEGES = {{"ALL PRIVILEGES", 
"ON *.*"}, {"REPLICATION SLAVE", "REPLICATION CLIENT", "ON *.*"}, {"REPLICATION 
SLAVE", "BINLOG MONITOR", "ON *.*"}};
-    
-    private static final Map<String, String> REQUIRED_VARIABLES = new 
HashMap<>(3, 1F);
-    
-    private static final String SHOW_VARIABLES_SQL;
-    
-    static {
-        REQUIRED_VARIABLES.put("LOG_BIN", "ON");
-        REQUIRED_VARIABLES.put("BINLOG_FORMAT", "ROW");
-        // It does not exist in all versions of MySQL
-        REQUIRED_VARIABLES.put("BINLOG_ROW_IMAGE", "FULL");
-        SHOW_VARIABLES_SQL = String.format("SHOW VARIABLES WHERE Variable_name 
IN (%s)", REQUIRED_VARIABLES.keySet().stream().map(each -> 
"?").collect(Collectors.joining(",")));
-    }
-    
-    @Override
-    public void checkPrivilege(final DataSource dataSource) {
-        try (
-                Connection connection = dataSource.getConnection();
-                PreparedStatement preparedStatement = 
connection.prepareStatement(SHOW_GRANTS_SQL);
-                ResultSet resultSet = preparedStatement.executeQuery()) {
-            while (resultSet.next()) {
-                String privilege = resultSet.getString(1).toUpperCase();
-                if (matchPrivileges(privilege)) {
-                    return;
-                }
-            }
-        } catch (final SQLException ex) {
-            throw new PrepareJobWithCheckPrivilegeFailedException(ex);
-        }
-        throw new 
PrepareJobWithoutEnoughPrivilegeException(Arrays.asList("REPLICATION SLAVE", 
"REPLICATION CLIENT"));
-    }
-    
-    private boolean matchPrivileges(final String privilege) {
-        return Arrays.stream(REQUIRED_PRIVILEGES).anyMatch(each -> 
Arrays.stream(each).allMatch(privilege::contains));
-    }
-    
-    @Override
-    public void checkVariable(final DataSource dataSource) {
-        try (
-                Connection connection = dataSource.getConnection();
-                PreparedStatement preparedStatement = 
connection.prepareStatement(SHOW_VARIABLES_SQL)) {
-            int parameterIndex = 1;
-            for (Entry<String, String> entry : REQUIRED_VARIABLES.entrySet()) {
-                preparedStatement.setString(parameterIndex++, entry.getKey());
-            }
-            try (ResultSet resultSet = preparedStatement.executeQuery()) {
-                while (resultSet.next()) {
-                    String key = resultSet.getString(1).toUpperCase();
-                    String expectedValue = REQUIRED_VARIABLES.get(key);
-                    String actualValue = resultSet.getString(2);
-                    
ShardingSpherePreconditions.checkState(expectedValue.equalsIgnoreCase(actualValue),
-                            () -> new 
PrepareJobWithInvalidSourceDataSourceException(key, expectedValue, 
actualValue));
-                }
-            }
-        } catch (final SQLException ex) {
-            throw new PrepareJobWithCheckPrivilegeFailedException(ex);
-        }
-    }
-    
-    @Override
-    public String getDatabaseType() {
-        return "MySQL";
-    }
-}
diff --git 
a/kernel/data-pipeline/dialect/mysql/src/main/resources/META-INF/services/org.apache.shardingsphere.data.pipeline.core.checker.DialectDataSourceChecker
 
b/kernel/data-pipeline/dialect/mysql/src/main/resources/META-INF/services/org.apache.shardingsphere.data.pipeline.core.checker.DialectDataSourceChecker
deleted file mode 100644
index 0e0c299b17a..00000000000
--- 
a/kernel/data-pipeline/dialect/mysql/src/main/resources/META-INF/services/org.apache.shardingsphere.data.pipeline.core.checker.DialectDataSourceChecker
+++ /dev/null
@@ -1,18 +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.
-#
-
-org.apache.shardingsphere.data.pipeline.mysql.check.datasource.MySQLDataSourceChecker
diff --git 
a/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/check/datasource/MySQLDataSourceCheckerTest.java
 
b/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/check/datasource/MySQLDataSourceCheckerTest.java
deleted file mode 100644
index 513e1462bff..00000000000
--- 
a/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/check/datasource/MySQLDataSourceCheckerTest.java
+++ /dev/null
@@ -1,109 +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.data.pipeline.mysql.check.datasource;
-
-import 
org.apache.shardingsphere.data.pipeline.core.exception.job.PrepareJobWithCheckPrivilegeFailedException;
-import 
org.apache.shardingsphere.data.pipeline.core.exception.job.PrepareJobWithInvalidSourceDataSourceException;
-import 
org.apache.shardingsphere.data.pipeline.core.exception.job.PrepareJobWithoutEnoughPrivilegeException;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.mockito.Answers;
-import org.mockito.Mock;
-import org.mockito.junit.jupiter.MockitoExtension;
-
-import javax.sql.DataSource;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-
-import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
-import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-@ExtendWith(MockitoExtension.class)
-class MySQLDataSourceCheckerTest {
-    
-    @Mock
-    private PreparedStatement preparedStatement;
-    
-    @Mock
-    private ResultSet resultSet;
-    
-    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
-    private DataSource dataSource;
-    
-    @BeforeEach
-    void setUp() throws SQLException {
-        
when(dataSource.getConnection().prepareStatement(anyString())).thenReturn(preparedStatement);
-        when(preparedStatement.executeQuery()).thenReturn(resultSet);
-    }
-    
-    @Test
-    void assertCheckPrivilegeWithParticularSuccess() throws SQLException {
-        when(resultSet.next()).thenReturn(true);
-        when(resultSet.getString(1)).thenReturn("GRANT REPLICATION SLAVE, 
REPLICATION CLIENT ON *.* TO '%'@'%'");
-        new MySQLDataSourceChecker().checkPrivilege(dataSource);
-        verify(preparedStatement).executeQuery();
-    }
-    
-    @Test
-    void assertCheckPrivilegeWithAllSuccess() throws SQLException {
-        when(resultSet.next()).thenReturn(true);
-        when(resultSet.getString(1)).thenReturn("GRANT ALL PRIVILEGES CLIENT 
ON *.* TO '%'@'%'");
-        new MySQLDataSourceChecker().checkPrivilege(dataSource);
-        verify(preparedStatement).executeQuery();
-    }
-    
-    @Test
-    void assertCheckPrivilegeLackPrivileges() {
-        assertThrows(PrepareJobWithoutEnoughPrivilegeException.class, () -> 
new MySQLDataSourceChecker().checkPrivilege(dataSource));
-    }
-    
-    @Test
-    void assertCheckPrivilegeFailure() throws SQLException {
-        when(resultSet.next()).thenThrow(new SQLException(""));
-        assertThrows(PrepareJobWithCheckPrivilegeFailedException.class, () -> 
new MySQLDataSourceChecker().checkPrivilege(dataSource));
-    }
-    
-    @Test
-    void assertCheckVariableSuccess() throws SQLException {
-        when(resultSet.next()).thenReturn(true, true, true, false);
-        when(resultSet.getString(1)).thenReturn("LOG_BIN", "BINLOG_FORMAT", 
"BINLOG_ROW_IMAGE");
-        when(resultSet.getString(2)).thenReturn("ON", "ROW", "FULL");
-        assertDoesNotThrow(() -> new 
MySQLDataSourceChecker().checkVariable(dataSource));
-        verify(preparedStatement, times(1)).executeQuery();
-    }
-    
-    @Test
-    void assertCheckVariableWithWrongVariable() throws SQLException {
-        when(resultSet.next()).thenReturn(true, true, false);
-        when(resultSet.getString(1)).thenReturn("BINLOG_FORMAT", "LOG_BIN");
-        when(resultSet.getString(2)).thenReturn("ROW", "OFF");
-        assertThrows(PrepareJobWithInvalidSourceDataSourceException.class, () 
-> new MySQLDataSourceChecker().checkVariable(dataSource));
-    }
-    
-    @Test
-    void assertCheckVariableFailure() throws SQLException {
-        when(resultSet.next()).thenThrow(new SQLException(""));
-        assertThrows(PrepareJobWithCheckPrivilegeFailedException.class, () -> 
new MySQLDataSourceChecker().checkVariable(dataSource));
-    }
-}
diff --git 
a/kernel/data-pipeline/dialect/opengauss/src/main/java/org/apache/shardingsphere/data/pipeline/opengauss/check/datasource/OpenGaussDataSourceChecker.java
 
b/kernel/data-pipeline/dialect/opengauss/src/main/java/org/apache/shardingsphere/data/pipeline/opengauss/check/datasource/OpenGaussDataSourceChecker.java
deleted file mode 100644
index c098fe3c580..00000000000
--- 
a/kernel/data-pipeline/dialect/opengauss/src/main/java/org/apache/shardingsphere/data/pipeline/opengauss/check/datasource/OpenGaussDataSourceChecker.java
+++ /dev/null
@@ -1,70 +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.data.pipeline.opengauss.check.datasource;
-
-import 
org.apache.shardingsphere.data.pipeline.core.exception.job.PrepareJobWithCheckPrivilegeFailedException;
-import 
org.apache.shardingsphere.data.pipeline.core.exception.job.PrepareJobWithoutEnoughPrivilegeException;
-import 
org.apache.shardingsphere.data.pipeline.core.exception.job.PrepareJobWithoutUserException;
-import 
org.apache.shardingsphere.data.pipeline.core.checker.DialectDataSourceChecker;
-import 
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
-
-import javax.sql.DataSource;
-import java.sql.Connection;
-import java.sql.DatabaseMetaData;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.util.Collections;
-
-/**
- * Data source checker of openGauss.
- */
-public final class OpenGaussDataSourceChecker implements 
DialectDataSourceChecker {
-    
-    private static final String SHOW_GRANTS_SQL = "SELECT * FROM pg_roles 
WHERE rolname = ?";
-    
-    @Override
-    public void checkPrivilege(final DataSource dataSource) {
-        try (
-                Connection connection = dataSource.getConnection();
-                PreparedStatement preparedStatement = 
connection.prepareStatement(SHOW_GRANTS_SQL)) {
-            DatabaseMetaData metaData = connection.getMetaData();
-            preparedStatement.setString(1, metaData.getUserName());
-            try (ResultSet resultSet = preparedStatement.executeQuery()) {
-                String username = metaData.getUserName();
-                ShardingSpherePreconditions.checkState(resultSet.next(), () -> 
new PrepareJobWithoutUserException(username));
-                String isSuperRole = resultSet.getString("rolsuper");
-                String isReplicationRole = 
resultSet.getString("rolreplication");
-                String isSystemAdminRole = 
resultSet.getString("rolsystemadmin");
-                
ShardingSpherePreconditions.checkState("t".equalsIgnoreCase(isSuperRole) || 
"t".equalsIgnoreCase(isReplicationRole) || 
"t".equalsIgnoreCase(isSystemAdminRole),
-                        () -> new 
PrepareJobWithoutEnoughPrivilegeException(Collections.singleton("REPLICATION")));
-            }
-        } catch (final SQLException ex) {
-            throw new PrepareJobWithCheckPrivilegeFailedException(ex);
-        }
-    }
-    
-    @Override
-    public void checkVariable(final DataSource dataSource) {
-    }
-    
-    @Override
-    public String getDatabaseType() {
-        return "openGauss";
-    }
-}
diff --git 
a/kernel/data-pipeline/dialect/opengauss/src/main/resources/META-INF/services/org.apache.shardingsphere.data.pipeline.core.checker.DialectDataSourceChecker
 
b/kernel/data-pipeline/dialect/opengauss/src/main/resources/META-INF/services/org.apache.shardingsphere.data.pipeline.core.checker.DialectDataSourceChecker
deleted file mode 100644
index ace6b9edc7a..00000000000
--- 
a/kernel/data-pipeline/dialect/opengauss/src/main/resources/META-INF/services/org.apache.shardingsphere.data.pipeline.core.checker.DialectDataSourceChecker
+++ /dev/null
@@ -1,18 +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.
-#
-
-org.apache.shardingsphere.data.pipeline.opengauss.check.datasource.OpenGaussDataSourceChecker
diff --git 
a/kernel/data-pipeline/dialect/postgresql/src/main/java/org/apache/shardingsphere/data/pipeline/postgresql/check/datasource/PostgreSQLDataSourceChecker.java
 
b/kernel/data-pipeline/dialect/postgresql/src/main/java/org/apache/shardingsphere/data/pipeline/postgresql/check/datasource/PostgreSQLDataSourceChecker.java
deleted file mode 100644
index b51f9ba14cc..00000000000
--- 
a/kernel/data-pipeline/dialect/postgresql/src/main/java/org/apache/shardingsphere/data/pipeline/postgresql/check/datasource/PostgreSQLDataSourceChecker.java
+++ /dev/null
@@ -1,72 +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.data.pipeline.postgresql.check.datasource;
-
-import lombok.extern.slf4j.Slf4j;
-import 
org.apache.shardingsphere.data.pipeline.core.exception.job.PrepareJobWithCheckPrivilegeFailedException;
-import 
org.apache.shardingsphere.data.pipeline.core.exception.job.PrepareJobWithoutEnoughPrivilegeException;
-import 
org.apache.shardingsphere.data.pipeline.core.exception.job.PrepareJobWithoutUserException;
-import 
org.apache.shardingsphere.data.pipeline.core.checker.DialectDataSourceChecker;
-import 
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
-
-import javax.sql.DataSource;
-import java.sql.Connection;
-import java.sql.DatabaseMetaData;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.util.Collections;
-
-/**
- * PostgreSQL Data source checker.
- */
-@Slf4j
-public final class PostgreSQLDataSourceChecker implements 
DialectDataSourceChecker {
-    
-    private static final String SHOW_GRANTS_SQL = "SELECT * FROM pg_roles 
WHERE rolname = ?";
-    
-    @Override
-    public void checkPrivilege(final DataSource dataSource) {
-        try (
-                Connection connection = dataSource.getConnection();
-                PreparedStatement preparedStatement = 
connection.prepareStatement(SHOW_GRANTS_SQL)) {
-            DatabaseMetaData metaData = connection.getMetaData();
-            preparedStatement.setString(1, metaData.getUserName());
-            try (ResultSet resultSet = preparedStatement.executeQuery()) {
-                String username = metaData.getUserName();
-                ShardingSpherePreconditions.checkState(resultSet.next(), () -> 
new PrepareJobWithoutUserException(username));
-                String isSuperRole = resultSet.getString("rolsuper");
-                String isReplicationRole = 
resultSet.getString("rolreplication");
-                log.info("checkPrivilege: isSuperRole: {}, isReplicationRole: 
{}", isSuperRole, isReplicationRole);
-                
ShardingSpherePreconditions.checkState("t".equalsIgnoreCase(isSuperRole) || 
"t".equalsIgnoreCase(isReplicationRole),
-                        () -> new 
PrepareJobWithoutEnoughPrivilegeException(Collections.singleton("REPLICATION")));
-            }
-        } catch (final SQLException ex) {
-            throw new PrepareJobWithCheckPrivilegeFailedException(ex);
-        }
-    }
-    
-    @Override
-    public void checkVariable(final DataSource dataSource) {
-    }
-    
-    @Override
-    public String getDatabaseType() {
-        return "PostgreSQL";
-    }
-}
diff --git 
a/kernel/data-pipeline/dialect/postgresql/src/main/resources/META-INF/services/org.apache.shardingsphere.data.pipeline.core.checker.DialectDataSourceChecker
 
b/kernel/data-pipeline/dialect/postgresql/src/main/resources/META-INF/services/org.apache.shardingsphere.data.pipeline.core.checker.DialectDataSourceChecker
deleted file mode 100644
index 9125b0d20f9..00000000000
--- 
a/kernel/data-pipeline/dialect/postgresql/src/main/resources/META-INF/services/org.apache.shardingsphere.data.pipeline.core.checker.DialectDataSourceChecker
+++ /dev/null
@@ -1,18 +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.
-#
-
-org.apache.shardingsphere.data.pipeline.postgresql.check.datasource.PostgreSQLDataSourceChecker
diff --git 
a/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/fixture/h2/checker/H2DataSourceChecker.java
 
b/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/fixture/h2/checker/H2DataSourceChecker.java
deleted file mode 100644
index a6b4aab6dbd..00000000000
--- 
a/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/fixture/h2/checker/H2DataSourceChecker.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.test.it.data.pipeline.core.fixture.h2.checker;
-
-import 
org.apache.shardingsphere.data.pipeline.core.checker.DialectDataSourceChecker;
-
-import javax.sql.DataSource;
-
-/**
- * Data source checker for H2.
- */
-public final class H2DataSourceChecker implements DialectDataSourceChecker {
-    
-    @Override
-    public void checkPrivilege(final DataSource dataSource) {
-    }
-    
-    @Override
-    public void checkVariable(final DataSource dataSource) {
-    }
-    
-    @Override
-    public String getDatabaseType() {
-        return "H2";
-    }
-}
diff --git 
a/test/it/pipeline/src/test/resources/META-INF/services/org.apache.shardingsphere.data.pipeline.core.checker.DialectDataSourceChecker
 
b/test/it/pipeline/src/test/resources/META-INF/services/org.apache.shardingsphere.data.pipeline.core.checker.DialectDataSourceChecker
deleted file mode 100644
index 373a49fdbf4..00000000000
--- 
a/test/it/pipeline/src/test/resources/META-INF/services/org.apache.shardingsphere.data.pipeline.core.checker.DialectDataSourceChecker
+++ /dev/null
@@ -1,18 +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.
-#
-
-org.apache.shardingsphere.test.it.data.pipeline.core.fixture.h2.checker.H2DataSourceChecker


Reply via email to