You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by du...@apache.org on 2022/11/25 10:54:26 UTC
[shardingsphere] branch master updated: Refactor SQLCasesLoader and add SQLCases (#22410)
This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang 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 76fb33b4d67 Refactor SQLCasesLoader and add SQLCases (#22410)
76fb33b4d67 is described below
commit 76fb33b4d67320265eadf674e7f95779e0972347
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Fri Nov 25 18:54:14 2022 +0800
Refactor SQLCasesLoader and add SQLCases (#22410)
* Refactor SQLCasesLoader
* Refactor SQLCasesLoader and add SQLCases
---
.../InternalMySQLParserParameterizedIT.java | 2 +-
...ernalUnsupportedMySQLParserParameterizedIT.java | 2 +-
.../InternalOpenGaussParserParameterizedIT.java | 2 +-
...lUnsupportedOpenGaussParserParameterizedIT.java | 2 +-
.../InternalOracleParserParameterizedIT.java | 2 +-
...rnalUnsupportedOracleParserParameterizedIT.java | 2 +-
.../InternalPostgreSQLParserParameterizedIT.java | 2 +-
...UnsupportedPostgreSQLParserParameterizedIT.java | 2 +-
.../sql92/InternalSQL92ParserParameterizedIT.java | 2 +-
...ernalUnsupportedSQL92ParserParameterizedIT.java | 2 +-
.../InternalSQLServerParserParameterizedIT.java | 2 +-
...lUnsupportedSQLServerParserParameterizedIT.java | 2 +-
.../SQLNodeConverterEngineParameterizedTest.java | 12 +-
.../internal/asserts/SQLCaseAssertContext.java | 10 +-
.../internal/asserts/segment/SQLSegmentAssert.java | 2 +-
.../segment/expression/ExpressionAssert.java | 2 +-
.../asserts/segment/limit/LimitClauseAssert.java | 2 +-
.../segment/parameter/ParameterMarkerAssert.java | 2 +-
.../segment/projection/ProjectionAssert.java | 2 +-
.../cases/sql/{domain => }/SQLCaseType.java | 2 +-
.../sql/SQLCases.java} | 66 ++--------
.../domain/{SQLCases.java => RootSQLCases.java} | 2 +-
.../cases/sql/registry/SQLCasesRegistry.java | 7 +-
.../sql/registry/UnsupportedSQLCasesRegistry.java | 7 +-
.../engine/InternalSQLParserParameterizedIT.java | 16 +--
...nternalUnsupportedSQLParserParameterizedIT.java | 10 +-
.../sql/parser/internal/loader/SQLCasesLoader.java | 136 ++-------------------
.../InternalDistSQLParserParameterizedIT.java | 2 +-
28 files changed, 73 insertions(+), 231 deletions(-)
diff --git a/sql-parser/dialect/mysql/src/test/java/org/apache/shardingsphere/sql/parser/mysql/internal/InternalMySQLParserParameterizedIT.java b/sql-parser/dialect/mysql/src/test/java/org/apache/shardingsphere/sql/parser/mysql/internal/InternalMySQLParserParameterizedIT.java
index 04a5170632a..d294fcaa6f6 100644
--- a/sql-parser/dialect/mysql/src/test/java/org/apache/shardingsphere/sql/parser/mysql/internal/InternalMySQLParserParameterizedIT.java
+++ b/sql-parser/dialect/mysql/src/test/java/org/apache/shardingsphere/sql/parser/mysql/internal/InternalMySQLParserParameterizedIT.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.sql.parser.mysql.internal;
import org.apache.shardingsphere.test.runner.ShardingSphereParallelTestParameterized;
import org.apache.shardingsphere.test.sql.parser.internal.engine.InternalSQLParserParameterizedIT;
-import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.domain.SQLCaseType;
+import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.SQLCaseType;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized.Parameters;
diff --git a/sql-parser/dialect/mysql/src/test/java/org/apache/shardingsphere/sql/parser/mysql/internal/InternalUnsupportedMySQLParserParameterizedIT.java b/sql-parser/dialect/mysql/src/test/java/org/apache/shardingsphere/sql/parser/mysql/internal/InternalUnsupportedMySQLParserParameterizedIT.java
index d6b2fa20990..bc9f7f1ff50 100644
--- a/sql-parser/dialect/mysql/src/test/java/org/apache/shardingsphere/sql/parser/mysql/internal/InternalUnsupportedMySQLParserParameterizedIT.java
+++ b/sql-parser/dialect/mysql/src/test/java/org/apache/shardingsphere/sql/parser/mysql/internal/InternalUnsupportedMySQLParserParameterizedIT.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.sql.parser.mysql.internal;
import org.apache.shardingsphere.test.runner.ShardingSphereParallelTestParameterized;
import org.apache.shardingsphere.test.sql.parser.internal.engine.InternalUnsupportedSQLParserParameterizedIT;
-import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.domain.SQLCaseType;
+import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.SQLCaseType;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized.Parameters;
diff --git a/sql-parser/dialect/opengauss/src/test/java/org/apache/shardingsphere/sql/parser/opengauss/InternalOpenGaussParserParameterizedIT.java b/sql-parser/dialect/opengauss/src/test/java/org/apache/shardingsphere/sql/parser/opengauss/InternalOpenGaussParserParameterizedIT.java
index 21e297d63bc..5b025cc5949 100644
--- a/sql-parser/dialect/opengauss/src/test/java/org/apache/shardingsphere/sql/parser/opengauss/InternalOpenGaussParserParameterizedIT.java
+++ b/sql-parser/dialect/opengauss/src/test/java/org/apache/shardingsphere/sql/parser/opengauss/InternalOpenGaussParserParameterizedIT.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.sql.parser.opengauss;
import org.apache.shardingsphere.test.runner.ShardingSphereParallelTestParameterized;
import org.apache.shardingsphere.test.sql.parser.internal.engine.InternalSQLParserParameterizedIT;
-import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.domain.SQLCaseType;
+import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.SQLCaseType;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized.Parameters;
diff --git a/sql-parser/dialect/opengauss/src/test/java/org/apache/shardingsphere/sql/parser/opengauss/InternalUnsupportedOpenGaussParserParameterizedIT.java b/sql-parser/dialect/opengauss/src/test/java/org/apache/shardingsphere/sql/parser/opengauss/InternalUnsupportedOpenGaussParserParameterizedIT.java
index cd23f5a3c96..c05bf746fcd 100644
--- a/sql-parser/dialect/opengauss/src/test/java/org/apache/shardingsphere/sql/parser/opengauss/InternalUnsupportedOpenGaussParserParameterizedIT.java
+++ b/sql-parser/dialect/opengauss/src/test/java/org/apache/shardingsphere/sql/parser/opengauss/InternalUnsupportedOpenGaussParserParameterizedIT.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.sql.parser.opengauss;
import org.apache.shardingsphere.test.runner.ShardingSphereParallelTestParameterized;
import org.apache.shardingsphere.test.sql.parser.internal.engine.InternalUnsupportedSQLParserParameterizedIT;
-import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.domain.SQLCaseType;
+import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.SQLCaseType;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized.Parameters;
diff --git a/sql-parser/dialect/oracle/src/test/java/org/apache/shardingsphere/sql/parser/oracle/InternalOracleParserParameterizedIT.java b/sql-parser/dialect/oracle/src/test/java/org/apache/shardingsphere/sql/parser/oracle/InternalOracleParserParameterizedIT.java
index 942c73a09ea..0b15d345682 100644
--- a/sql-parser/dialect/oracle/src/test/java/org/apache/shardingsphere/sql/parser/oracle/InternalOracleParserParameterizedIT.java
+++ b/sql-parser/dialect/oracle/src/test/java/org/apache/shardingsphere/sql/parser/oracle/InternalOracleParserParameterizedIT.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.sql.parser.oracle;
import org.apache.shardingsphere.test.runner.ShardingSphereParallelTestParameterized;
import org.apache.shardingsphere.test.sql.parser.internal.engine.InternalSQLParserParameterizedIT;
-import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.domain.SQLCaseType;
+import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.SQLCaseType;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized.Parameters;
diff --git a/sql-parser/dialect/oracle/src/test/java/org/apache/shardingsphere/sql/parser/oracle/InternalUnsupportedOracleParserParameterizedIT.java b/sql-parser/dialect/oracle/src/test/java/org/apache/shardingsphere/sql/parser/oracle/InternalUnsupportedOracleParserParameterizedIT.java
index d078f4ae845..5ff19f6dc13 100644
--- a/sql-parser/dialect/oracle/src/test/java/org/apache/shardingsphere/sql/parser/oracle/InternalUnsupportedOracleParserParameterizedIT.java
+++ b/sql-parser/dialect/oracle/src/test/java/org/apache/shardingsphere/sql/parser/oracle/InternalUnsupportedOracleParserParameterizedIT.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.sql.parser.oracle;
import org.apache.shardingsphere.test.runner.ShardingSphereParallelTestParameterized;
import org.apache.shardingsphere.test.sql.parser.internal.engine.InternalUnsupportedSQLParserParameterizedIT;
-import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.domain.SQLCaseType;
+import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.SQLCaseType;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized.Parameters;
diff --git a/sql-parser/dialect/postgresql/src/test/java/org/apache/shardingsphere/sql/parser/postgresql/internal/InternalPostgreSQLParserParameterizedIT.java b/sql-parser/dialect/postgresql/src/test/java/org/apache/shardingsphere/sql/parser/postgresql/internal/InternalPostgreSQLParserParameterizedIT.java
index da9a66489e8..b3dbe815966 100644
--- a/sql-parser/dialect/postgresql/src/test/java/org/apache/shardingsphere/sql/parser/postgresql/internal/InternalPostgreSQLParserParameterizedIT.java
+++ b/sql-parser/dialect/postgresql/src/test/java/org/apache/shardingsphere/sql/parser/postgresql/internal/InternalPostgreSQLParserParameterizedIT.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.sql.parser.postgresql.internal;
import org.apache.shardingsphere.test.runner.ShardingSphereParallelTestParameterized;
import org.apache.shardingsphere.test.sql.parser.internal.engine.InternalSQLParserParameterizedIT;
-import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.domain.SQLCaseType;
+import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.SQLCaseType;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized.Parameters;
diff --git a/sql-parser/dialect/postgresql/src/test/java/org/apache/shardingsphere/sql/parser/postgresql/internal/InternalUnsupportedPostgreSQLParserParameterizedIT.java b/sql-parser/dialect/postgresql/src/test/java/org/apache/shardingsphere/sql/parser/postgresql/internal/InternalUnsupportedPostgreSQLParserParameterizedIT.java
index 087877cb7d1..f038f52c407 100644
--- a/sql-parser/dialect/postgresql/src/test/java/org/apache/shardingsphere/sql/parser/postgresql/internal/InternalUnsupportedPostgreSQLParserParameterizedIT.java
+++ b/sql-parser/dialect/postgresql/src/test/java/org/apache/shardingsphere/sql/parser/postgresql/internal/InternalUnsupportedPostgreSQLParserParameterizedIT.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.sql.parser.postgresql.internal;
import org.apache.shardingsphere.test.runner.ShardingSphereParallelTestParameterized;
import org.apache.shardingsphere.test.sql.parser.internal.engine.InternalUnsupportedSQLParserParameterizedIT;
-import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.domain.SQLCaseType;
+import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.SQLCaseType;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized.Parameters;
diff --git a/sql-parser/dialect/sql92/src/test/java/org/apache/shardingsphere/sql/parser/sql92/InternalSQL92ParserParameterizedIT.java b/sql-parser/dialect/sql92/src/test/java/org/apache/shardingsphere/sql/parser/sql92/InternalSQL92ParserParameterizedIT.java
index fdfa6ca7e3c..111f559c7c5 100644
--- a/sql-parser/dialect/sql92/src/test/java/org/apache/shardingsphere/sql/parser/sql92/InternalSQL92ParserParameterizedIT.java
+++ b/sql-parser/dialect/sql92/src/test/java/org/apache/shardingsphere/sql/parser/sql92/InternalSQL92ParserParameterizedIT.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.sql.parser.sql92;
import org.apache.shardingsphere.test.runner.ShardingSphereParallelTestParameterized;
import org.apache.shardingsphere.test.sql.parser.internal.engine.InternalSQLParserParameterizedIT;
-import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.domain.SQLCaseType;
+import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.SQLCaseType;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized.Parameters;
diff --git a/sql-parser/dialect/sql92/src/test/java/org/apache/shardingsphere/sql/parser/sql92/InternalUnsupportedSQL92ParserParameterizedIT.java b/sql-parser/dialect/sql92/src/test/java/org/apache/shardingsphere/sql/parser/sql92/InternalUnsupportedSQL92ParserParameterizedIT.java
index 7a9a46ab362..bf0ca735a1e 100644
--- a/sql-parser/dialect/sql92/src/test/java/org/apache/shardingsphere/sql/parser/sql92/InternalUnsupportedSQL92ParserParameterizedIT.java
+++ b/sql-parser/dialect/sql92/src/test/java/org/apache/shardingsphere/sql/parser/sql92/InternalUnsupportedSQL92ParserParameterizedIT.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.sql.parser.sql92;
import org.apache.shardingsphere.test.runner.ShardingSphereParallelTestParameterized;
import org.apache.shardingsphere.test.sql.parser.internal.engine.InternalUnsupportedSQLParserParameterizedIT;
-import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.domain.SQLCaseType;
+import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.SQLCaseType;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized.Parameters;
diff --git a/sql-parser/dialect/sqlserver/src/test/java/org/apache/shardingsphere/sql/parser/sqlserver/InternalSQLServerParserParameterizedIT.java b/sql-parser/dialect/sqlserver/src/test/java/org/apache/shardingsphere/sql/parser/sqlserver/InternalSQLServerParserParameterizedIT.java
index d0bdef0bc4a..9bfcd4ce652 100644
--- a/sql-parser/dialect/sqlserver/src/test/java/org/apache/shardingsphere/sql/parser/sqlserver/InternalSQLServerParserParameterizedIT.java
+++ b/sql-parser/dialect/sqlserver/src/test/java/org/apache/shardingsphere/sql/parser/sqlserver/InternalSQLServerParserParameterizedIT.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.sql.parser.sqlserver;
import org.apache.shardingsphere.test.runner.ShardingSphereParallelTestParameterized;
import org.apache.shardingsphere.test.sql.parser.internal.engine.InternalSQLParserParameterizedIT;
-import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.domain.SQLCaseType;
+import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.SQLCaseType;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized.Parameters;
diff --git a/sql-parser/dialect/sqlserver/src/test/java/org/apache/shardingsphere/sql/parser/sqlserver/InternalUnsupportedSQLServerParserParameterizedIT.java b/sql-parser/dialect/sqlserver/src/test/java/org/apache/shardingsphere/sql/parser/sqlserver/InternalUnsupportedSQLServerParserParameterizedIT.java
index 2f7f7fb1b93..78de1f4cd57 100644
--- a/sql-parser/dialect/sqlserver/src/test/java/org/apache/shardingsphere/sql/parser/sqlserver/InternalUnsupportedSQLServerParserParameterizedIT.java
+++ b/sql-parser/dialect/sqlserver/src/test/java/org/apache/shardingsphere/sql/parser/sqlserver/InternalUnsupportedSQLServerParserParameterizedIT.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.sql.parser.sqlserver;
import org.apache.shardingsphere.test.runner.ShardingSphereParallelTestParameterized;
import org.apache.shardingsphere.test.sql.parser.internal.engine.InternalUnsupportedSQLParserParameterizedIT;
-import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.domain.SQLCaseType;
+import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.SQLCaseType;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized.Parameters;
diff --git a/test/optimize/src/test/java/org/apache/shardingsphere/infra/federation/converter/parameterized/engine/SQLNodeConverterEngineParameterizedTest.java b/test/optimize/src/test/java/org/apache/shardingsphere/infra/federation/converter/parameterized/engine/SQLNodeConverterEngineParameterizedTest.java
index bac5e95fb8a..b967f5e3444 100644
--- a/test/optimize/src/test/java/org/apache/shardingsphere/infra/federation/converter/parameterized/engine/SQLNodeConverterEngineParameterizedTest.java
+++ b/test/optimize/src/test/java/org/apache/shardingsphere/infra/federation/converter/parameterized/engine/SQLNodeConverterEngineParameterizedTest.java
@@ -37,11 +37,11 @@ import org.apache.shardingsphere.sql.parser.api.SQLVisitorEngine;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import org.apache.shardingsphere.sqlfederation.optimizer.context.parser.dialect.OptimizerSQLDialectBuilderFactory;
import org.apache.shardingsphere.sqlfederation.optimizer.converter.SQLNodeConverterEngine;
-import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.registry.SQLCasesRegistry;
-import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.domain.SQLCaseType;
import org.apache.shardingsphere.test.sql.parser.internal.cases.parser.registry.SQLParserTestCasesRegistry;
import org.apache.shardingsphere.test.sql.parser.internal.cases.parser.registry.SQLParserTestCasesRegistryFactory;
-import org.apache.shardingsphere.test.sql.parser.internal.loader.SQLCasesLoader;
+import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.SQLCaseType;
+import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.registry.SQLCasesRegistry;
+import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.SQLCases;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@@ -60,7 +60,7 @@ import static org.junit.Assert.assertTrue;
@RequiredArgsConstructor
public final class SQLNodeConverterEngineParameterizedTest {
- private static final SQLCasesLoader SQL_CASES_LOADER = SQLCasesRegistry.getInstance().getSqlCasesLoader();
+ private static final SQLCases SQL_CASES = SQLCasesRegistry.getInstance().getCases();
private static final SQLParserTestCasesRegistry SQL_PARSER_TEST_CASES_REGISTRY = SQLParserTestCasesRegistryFactory.getInstance().getRegistry();
@@ -156,7 +156,7 @@ public final class SQLNodeConverterEngineParameterizedTest {
private static Collection<Object[]> getTestParameters(final String... databaseTypes) {
Collection<Object[]> result = new LinkedList<>();
- for (Object[] each : SQL_CASES_LOADER.getTestParameters(Arrays.asList(databaseTypes))) {
+ for (Object[] each : SQL_CASES.getTestParameters(Arrays.asList(databaseTypes))) {
if (!isPlaceholderWithoutParameter(each) && isSupportedSQLCase(each)) {
result.add(each);
}
@@ -176,7 +176,7 @@ public final class SQLNodeConverterEngineParameterizedTest {
@Test
public void assertConvert() {
String databaseType = "H2".equals(this.databaseType) ? "MySQL" : this.databaseType;
- String sql = SQL_CASES_LOADER.getSQL(sqlCaseId, sqlCaseType, SQL_PARSER_TEST_CASES_REGISTRY.get(sqlCaseId).getParameters());
+ String sql = SQL_CASES.getSQL(sqlCaseId, sqlCaseType, SQL_PARSER_TEST_CASES_REGISTRY.get(sqlCaseId).getParameters());
SQLStatement sqlStatement = parseSQLStatement(databaseType, sql);
SqlNode actual = SQLNodeConverterEngine.convert(sqlStatement);
SqlNode expected = parseSqlNode(databaseType, sql);
diff --git a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/asserts/SQLCaseAssertContext.java b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/asserts/SQLCaseAssertContext.java
index f3997c64746..9d75c1f209e 100644
--- a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/asserts/SQLCaseAssertContext.java
+++ b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/asserts/SQLCaseAssertContext.java
@@ -21,8 +21,8 @@ import lombok.Getter;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.test.sql.parser.internal.cases.parser.registry.SQLParserTestCasesRegistry;
import org.apache.shardingsphere.test.sql.parser.internal.cases.parser.registry.SQLParserTestCasesRegistryFactory;
-import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.domain.SQLCaseType;
-import org.apache.shardingsphere.test.sql.parser.internal.loader.SQLCasesLoader;
+import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.SQLCaseType;
+import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.SQLCases;
import java.util.Collections;
@@ -34,7 +34,7 @@ public final class SQLCaseAssertContext {
private static final SQLParserTestCasesRegistry SQL_PARSER_TEST_CASES_REGISTRY = SQLParserTestCasesRegistryFactory.getInstance().getRegistry();
- private final SQLCasesLoader sqlCasesLoader;
+ private final SQLCases sqlCasesRegistry;
private final String sqlCaseId;
@@ -64,13 +64,13 @@ public final class SQLCaseAssertContext {
private void appendSQL(final StringBuilder builder) {
builder.append("SQL : ");
if (SQLCaseType.Placeholder == sqlCaseType) {
- builder.append(sqlCasesLoader.getSQL(sqlCaseId, sqlCaseType, Collections.emptyList()));
+ builder.append(sqlCasesRegistry.getSQL(sqlCaseId, sqlCaseType, Collections.emptyList()));
builder.append(System.lineSeparator());
builder.append("SQL Params : ");
builder.append(SQL_PARSER_TEST_CASES_REGISTRY.get(sqlCaseId).getParameters());
builder.append(System.lineSeparator());
} else {
- builder.append(sqlCasesLoader.getSQL(sqlCaseId, sqlCaseType, SQL_PARSER_TEST_CASES_REGISTRY.get(sqlCaseId).getParameters()));
+ builder.append(sqlCasesRegistry.getSQL(sqlCaseId, sqlCaseType, SQL_PARSER_TEST_CASES_REGISTRY.get(sqlCaseId).getParameters()));
}
}
diff --git a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/asserts/segment/SQLSegmentAssert.java b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/asserts/segment/SQLSegmentAssert.java
index 7815ad4662f..1e541aeddc6 100644
--- a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/asserts/segment/SQLSegmentAssert.java
+++ b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/asserts/segment/SQLSegmentAssert.java
@@ -22,7 +22,7 @@ import lombok.NoArgsConstructor;
import org.apache.shardingsphere.sql.parser.sql.common.segment.SQLSegment;
import org.apache.shardingsphere.test.sql.parser.internal.asserts.SQLCaseAssertContext;
import org.apache.shardingsphere.test.sql.parser.internal.cases.parser.domain.segment.ExpectedSQLSegment;
-import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.domain.SQLCaseType;
+import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.SQLCaseType;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
diff --git a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/asserts/segment/expression/ExpressionAssert.java b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/asserts/segment/expression/ExpressionAssert.java
index 3b636703a21..1730b327c66 100644
--- a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/asserts/segment/expression/ExpressionAssert.java
+++ b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/asserts/segment/expression/ExpressionAssert.java
@@ -46,7 +46,7 @@ import org.apache.shardingsphere.test.sql.parser.internal.asserts.segment.generi
import org.apache.shardingsphere.test.sql.parser.internal.asserts.segment.owner.OwnerAssert;
import org.apache.shardingsphere.test.sql.parser.internal.asserts.segment.projection.ProjectionAssert;
import org.apache.shardingsphere.test.sql.parser.internal.asserts.statement.dml.impl.SelectStatementAssert;
-import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.domain.SQLCaseType;
+import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.SQLCaseType;
import org.apache.shardingsphere.test.sql.parser.internal.cases.parser.domain.segment.impl.expr.ExpectedBetweenExpression;
import org.apache.shardingsphere.test.sql.parser.internal.cases.parser.domain.segment.impl.expr.ExpectedBinaryOperationExpression;
import org.apache.shardingsphere.test.sql.parser.internal.cases.parser.domain.segment.impl.expr.ExpectedCaseWhenExpression;
diff --git a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/asserts/segment/limit/LimitClauseAssert.java b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/asserts/segment/limit/LimitClauseAssert.java
index a92ca011334..400326427f0 100644
--- a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/asserts/segment/limit/LimitClauseAssert.java
+++ b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/asserts/segment/limit/LimitClauseAssert.java
@@ -25,7 +25,7 @@ import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.pagination.Pa
import org.apache.shardingsphere.test.sql.parser.internal.asserts.SQLCaseAssertContext;
import org.apache.shardingsphere.test.sql.parser.internal.asserts.segment.SQLSegmentAssert;
import org.apache.shardingsphere.test.sql.parser.internal.cases.parser.domain.segment.impl.limit.ExpectedPaginationValue;
-import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.domain.SQLCaseType;
+import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.SQLCaseType;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertNull;
diff --git a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/asserts/segment/parameter/ParameterMarkerAssert.java b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/asserts/segment/parameter/ParameterMarkerAssert.java
index ce56b602950..63978cd07b9 100644
--- a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/asserts/segment/parameter/ParameterMarkerAssert.java
+++ b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/asserts/segment/parameter/ParameterMarkerAssert.java
@@ -20,7 +20,7 @@ package org.apache.shardingsphere.test.sql.parser.internal.asserts.segment.param
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.apache.shardingsphere.test.sql.parser.internal.asserts.SQLCaseAssertContext;
-import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.domain.SQLCaseType;
+import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.SQLCaseType;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
diff --git a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/asserts/segment/projection/ProjectionAssert.java b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/asserts/segment/projection/ProjectionAssert.java
index 353fe60a4b7..c4ef6481c71 100644
--- a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/asserts/segment/projection/ProjectionAssert.java
+++ b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/asserts/segment/projection/ProjectionAssert.java
@@ -45,7 +45,7 @@ import org.apache.shardingsphere.test.sql.parser.internal.cases.parser.domain.se
import org.apache.shardingsphere.test.sql.parser.internal.cases.parser.domain.segment.impl.projection.impl.shorthand.ExpectedShorthandProjection;
import org.apache.shardingsphere.test.sql.parser.internal.cases.parser.domain.segment.impl.projection.impl.subquery.ExpectedSubqueryProjection;
import org.apache.shardingsphere.test.sql.parser.internal.cases.parser.domain.segment.impl.projection.impl.top.ExpectedTopProjection;
-import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.domain.SQLCaseType;
+import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.SQLCaseType;
import java.util.List;
diff --git a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/sql/domain/SQLCaseType.java b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/sql/SQLCaseType.java
similarity index 98%
rename from test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/sql/domain/SQLCaseType.java
rename to test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/sql/SQLCaseType.java
index 9e1c515867c..1ea5b5c2a21 100644
--- a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/sql/domain/SQLCaseType.java
+++ b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/sql/SQLCaseType.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.test.sql.parser.internal.cases.sql.domain;
+package org.apache.shardingsphere.test.sql.parser.internal.cases.sql;
/**
* SQL case type.
diff --git a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/loader/SQLCasesLoader.java b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/sql/SQLCases.java
similarity index 66%
copy from test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/loader/SQLCasesLoader.java
copy to test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/sql/SQLCases.java
index fb77f160fda..f6572863e27 100644
--- a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/loader/SQLCasesLoader.java
+++ b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/sql/SQLCases.java
@@ -15,79 +15,33 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.test.sql.parser.internal.loader;
+package org.apache.shardingsphere.test.sql.parser.internal.cases.sql;
import com.google.common.base.Preconditions;
import com.google.common.base.Splitter;
import com.google.common.base.Strings;
-import lombok.SneakyThrows;
+import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.sql.parser.sql.common.enums.ParameterMarkerType;
import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.domain.SQLCase;
-import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.domain.SQLCaseType;
-import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.domain.SQLCases;
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
import java.util.Arrays;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
-import java.util.TreeMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
- * SQL cases loader.
+ * SQL cases registry.
*/
-public final class SQLCasesLoader {
+@RequiredArgsConstructor
+public final class SQLCases {
private static final Pattern PARAMETER_MARKER = Pattern.compile("\\?|\\$[0-9]+");
private final Map<String, SQLCase> cases;
- public SQLCasesLoader(final String rootDirection) {
- cases = load(rootDirection);
- }
-
- @SneakyThrows({JAXBException.class, IOException.class})
- private Map<String, SQLCase> load(final String path) {
- File file = new File(SQLCasesLoader.class.getProtectionDomain().getCodeSource().getLocation().getPath());
- return file.isFile() ? loadFromJar(file, path) : loadFromTargetDirectory(path);
- }
-
- private Map<String, SQLCase> loadFromJar(final File file, final String path) throws JAXBException {
- Map<String, SQLCase> result = new TreeMap<>();
- for (String each : SQLCaseFileLoader.loadFileNamesFromJar(file, path)) {
- buildCaseMap(result, SQLCasesLoader.class.getClassLoader().getResourceAsStream(each));
- }
- return result;
- }
-
- private Map<String, SQLCase> loadFromTargetDirectory(final String path) throws JAXBException, FileNotFoundException {
- Map<String, SQLCase> result = new TreeMap<>();
- for (File each : SQLCaseFileLoader.loadFilesFromDirectory(path)) {
- buildCaseMap(result, new FileInputStream(each));
- }
- return result;
- }
-
- private void buildCaseMap(final Map<String, SQLCase> sqlCaseMap, final InputStream inputStream) throws JAXBException {
- SQLCases sqlCases = (SQLCases) JAXBContext.newInstance(SQLCases.class).createUnmarshaller().unmarshal(inputStream);
- for (SQLCase each : sqlCases.getSqlCases()) {
- if (null == each.getDatabaseTypes()) {
- each.setDatabaseTypes(sqlCases.getDatabaseTypes());
- }
- Preconditions.checkState(!sqlCaseMap.containsKey(each.getId()), "Find duplicated SQL Case ID: %s", each.getId());
- sqlCaseMap.put(each.getId(), each);
- }
- }
-
/**
* Get SQL.
*
@@ -108,9 +62,9 @@ public final class SQLCasesLoader {
}
}
- private String getSQLFromMap(final String id, final Map<String, SQLCase> sqlCaseMap) {
- Preconditions.checkState(sqlCaseMap.containsKey(id), "Can't find SQL of ID: %s", id);
- SQLCase statement = sqlCaseMap.get(id);
+ private String getSQLFromMap(final String caseId, final Map<String, SQLCase> sqlCaseMap) {
+ Preconditions.checkState(sqlCaseMap.containsKey(caseId), "Can't find SQL of ID: %s", caseId);
+ SQLCase statement = sqlCaseMap.get(caseId);
return statement.getValue();
}
@@ -166,14 +120,14 @@ public final class SQLCasesLoader {
return result;
}
- private static Collection<Object[]> getSQLTestParameters(final Collection<String> databaseTypes, final SQLCase sqlCase, final SQLCaseType sqlCaseType) {
+ private static Collection<Object[]> getSQLTestParameters(final Collection<String> databaseTypes, final SQLCase sqlCase, final SQLCaseType caseType) {
Collection<Object[]> result = new LinkedList<>();
for (String each : getDatabaseTypes(sqlCase.getDatabaseTypes())) {
if (databaseTypes.contains(each)) {
Object[] params = new Object[3];
params[0] = sqlCase.getId();
params[1] = each;
- params[2] = sqlCaseType;
+ params[2] = caseType;
result.add(params);
}
}
diff --git a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/sql/domain/SQLCases.java b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/sql/domain/RootSQLCases.java
similarity index 97%
rename from test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/sql/domain/SQLCases.java
rename to test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/sql/domain/RootSQLCases.java
index 843118a7e34..00cbe9b2af7 100644
--- a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/sql/domain/SQLCases.java
+++ b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/sql/domain/RootSQLCases.java
@@ -30,7 +30,7 @@ import java.util.List;
*/
@XmlRootElement(name = "sql-cases")
@Getter
-public final class SQLCases {
+public final class RootSQLCases {
@XmlAttribute(name = "db-types")
private String databaseTypes;
diff --git a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/sql/registry/SQLCasesRegistry.java b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/sql/registry/SQLCasesRegistry.java
index 86a1ab53f46..14e1cc0be71 100644
--- a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/sql/registry/SQLCasesRegistry.java
+++ b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/sql/registry/SQLCasesRegistry.java
@@ -18,6 +18,7 @@
package org.apache.shardingsphere.test.sql.parser.internal.cases.sql.registry;
import lombok.Getter;
+import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.SQLCases;
import org.apache.shardingsphere.test.sql.parser.internal.loader.SQLCasesLoader;
/**
@@ -28,12 +29,10 @@ public final class SQLCasesRegistry {
private static final SQLCasesRegistry INSTANCE = new SQLCasesRegistry();
- private static final String CASE_PATH = "sql/supported/";
-
- private final SQLCasesLoader sqlCasesLoader;
+ private final SQLCases cases;
private SQLCasesRegistry() {
- sqlCasesLoader = new SQLCasesLoader(CASE_PATH);
+ cases = new SQLCases(new SQLCasesLoader().load("sql/supported/"));
}
/**
diff --git a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/sql/registry/UnsupportedSQLCasesRegistry.java b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/sql/registry/UnsupportedSQLCasesRegistry.java
index 341af604483..26dea174ce8 100644
--- a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/sql/registry/UnsupportedSQLCasesRegistry.java
+++ b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/sql/registry/UnsupportedSQLCasesRegistry.java
@@ -18,20 +18,21 @@
package org.apache.shardingsphere.test.sql.parser.internal.cases.sql.registry;
import lombok.Getter;
+import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.SQLCases;
import org.apache.shardingsphere.test.sql.parser.internal.loader.SQLCasesLoader;
/**
* Unsupported SQL cases registry.
*/
+@Getter
public final class UnsupportedSQLCasesRegistry {
private static final UnsupportedSQLCasesRegistry INSTANCE = new UnsupportedSQLCasesRegistry();
- @Getter
- private final SQLCasesLoader sqlCasesLoader;
+ private final SQLCases cases;
private UnsupportedSQLCasesRegistry() {
- sqlCasesLoader = new SQLCasesLoader("sql/unsupported/");
+ cases = new SQLCases(new SQLCasesLoader().load("sql/unsupported/"));
}
/**
diff --git a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/engine/InternalSQLParserParameterizedIT.java b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/engine/InternalSQLParserParameterizedIT.java
index 98e4d8dfb2c..58bf70e0217 100644
--- a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/engine/InternalSQLParserParameterizedIT.java
+++ b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/engine/InternalSQLParserParameterizedIT.java
@@ -25,12 +25,12 @@ import org.apache.shardingsphere.sql.parser.api.SQLVisitorEngine;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import org.apache.shardingsphere.test.sql.parser.internal.asserts.SQLCaseAssertContext;
import org.apache.shardingsphere.test.sql.parser.internal.asserts.statement.SQLStatementAssert;
-import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.registry.SQLCasesRegistry;
-import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.domain.SQLCaseType;
+import org.apache.shardingsphere.test.sql.parser.internal.cases.parser.domain.statement.SQLParserTestCase;
import org.apache.shardingsphere.test.sql.parser.internal.cases.parser.registry.SQLParserTestCasesRegistry;
import org.apache.shardingsphere.test.sql.parser.internal.cases.parser.registry.SQLParserTestCasesRegistryFactory;
-import org.apache.shardingsphere.test.sql.parser.internal.cases.parser.domain.statement.SQLParserTestCase;
-import org.apache.shardingsphere.test.sql.parser.internal.loader.SQLCasesLoader;
+import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.SQLCaseType;
+import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.registry.SQLCasesRegistry;
+import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.SQLCases;
import org.junit.Test;
import java.util.Arrays;
@@ -41,7 +41,7 @@ import java.util.Properties;
@RequiredArgsConstructor
public abstract class InternalSQLParserParameterizedIT {
- private static final SQLCasesLoader SQL_CASES_LOADER = SQLCasesRegistry.getInstance().getSqlCasesLoader();
+ private static final SQLCases SQL_CASES = SQLCasesRegistry.getInstance().getCases();
private static final SQLParserTestCasesRegistry SQL_PARSER_TEST_CASES_REGISTRY = SQLParserTestCasesRegistryFactory.getInstance().getRegistry();
@@ -53,7 +53,7 @@ public abstract class InternalSQLParserParameterizedIT {
protected static Collection<Object[]> getTestParameters(final String... databaseTypes) {
Collection<Object[]> result = new LinkedList<>();
- for (Object[] each : SQL_CASES_LOADER.getTestParameters(Arrays.asList(databaseTypes))) {
+ for (Object[] each : SQL_CASES.getTestParameters(Arrays.asList(databaseTypes))) {
if (!isPlaceholderWithoutParameter(each)) {
result.add(each);
}
@@ -68,9 +68,9 @@ public abstract class InternalSQLParserParameterizedIT {
@Test
public final void assertSupportedSQL() {
SQLParserTestCase expected = SQL_PARSER_TEST_CASES_REGISTRY.get(sqlCaseId);
- String sql = SQL_CASES_LOADER.getSQL(sqlCaseId, sqlCaseType, SQL_PARSER_TEST_CASES_REGISTRY.get(sqlCaseId).getParameters());
+ String sql = SQL_CASES.getSQL(sqlCaseId, sqlCaseType, SQL_PARSER_TEST_CASES_REGISTRY.get(sqlCaseId).getParameters());
SQLStatement actual = parseSQLStatement("H2".equals(databaseType) ? "MySQL" : databaseType, sql);
- SQLStatementAssert.assertIs(new SQLCaseAssertContext(SQL_CASES_LOADER, sqlCaseId, sqlCaseType), actual, expected);
+ SQLStatementAssert.assertIs(new SQLCaseAssertContext(SQL_CASES, sqlCaseId, sqlCaseType), actual, expected);
}
private SQLStatement parseSQLStatement(final String databaseType, final String sql) {
diff --git a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/engine/InternalUnsupportedSQLParserParameterizedIT.java b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/engine/InternalUnsupportedSQLParserParameterizedIT.java
index 65e9c8d60b0..0e4aa30bc87 100644
--- a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/engine/InternalUnsupportedSQLParserParameterizedIT.java
+++ b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/engine/InternalUnsupportedSQLParserParameterizedIT.java
@@ -23,9 +23,9 @@ import org.apache.shardingsphere.sql.parser.api.SQLParserEngine;
import org.apache.shardingsphere.sql.parser.api.SQLVisitorEngine;
import org.apache.shardingsphere.sql.parser.core.ParseASTNode;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
-import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.domain.SQLCaseType;
+import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.SQLCaseType;
import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.registry.UnsupportedSQLCasesRegistry;
-import org.apache.shardingsphere.test.sql.parser.internal.loader.SQLCasesLoader;
+import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.SQLCases;
import org.junit.Test;
import java.util.Collection;
@@ -35,7 +35,7 @@ import java.util.Properties;
@RequiredArgsConstructor
public abstract class InternalUnsupportedSQLParserParameterizedIT {
- private static final SQLCasesLoader SQL_CASES_LOADER = UnsupportedSQLCasesRegistry.getInstance().getSqlCasesLoader();
+ private static final SQLCases SQL_CASES = UnsupportedSQLCasesRegistry.getInstance().getCases();
private final String sqlCaseId;
@@ -44,13 +44,13 @@ public abstract class InternalUnsupportedSQLParserParameterizedIT {
private final SQLCaseType sqlCaseType;
protected static Collection<Object[]> getTestParameters(final String databaseType) {
- return SQL_CASES_LOADER.getTestParameters(Collections.singleton(databaseType));
+ return SQL_CASES.getTestParameters(Collections.singleton(databaseType));
}
@Test(expected = Exception.class)
// TODO should expect SQLParsingException only
public final void assertUnsupportedSQL() {
- String sql = SQL_CASES_LOADER.getSQL(sqlCaseId, sqlCaseType, Collections.emptyList());
+ String sql = SQL_CASES.getSQL(sqlCaseId, sqlCaseType, Collections.emptyList());
String databaseType = "H2".equals(this.databaseType) ? "MySQL" : this.databaseType;
CacheOption cacheOption = new CacheOption(128, 1024L);
ParseASTNode parseContext = new SQLParserEngine(databaseType, cacheOption).parse(sql, false);
diff --git a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/loader/SQLCasesLoader.java b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/loader/SQLCasesLoader.java
index fb77f160fda..4505f134e5c 100644
--- a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/loader/SQLCasesLoader.java
+++ b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/loader/SQLCasesLoader.java
@@ -18,13 +18,9 @@
package org.apache.shardingsphere.test.sql.parser.internal.loader;
import com.google.common.base.Preconditions;
-import com.google.common.base.Splitter;
-import com.google.common.base.Strings;
import lombok.SneakyThrows;
-import org.apache.shardingsphere.sql.parser.sql.common.enums.ParameterMarkerType;
import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.domain.SQLCase;
-import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.domain.SQLCaseType;
-import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.domain.SQLCases;
+import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.domain.RootSQLCases;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
@@ -33,32 +29,24 @@ import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.LinkedList;
-import java.util.List;
import java.util.Map;
import java.util.TreeMap;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
/**
* SQL cases loader.
*/
public final class SQLCasesLoader {
- private static final Pattern PARAMETER_MARKER = Pattern.compile("\\?|\\$[0-9]+");
-
- private final Map<String, SQLCase> cases;
-
- public SQLCasesLoader(final String rootDirection) {
- cases = load(rootDirection);
- }
-
+ /**
+ * Load SQL cases.
+ *
+ * @param rootDirection SQL cases root direction
+ * @return loaded SQL cases
+ */
@SneakyThrows({JAXBException.class, IOException.class})
- private Map<String, SQLCase> load(final String path) {
+ public Map<String, SQLCase> load(final String rootDirection) {
File file = new File(SQLCasesLoader.class.getProtectionDomain().getCodeSource().getLocation().getPath());
- return file.isFile() ? loadFromJar(file, path) : loadFromTargetDirectory(path);
+ return file.isFile() ? loadFromJar(file, rootDirection) : loadFromTargetDirectory(rootDirection);
}
private Map<String, SQLCase> loadFromJar(final File file, final String path) throws JAXBException {
@@ -78,113 +66,13 @@ public final class SQLCasesLoader {
}
private void buildCaseMap(final Map<String, SQLCase> sqlCaseMap, final InputStream inputStream) throws JAXBException {
- SQLCases sqlCases = (SQLCases) JAXBContext.newInstance(SQLCases.class).createUnmarshaller().unmarshal(inputStream);
- for (SQLCase each : sqlCases.getSqlCases()) {
+ RootSQLCases root = (RootSQLCases) JAXBContext.newInstance(RootSQLCases.class).createUnmarshaller().unmarshal(inputStream);
+ for (SQLCase each : root.getSqlCases()) {
if (null == each.getDatabaseTypes()) {
- each.setDatabaseTypes(sqlCases.getDatabaseTypes());
+ each.setDatabaseTypes(root.getDatabaseTypes());
}
Preconditions.checkState(!sqlCaseMap.containsKey(each.getId()), "Find duplicated SQL Case ID: %s", each.getId());
sqlCaseMap.put(each.getId(), each);
}
}
-
- /**
- * Get SQL.
- *
- * @param caseId SQL case ID
- * @param caseType SQL case type
- * @param params parameters
- * @return got SQL
- */
- public String getSQL(final String caseId, final SQLCaseType caseType, final List<?> params) {
- String sql = getSQLFromMap(caseId, cases);
- switch (caseType) {
- case Placeholder:
- return getPlaceholderSQL(sql);
- case Literal:
- return getLiteralSQL(sql, params);
- default:
- throw new UnsupportedOperationException(caseType.name());
- }
- }
-
- private String getSQLFromMap(final String id, final Map<String, SQLCase> sqlCaseMap) {
- Preconditions.checkState(sqlCaseMap.containsKey(id), "Can't find SQL of ID: %s", id);
- SQLCase statement = sqlCaseMap.get(id);
- return statement.getValue();
- }
-
- private String getPlaceholderSQL(final String sql) {
- return sql;
- }
-
- private String getLiteralSQL(final String sql, final List<?> params) {
- return params.isEmpty() ? sql : replace(sql, params);
- }
-
- private static String replace(final String sql, final List<?> params) {
- Matcher matcher = PARAMETER_MARKER.matcher(sql);
- int found = 0;
- StringBuffer buffer = new StringBuffer();
- while (matcher.find()) {
- String group = matcher.group();
- if (ParameterMarkerType.QUESTION.getMarker().equals(group)) {
- appendReplacement(++found, params, matcher, buffer);
- } else {
- int dollarMarker = Integer.parseInt(group.replace(ParameterMarkerType.DOLLAR.getMarker(), ""));
- appendReplacement(dollarMarker, params, matcher, buffer);
- }
- }
- matcher.appendTail(buffer);
- return buffer.toString();
- }
-
- private static void appendReplacement(final int markerIndex, final List<?> params, final Matcher matcher, final StringBuffer buffer) {
- Preconditions.checkArgument(markerIndex <= params.size(), "Missing replacement for `%s` at index `%s`.", PARAMETER_MARKER.pattern(), markerIndex);
- matcher.appendReplacement(buffer, Matcher.quoteReplacement(params.get(markerIndex - 1).toString()));
- }
-
- /**
- * Get test parameters.
- *
- * @param databaseTypes database types
- * @return test parameters
- */
- public Collection<Object[]> getTestParameters(final Collection<String> databaseTypes) {
- Collection<Object[]> result = new LinkedList<>();
- for (SQLCase each : cases.values()) {
- result.addAll(getSQLTestParameters(databaseTypes, each));
- }
- return result;
- }
-
- private Collection<Object[]> getSQLTestParameters(final Collection<String> databaseTypes, final SQLCase sqlCase) {
- Collection<Object[]> result = new LinkedList<>();
- for (SQLCaseType each : SQLCaseType.values()) {
- result.addAll(getSQLTestParameters(databaseTypes, sqlCase, each));
- }
- return result;
- }
-
- private static Collection<Object[]> getSQLTestParameters(final Collection<String> databaseTypes, final SQLCase sqlCase, final SQLCaseType sqlCaseType) {
- Collection<Object[]> result = new LinkedList<>();
- for (String each : getDatabaseTypes(sqlCase.getDatabaseTypes())) {
- if (databaseTypes.contains(each)) {
- Object[] params = new Object[3];
- params[0] = sqlCase.getId();
- params[1] = each;
- params[2] = sqlCaseType;
- result.add(params);
- }
- }
- return result;
- }
-
- private static Collection<String> getDatabaseTypes(final String databaseTypes) {
- return Strings.isNullOrEmpty(databaseTypes) ? getAllDatabaseTypes() : Splitter.on(',').trimResults().splitToList(databaseTypes);
- }
-
- private static Collection<String> getAllDatabaseTypes() {
- return Arrays.asList("H2", "MySQL", "PostgreSQL", "Oracle", "SQLServer", "SQL92", "openGauss");
- }
}
diff --git a/test/parser/src/test/java/org/apache/shardingsphere/test/sql/parser/internal/InternalDistSQLParserParameterizedIT.java b/test/parser/src/test/java/org/apache/shardingsphere/test/sql/parser/internal/InternalDistSQLParserParameterizedIT.java
index 5074574bfc4..6d7f4fa1234 100644
--- a/test/parser/src/test/java/org/apache/shardingsphere/test/sql/parser/internal/InternalDistSQLParserParameterizedIT.java
+++ b/test/parser/src/test/java/org/apache/shardingsphere/test/sql/parser/internal/InternalDistSQLParserParameterizedIT.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.test.sql.parser.internal;
import org.apache.shardingsphere.test.runner.ShardingSphereParallelTestParameterized;
import org.apache.shardingsphere.test.sql.parser.internal.engine.InternalSQLParserParameterizedIT;
-import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.domain.SQLCaseType;
+import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.SQLCaseType;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized.Parameters;