This is an automated email from the ASF dual-hosted git repository.
menghaoran 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 07c4feb Refactor SQL checker (#9815)
07c4feb is described below
commit 07c4feba34f10736cf9a9cb8ba50638a6079814f
Author: Juan Pan(Trista) <[email protected]>
AuthorDate: Thu Mar 25 16:50:47 2021 +0800
Refactor SQL checker (#9815)
---
.../infra/{audit => check}/SQLCheckEngine.java | 6 +++---
.../infra/{audit => check}/SQLCheckException.java | 8 +++----
.../infra/{audit => check}/SQLCheckResult.java | 2 +-
.../infra/{audit => check}/SQLChecker.java | 4 ++--
.../audit/AuditSQLChecker.java} | 25 +++++++++++++++-------
.../auth/AuthenticationSQLChecker.java} | 25 ++++++++++++++--------
...rg.apache.shardingsphere.infra.check.SQLChecker | 16 ++++++++++++++
.../statement/ShardingSpherePreparedStatement.java | 2 +-
.../core/statement/ShardingSphereStatement.java | 2 +-
.../text/TextProtocolBackendHandlerFactory.java | 2 +-
.../execute/MySQLComStmtExecuteExecutor.java | 2 +-
11 files changed, 63 insertions(+), 31 deletions(-)
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/audit/SQLCheckEngine.java
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/check/SQLCheckEngine.java
similarity index 93%
rename from
shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/audit/SQLCheckEngine.java
rename to
shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/check/SQLCheckEngine.java
index 6c86b4a..16de5a1 100644
---
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/audit/SQLCheckEngine.java
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/check/SQLCheckEngine.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.audit;
+package org.apache.shardingsphere.infra.check;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
@@ -34,7 +34,7 @@ import java.util.List;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class SQLCheckEngine {
- private static final Collection<SQLChecker> AUDITORS =
OrderedSPIRegistry.getRegisteredServices(SQLChecker.class);
+ private static final Collection<SQLChecker> CHECKERS =
OrderedSPIRegistry.getRegisteredServices(SQLChecker.class);
static {
ShardingSphereServiceLoader.register(SQLChecker.class);
@@ -49,7 +49,7 @@ public final class SQLCheckEngine {
* @param auth auth
*/
public static void check(final SQLStatement sqlStatement, final
List<Object> parameters, final ShardingSphereMetaData metaData, final
Authentication auth) {
- for (SQLChecker each : AUDITORS) {
+ for (SQLChecker each : CHECKERS) {
SQLCheckResult auditResult = each.check(sqlStatement, parameters,
metaData, auth);
if (!auditResult.isPassed()) {
throw new SQLCheckException(each.getSQLCheckType(),
auditResult.getErrorMessage());
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/audit/SQLCheckException.java
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/check/SQLCheckException.java
similarity index 84%
rename from
shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/audit/SQLCheckException.java
rename to
shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/check/SQLCheckException.java
index ab4a663..1173b35 100644
---
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/audit/SQLCheckException.java
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/check/SQLCheckException.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.audit;
+package org.apache.shardingsphere.infra.check;
import lombok.Getter;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
@@ -28,10 +28,10 @@ public final class SQLCheckException extends
ShardingSphereException {
private static final long serialVersionUID = 4183020614721058122L;
- private final SQLCheckType sqlCheckType;
+ private final String sqlCheckType;
- public SQLCheckException(final SQLCheckType state, final String
errorMessage) {
- super(String.format("SQL %s checking failed. Error message: %s.",
state.name(), errorMessage));
+ public SQLCheckException(final String state, final String errorMessage) {
+ super(String.format("SQL %s checking failed. Error message: %s.",
state, errorMessage));
this.sqlCheckType = state;
}
}
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/audit/SQLCheckResult.java
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/check/SQLCheckResult.java
similarity index 95%
copy from
shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/audit/SQLCheckResult.java
copy to
shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/check/SQLCheckResult.java
index d832afb..d336d25 100644
---
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/audit/SQLCheckResult.java
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/check/SQLCheckResult.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.audit;
+package org.apache.shardingsphere.infra.check;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/audit/SQLChecker.java
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/check/SQLChecker.java
similarity index 95%
rename from
shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/audit/SQLChecker.java
rename to
shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/check/SQLChecker.java
index 83d025e..b7f4ad6 100644
---
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/audit/SQLChecker.java
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/check/SQLChecker.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.audit;
+package org.apache.shardingsphere.infra.check;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.metadata.auth.Authentication;
@@ -35,7 +35,7 @@ public interface SQLChecker extends OrderedSPI {
*
* @return sql check type
*/
- SQLCheckType getSQLCheckType();
+ String getSQLCheckType();
/**
* Check SQL.
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/audit/SQLCheckType.java
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/check/audit/AuditSQLChecker.java
similarity index 63%
rename from
shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/audit/SQLCheckType.java
rename to
shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/check/audit/AuditSQLChecker.java
index 2ff3b10..bb7a561 100644
---
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/audit/SQLCheckType.java
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/check/audit/AuditSQLChecker.java
@@ -15,17 +15,26 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.audit;
+package org.apache.shardingsphere.infra.check.audit;
-import lombok.RequiredArgsConstructor;
+import org.apache.shardingsphere.infra.check.SQLChecker;
/**
- * SQL check type.
+ * Authentication SQL checker.
*/
-@RequiredArgsConstructor
-public enum SQLCheckType {
-
- AUTHENTICATION("authentication"), SQL_AUDIT("audit");
+public abstract class AuditSQLChecker implements SQLChecker {
+
+ private static final int ORDER = 1;
+
+ private static final String CHECK_TYPE = "AUDIT";
+
+ @Override
+ public final int getOrder() {
+ return ORDER;
+ }
- private final String name;
+ @Override
+ public final String getSQLCheckType() {
+ return CHECK_TYPE;
+ }
}
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/audit/SQLCheckResult.java
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/check/auth/AuthenticationSQLChecker.java
similarity index 62%
rename from
shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/audit/SQLCheckResult.java
rename to
shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/check/auth/AuthenticationSQLChecker.java
index d832afb..950d64f 100644
---
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/audit/SQLCheckResult.java
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/check/auth/AuthenticationSQLChecker.java
@@ -15,19 +15,26 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.audit;
+package org.apache.shardingsphere.infra.check.auth;
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
+import org.apache.shardingsphere.infra.check.SQLChecker;
/**
- * SQL check result.
+ * Authentication SQL checker.
*/
-@RequiredArgsConstructor
-@Getter
-public final class SQLCheckResult {
+public abstract class AuthenticationSQLChecker implements SQLChecker {
- private final boolean isPassed;
+ private static final int ORDER = 0;
- private final String errorMessage;
+ private static final String CHECK_TYPE = "AUTHENTICATION";
+
+ @Override
+ public final int getOrder() {
+ return ORDER;
+ }
+
+ @Override
+ public final String getSQLCheckType() {
+ return CHECK_TYPE;
+ }
}
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.check.SQLChecker
b/shardingsphere-infra/shardingsphere-infra-common/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.check.SQLChecker
new file mode 100644
index 0000000..b1312a0
--- /dev/null
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.check.SQLChecker
@@ -0,0 +1,16 @@
+#
+# 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.
+#
diff --git
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
index 8d8542d..3411b6e 100644
---
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
+++
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
@@ -31,7 +31,7 @@ import
org.apache.shardingsphere.driver.jdbc.core.constant.SQLExceptionConstant;
import
org.apache.shardingsphere.driver.jdbc.core.resultset.GeneratedKeysResultSet;
import
org.apache.shardingsphere.driver.jdbc.core.resultset.ShardingSphereResultSet;
import
org.apache.shardingsphere.driver.jdbc.core.statement.metadata.ShardingSphereParameterMetaData;
-import org.apache.shardingsphere.infra.audit.SQLCheckEngine;
+import org.apache.shardingsphere.infra.check.SQLCheckEngine;
import org.apache.shardingsphere.infra.binder.LogicSQL;
import org.apache.shardingsphere.infra.binder.SQLStatementContextFactory;
import
org.apache.shardingsphere.infra.binder.segment.insert.keygen.GeneratedKeyContext;
diff --git
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
index cdfe116..5569137 100644
---
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
+++
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
@@ -29,7 +29,7 @@ import
org.apache.shardingsphere.driver.jdbc.core.connection.ShardingSphereConne
import
org.apache.shardingsphere.driver.jdbc.core.constant.SQLExceptionConstant;
import
org.apache.shardingsphere.driver.jdbc.core.resultset.GeneratedKeysResultSet;
import
org.apache.shardingsphere.driver.jdbc.core.resultset.ShardingSphereResultSet;
-import org.apache.shardingsphere.infra.audit.SQLCheckEngine;
+import org.apache.shardingsphere.infra.check.SQLCheckEngine;
import org.apache.shardingsphere.infra.binder.LogicSQL;
import org.apache.shardingsphere.infra.binder.SQLStatementContextFactory;
import
org.apache.shardingsphere.infra.binder.segment.insert.keygen.GeneratedKeyContext;
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/TextProtocolBackendHandlerFactory.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/TextProtocolBackendHandlerFactory.java
index 3ad4b48..71b5ea5 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/TextProtocolBackendHandlerFactory.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/TextProtocolBackendHandlerFactory.java
@@ -20,7 +20,7 @@ package org.apache.shardingsphere.proxy.backend.text;
import com.google.common.base.Strings;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
-import org.apache.shardingsphere.infra.audit.SQLCheckEngine;
+import org.apache.shardingsphere.infra.check.SQLCheckEngine;
import org.apache.shardingsphere.infra.context.metadata.MetaDataContexts;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.parser.ShardingSphereSQLParserEngine;
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutor.java
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutor.java
index ef82d27..9a1bcb5 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutor.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutor.java
@@ -25,7 +25,7 @@ import
org.apache.shardingsphere.db.protocol.mysql.packet.MySQLPacket;
import
org.apache.shardingsphere.db.protocol.mysql.packet.command.query.binary.execute.MySQLBinaryResultSetRowPacket;
import
org.apache.shardingsphere.db.protocol.mysql.packet.command.query.binary.execute.MySQLComStmtExecutePacket;
import org.apache.shardingsphere.db.protocol.packet.DatabasePacket;
-import org.apache.shardingsphere.infra.audit.SQLCheckEngine;
+import org.apache.shardingsphere.infra.check.SQLCheckEngine;
import org.apache.shardingsphere.infra.context.metadata.MetaDataContexts;
import org.apache.shardingsphere.infra.database.type.DatabaseTypeRegistry;
import org.apache.shardingsphere.infra.parser.ShardingSphereSQLParserEngine;