From 58f2d5467e389558f7b9367e921c627888ea5b41 Mon Sep 17 00:00:00 2001 From: haocao Date: Thu, 10 Aug 2017 16:45:21 +0800 Subject: [PATCH] Refactor parser test case packages 16th. --- .../jaxb/helper/SQLStatementHelper.java | 33 ++++--- .../rdb/sharding/parsing/AllParsingTests.java | 5 +- .../sharding/parsing/ParameterTestUnit.java | 7 ++ .../sharding/parsing/SQLJudgeEngineTest.java | 37 ++++++++ .../parsing/SQLParsingEngineTest.java | 73 ++++++++++----- .../parsing/UnsupportedParseTest.java | 31 ------- .../UnsupportedSQLParsingEngineTest.java | 92 +++++++++++++++++++ .../parsing/parser/dialect/SQLParserTest.java | 69 -------------- .../src/test/resources/parser/select.xml | 5 + .../src/test/resources/sql/select.xml | 1 + .../test/resources/sql/unsupported/common.xml | 7 ++ 11 files changed, 224 insertions(+), 136 deletions(-) create mode 100644 sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/ParameterTestUnit.java create mode 100644 sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/SQLJudgeEngineTest.java delete mode 100644 sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/UnsupportedParseTest.java create mode 100644 sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/UnsupportedSQLParsingEngineTest.java delete mode 100644 sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/dialect/SQLParserTest.java create mode 100644 sharding-jdbc-core/src/test/resources/sql/unsupported/common.xml diff --git a/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/common/jaxb/helper/SQLStatementHelper.java b/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/common/jaxb/helper/SQLStatementHelper.java index 2ea114eadf..0249cc8b0d 100644 --- a/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/common/jaxb/helper/SQLStatementHelper.java +++ b/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/common/jaxb/helper/SQLStatementHelper.java @@ -10,6 +10,7 @@ import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import java.io.File; import java.net.URL; +import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; @@ -18,39 +19,47 @@ import java.util.Set; public class SQLStatementHelper { - private static Map statementMap = new HashMap<>(); + private static final Map statementMap; + + private static final Map unsuppportedStatementMap; static { - loadSqlStatements(); + statementMap = loadSqlStatements("sql"); + unsuppportedStatementMap = loadSqlStatements("sql/unsupported"); } - private static void loadSqlStatements() { - URL url = SQLAssertJAXBHelper.class.getClassLoader().getResource("sql"); + private static Map loadSqlStatements(final String directory) { + Map result = new HashMap<>(); + URL url = SQLAssertJAXBHelper.class.getClassLoader().getResource(directory); if (url == null) { - return; + return result; } File filePath = new File(url.getPath()); if (!filePath.exists()) { - return; + return result; } File[] files = filePath.listFiles(); if (null == files) { - return; + return result; } for (File each : files) { + if (each.isDirectory()) { + continue; + } try { SQLStatements statements = (SQLStatements) JAXBContext.newInstance(SQLStatements.class).createUnmarshaller().unmarshal(each); for (SQLStatement statement : statements.getSqls()) { - String id = statement.getId(); - if (statementMap.containsKey(id)) { - throw new RuntimeException("Existed sql assert id with:" + id); - } - statementMap.put(id, statement); + result.put(statement.getId(), statement); } } catch (final JAXBException ex) { throw new RuntimeException(ex); } } + return result; + } + + public static Collection getUnsupportedSqlStatements() { + return unsuppportedStatementMap.values(); } public static String getSql(final String sqlId) { diff --git a/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/AllParsingTests.java b/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/AllParsingTests.java index d04dbcc573..6ed93c6d71 100644 --- a/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/AllParsingTests.java +++ b/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/AllParsingTests.java @@ -19,7 +19,6 @@ package com.dangdang.ddframe.rdb.sharding.parsing; import com.dangdang.ddframe.rdb.sharding.parsing.lexer.AllLexerTests; import com.dangdang.ddframe.rdb.sharding.parsing.lexer.analyzer.TokenizerTest; -import com.dangdang.ddframe.rdb.sharding.parsing.parser.dialect.SQLParserTest; import com.dangdang.ddframe.rdb.sharding.parsing.parser.statement.AllStatementParserTests; import org.junit.runner.RunWith; import org.junit.runners.Suite; @@ -29,9 +28,9 @@ import org.junit.runners.Suite; TokenizerTest.class, AllLexerTests.class, AllStatementParserTests.class, - SQLParserTest.class, SQLParsingEngineTest.class, - UnsupportedParseTest.class + UnsupportedSQLParsingEngineTest.class, + SQLJudgeEngineTest.class }) public class AllParsingTests { } diff --git a/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/ParameterTestUnit.java b/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/ParameterTestUnit.java new file mode 100644 index 0000000000..7663563f90 --- /dev/null +++ b/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/ParameterTestUnit.java @@ -0,0 +1,7 @@ +package com.dangdang.ddframe.rdb.sharding.parsing; + +/** + * Created by caohao on 2017/8/10. + */ +public class ParameterTestUnit { +} diff --git a/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/SQLJudgeEngineTest.java b/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/SQLJudgeEngineTest.java new file mode 100644 index 0000000000..15e62c5312 --- /dev/null +++ b/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/SQLJudgeEngineTest.java @@ -0,0 +1,37 @@ +package com.dangdang.ddframe.rdb.sharding.parsing; + +import com.dangdang.ddframe.rdb.sharding.parsing.parser.exception.SQLParsingException; +import com.dangdang.ddframe.rdb.sharding.parsing.parser.statement.dml.DMLStatement; +import com.dangdang.ddframe.rdb.sharding.parsing.parser.statement.dql.DQLStatement; +import org.junit.Test; + +import static org.hamcrest.CoreMatchers.instanceOf; +import static org.junit.Assert.assertThat; + +public final class SQLJudgeEngineTest { + + @Test + public void assertPrepareParseForSelect() { + assertThat(new SQLJudgeEngine(" /*COMMENT*/ \t \n \r \fsElecT\t\n * from table ").judge(), instanceOf(DQLStatement.class)); + } + + @Test + public void assertPrepareParseForInsert() { + assertThat(new SQLJudgeEngine(" - - COMMENT \t \n \r \fInsert\t\n into table ").judge(), instanceOf(DMLStatement.class)); + } + + @Test + public void assertPrepareParseForUpdate() { + assertThat(new SQLJudgeEngine(" /*+ HINT SELECT * FROM TT*/ \t \n \r \fuPdAte\t\n table ").judge(), instanceOf(DMLStatement.class)); + } + + @Test + public void assertPrepareParseForDelete() { + assertThat(new SQLJudgeEngine(" /*+ HINT SELECT * FROM TT*/ \t \n \r \fdelete\t\n table ").judge(), instanceOf(DMLStatement.class)); + } + + @Test(expected = SQLParsingException.class) + public void assertPrepareParseForInvalidSQL() { + new SQLJudgeEngine("int i = 0").judge(); + } +} diff --git a/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/SQLParsingEngineTest.java b/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/SQLParsingEngineTest.java index 45ea82c160..d45d6aa97a 100644 --- a/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/SQLParsingEngineTest.java +++ b/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/SQLParsingEngineTest.java @@ -1,37 +1,68 @@ +/* + * Copyright 1999-2015 dangdang.com. + *

+ * Licensed 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 com.dangdang.ddframe.rdb.sharding.parsing; -import com.dangdang.ddframe.rdb.sharding.parsing.parser.exception.SQLParsingException; -import com.dangdang.ddframe.rdb.sharding.parsing.parser.statement.dml.DMLStatement; -import com.dangdang.ddframe.rdb.sharding.parsing.parser.statement.dql.DQLStatement; +import com.dangdang.ddframe.rdb.common.jaxb.helper.SQLStatementHelper; +import com.dangdang.ddframe.rdb.common.util.SqlPlaceholderUtil; +import com.dangdang.ddframe.rdb.sharding.api.fixture.ShardingRuleMockBuilder; +import com.dangdang.ddframe.rdb.sharding.constant.DatabaseType; +import com.dangdang.ddframe.rdb.sharding.parsing.parser.base.AbstractBaseParseSQLTest; +import com.dangdang.ddframe.rdb.sharding.parsing.parser.base.AbstractBaseParseTest; +import com.dangdang.ddframe.rdb.sharding.parsing.parser.context.table.Tables; +import com.dangdang.ddframe.rdb.sharding.parsing.parser.jaxb.Conditions; +import com.dangdang.ddframe.rdb.sharding.parsing.parser.jaxb.Limit; +import com.dangdang.ddframe.rdb.sharding.parsing.parser.statement.SQLStatement; import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.junit.runners.Parameterized.Parameters; -import static org.hamcrest.CoreMatchers.instanceOf; -import static org.junit.Assert.assertThat; +import java.util.Collection; -public final class SQLParsingEngineTest { +@RunWith(Parameterized.class) +public final class SQLParsingEngineTest extends AbstractBaseParseSQLTest { - @Test - public void assertPrepareParseForSelect() { - assertThat(new SQLJudgeEngine(" /*COMMENT*/ \t \n \r \fsElecT\t\n * from table ").judge(), instanceOf(DQLStatement.class)); + public SQLParsingEngineTest( + final String testCaseName, final String[] parameters, final Tables expectedTables, + final Conditions expectedConditions, final SQLStatement expectedSQLStatement, final Limit expectedLimit) { + super(testCaseName, parameters, expectedTables, expectedConditions, expectedSQLStatement, expectedLimit); } - @Test - public void assertPrepareParseForInsert() { - assertThat(new SQLJudgeEngine(" - - COMMENT \t \n \r \fInsert\t\n into table ").judge(), instanceOf(DMLStatement.class)); + @Parameters(name = "{0}") + public static Collection dataParameters() { + return AbstractBaseParseTest.dataParameters(); } @Test - public void assertPrepareParseForUpdate() { - assertThat(new SQLJudgeEngine(" /*+ HINT SELECT * FROM TT*/ \t \n \r \fuPdAte\t\n table ").judge(), instanceOf(DMLStatement.class)); + public void assertStatement() { + for (DatabaseType each : SQLStatementHelper.getTypes(getTestCaseName())) { + assertStatement(new SQLParsingEngine(each, SqlPlaceholderUtil.replaceStatement(SQLStatementHelper.getSql(getTestCaseName()), getParameters()), + new ShardingRuleMockBuilder().addShardingColumns("user_id").addShardingColumns("order_id").addShardingColumns("state") + .addGenerateKeyColumn("order", "order_id").addGenerateKeyColumn("payment", "order_id").addGenerateKeyColumn("payment", "pay_no").build()).parse()); + } } @Test - public void assertPrepareParseForDelete() { - assertThat(new SQLJudgeEngine(" /*+ HINT SELECT * FROM TT*/ \t \n \r \fdelete\t\n table ").judge(), instanceOf(DMLStatement.class)); - } - - @Test(expected = SQLParsingException.class) - public void assertPrepareParseForInvalidSQL() { - new SQLJudgeEngine("int i = 0").judge(); + public void assertPreparedStatement() { + for (DatabaseType each : SQLStatementHelper.getTypes(getTestCaseName())) { + assertPreparedStatement(new SQLParsingEngine(each, SqlPlaceholderUtil.replacePreparedStatement(SQLStatementHelper.getSql(getTestCaseName())), + new ShardingRuleMockBuilder().addShardingColumns("user_id").addShardingColumns("order_id").addShardingColumns("state") + .addGenerateKeyColumn("order", "order_id").addGenerateKeyColumn("payment", "order_id").addGenerateKeyColumn("payment", "pay_no").build()).parse()); + } } } diff --git a/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/UnsupportedParseTest.java b/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/UnsupportedParseTest.java deleted file mode 100644 index 007e33739d..0000000000 --- a/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/UnsupportedParseTest.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 1999-2015 dangdang.com. - *

- * Licensed 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 com.dangdang.ddframe.rdb.sharding.parsing; - -import com.dangdang.ddframe.rdb.sharding.api.fixture.ShardingRuleMockBuilder; -import com.dangdang.ddframe.rdb.sharding.constant.DatabaseType; -import com.dangdang.ddframe.rdb.sharding.parsing.parser.exception.SQLParsingUnsupportedException; -import org.junit.Test; - -public final class UnsupportedParseTest { - - @Test(expected = SQLParsingUnsupportedException.class) - public void assertGrant() { - new SQLParsingEngine(DatabaseType.MySQL, "GRANT ALL ON * TO 'root'@'localhost'", new ShardingRuleMockBuilder().build()).parse(); - } -} diff --git a/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/UnsupportedSQLParsingEngineTest.java b/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/UnsupportedSQLParsingEngineTest.java new file mode 100644 index 0000000000..ddec67b79d --- /dev/null +++ b/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/UnsupportedSQLParsingEngineTest.java @@ -0,0 +1,92 @@ +/* + * Copyright 1999-2015 dangdang.com. + *

+ * Licensed 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 com.dangdang.ddframe.rdb.sharding.parsing; + +import com.dangdang.ddframe.rdb.common.jaxb.SQLStatement; +import com.dangdang.ddframe.rdb.common.jaxb.helper.SQLStatementHelper; +import com.dangdang.ddframe.rdb.sharding.api.fixture.ShardingRuleMockBuilder; +import com.dangdang.ddframe.rdb.sharding.constant.DatabaseType; +import com.dangdang.ddframe.rdb.sharding.parsing.parser.exception.SQLParsingUnsupportedException; +import com.google.common.collect.Sets; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; + +import static junit.framework.Assert.fail; +import static org.junit.Assert.assertTrue; + +@RunWith(Parameterized.class) +public final class UnsupportedSQLParsingEngineTest { + + private String testcaseName; + + private String sql; + + private Set types; + + public UnsupportedSQLParsingEngineTest(final String testCaseName, final String sql, Set types) { + this.testcaseName = testCaseName; + this.sql = sql; + this.types = types; + } + + @Parameterized.Parameters(name = "{0}") + public static Collection dataParameters() { + Collection result = new ArrayList<>(); + for (SQLStatement each : SQLStatementHelper.getUnsupportedSqlStatements()) { + Object[] object = new Object[3]; + object[0] = each.getId(); + object[1] = each.getSql(); + object[2] = getTypes(each.getTypes()); + result.add(object); + } + return result; + } + + private static Set getTypes(final String types) { + if (types == null || types.isEmpty()) { + return Sets.newHashSet(DatabaseType.values()); + } + Set result = new HashSet<>(); + for (String each : types.split(",")) { + result.add(DatabaseType.valueOf(each)); + } + return result; + } + + @Test + public void assertUnsupportedStatement() { + for (DatabaseType each : types) { + try { + new SQLParsingEngine(each, sql, + new ShardingRuleMockBuilder().addShardingColumns("user_id").addShardingColumns("order_id").addShardingColumns("state") + .addGenerateKeyColumn("order", "order_id").addGenerateKeyColumn("payment", "order_id").addGenerateKeyColumn("payment", "pay_no").build()).parse(); + fail(String.format("Should have thrown an SQLParsingUnsupportedException because %s is invalid!", sql)); + //CHECKSTYLE:OFF + } catch (final Exception exception) { + //CHECKSTYLE:ON + assertTrue(exception instanceof SQLParsingUnsupportedException); + } + } + } +} diff --git a/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/dialect/SQLParserTest.java b/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/dialect/SQLParserTest.java deleted file mode 100644 index 2c7966bd15..0000000000 --- a/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/dialect/SQLParserTest.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright 1999-2015 dangdang.com. - *

- * Licensed 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 com.dangdang.ddframe.rdb.sharding.parsing.parser.dialect; - -import com.dangdang.ddframe.rdb.common.jaxb.helper.SQLStatementHelper; -import com.dangdang.ddframe.rdb.common.util.SqlPlaceholderUtil; -import com.dangdang.ddframe.rdb.sharding.api.fixture.ShardingRuleMockBuilder; -import com.dangdang.ddframe.rdb.sharding.constant.DatabaseType; -import com.dangdang.ddframe.rdb.sharding.parsing.SQLParsingEngine; -import com.dangdang.ddframe.rdb.sharding.parsing.parser.base.AbstractBaseParseSQLTest; -import com.dangdang.ddframe.rdb.sharding.parsing.parser.base.AbstractBaseParseTest; -import com.dangdang.ddframe.rdb.sharding.parsing.parser.context.table.Tables; -import com.dangdang.ddframe.rdb.sharding.parsing.parser.jaxb.Conditions; -import com.dangdang.ddframe.rdb.sharding.parsing.parser.jaxb.Limit; -import com.dangdang.ddframe.rdb.sharding.parsing.parser.statement.SQLStatement; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; -import org.junit.runners.Parameterized.Parameters; - -import java.util.Collection; - -@RunWith(Parameterized.class) -public final class SQLParserTest extends AbstractBaseParseSQLTest { - - public SQLParserTest( - final String testCaseName, final String[] parameters, final Tables expectedTables, - final Conditions expectedConditions, final SQLStatement expectedSQLStatement, final Limit expectedLimit) { - super(testCaseName, parameters, expectedTables, expectedConditions, expectedSQLStatement, expectedLimit); - } - - @Parameters(name = "{0}") - public static Collection dataParameters() { - return AbstractBaseParseTest.dataParameters(); - } - - @Test - public void assertStatement() { - for (DatabaseType each : SQLStatementHelper.getTypes(getTestCaseName())) { - assertStatement(new SQLParsingEngine(each, SqlPlaceholderUtil.replaceStatement(SQLStatementHelper.getSql(getTestCaseName()), getParameters()), - new ShardingRuleMockBuilder().addShardingColumns("user_id").addShardingColumns("order_id").addShardingColumns("state") - .addGenerateKeyColumn("order", "order_id").addGenerateKeyColumn("payment", "order_id").addGenerateKeyColumn("payment", "pay_no").build()).parse()); - } - } - - @Test - public void assertPreparedStatement() { - for (DatabaseType each : SQLStatementHelper.getTypes(getTestCaseName())) { - assertPreparedStatement(new SQLParsingEngine(each, SqlPlaceholderUtil.replacePreparedStatement(SQLStatementHelper.getSql(getTestCaseName())), - new ShardingRuleMockBuilder().addShardingColumns("user_id").addShardingColumns("order_id").addShardingColumns("state") - .addGenerateKeyColumn("order", "order_id").addGenerateKeyColumn("payment", "order_id").addGenerateKeyColumn("payment", "pay_no").build()).parse()); - } - } -} diff --git a/sharding-jdbc-core/src/test/resources/parser/select.xml b/sharding-jdbc-core/src/test/resources/parser/select.xml index 06152f3171..b5c3d2e685 100644 --- a/sharding-jdbc-core/src/test/resources/parser/select.xml +++ b/sharding-jdbc-core/src/test/resources/parser/select.xml @@ -175,4 +175,9 @@ + + + + + diff --git a/sharding-jdbc-core/src/test/resources/sql/select.xml b/sharding-jdbc-core/src/test/resources/sql/select.xml index 5472607eed..a29f902e15 100644 --- a/sharding-jdbc-core/src/test/resources/sql/select.xml +++ b/sharding-jdbc-core/src/test/resources/sql/select.xml @@ -11,4 +11,5 @@ + diff --git a/sharding-jdbc-core/src/test/resources/sql/unsupported/common.xml b/sharding-jdbc-core/src/test/resources/sql/unsupported/common.xml new file mode 100644 index 0000000000..8b52cafb0d --- /dev/null +++ b/sharding-jdbc-core/src/test/resources/sql/unsupported/common.xml @@ -0,0 +1,7 @@ + + + + + + + -- GitLab