You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by wu...@apache.org on 2021/06/16 09:55:33 UTC

[shardingsphere] branch opengauss_adapt updated (4d4b845 -> b21a768)

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

wuweijie pushed a change to branch opengauss_adapt
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git.


 discard 4d4b845  Refactor PostgreSQL Proxy (#10672)
 discard 7b8746c  add jdbc:opengauss supoort (#10601)
 discard 13d21e4  Update OpenGaussDataSourceMetaData
 discard ae22a6d  Add OpenGauss Database type (#10292)
     add 1292181  Improve Federate metadata (#10674)
     add 56fe429  Create FederateRefresher (#10675)
     add eed668f  Refactor MetadataRefreshEngine (#10677)
     add 4f1f624  Merge rewrite-test module (#10682)
     add 0669342  Merge shardingsphere-infra-rewrite and shardingsphere-infra-rewrite-engine module (#10684)
     add 17befc3   Modify SqlConformanceEnum (#10687)
     add a9dccb8  fix datasource config error for #10584 (#10683)
     add 8ca798b  PostgreSQL supports unspecified type (#10691)
     add 23824b3  fix create sharding table rule error (#10698)
     add cc0def8  Fix POSTGRESQL_TYPE_CHAR not found in column type (#10704)
     add 3b2faef  Correct PostgreSQL Bind Packet data row type (#10706)
     add 0ec655e  Adjust datatype (#10681)
     add 5f65923  Remove useless constructor of AlgorithmProvidedShardingRuleConfiguration (#10707)
     add 9eddd40  Refactor scaling integration test (#10705)
     add c2cc5e8  Remove useless generic definition of RuleBuilder (#10708)
     add d216c09  Remove useless check with new ShardingRule (#10709)
     add 064bffe  Correct packages and generic types (#10710)
     add e3297c0  Add same order check for OrderedSPIRegistry (#10712)
     add 0e86265  Check sharding algorithm for create & alter sharding table rule (#10711)
     add a87367f  fix create user password parse error (#10713)
     add 687a914  Check key generator for create & alter sharding table rule (#10718)
     add 77cd2a1  Add test for LocalTransactionManager  (#10701)
     add 407e320  Retrieve federated execution from jdbc statement and proxy statement. (#10720)
     add b772aa3  Update FAQ for compiling errors (#10721)
     add 014c5a5  Update documents for Proxy authentication (#10722)
     add 484b9ac  Add with clause for Oracle `SELECT` statement (#10558)
     add df136b2  Add Oracle SQL - SET CONSTRAINTS (#10685)
     add 34338c9  optimize some calcite select error (#10719)
     add 4f9c0e4  fix sql join error with multi unbinding sharding table (#10728)
     add 7d6d2de  Update FAQ for compiling error (#10726)
     add 75c186f  feat: add contributor over time graph to README (#10451)
     add 81f1dff  Update readme and doc with contributor graph (#10730)
     add 975cbcb  Standardization feature order usage (#10733)
     add 7ba3f1d  optimize calcite parameter pass (#10731)
     add e3f78a83 Fix typos in FAQ and proxy authentication (#10738)
     add f343829  Code format for authority (#10739)
     add be59cca  Refactor PostgreSQL Proxy (#10736)
     add 2554b2d  Update maven and docker image status (#10741)
     add c704d3b  Add default user (#10740)
     add e6d100a  Fix RowDescription absence when Bind binary formats (#10743)
     add 3b2975a  Add test case for RuleConfigurationCheckerFactory with RuleConfigurationChecker fixture (#10742)
     add ba5f03f  Rename YamlRuleConfigurationSwapperFixture with proxy module (#10744)
     add 2bad204  fix index validate and show logic (#10747)
     add 7a1a2b4  PostgreSQL CommandCompletion return actual rows (#10748)
     add 3d86628  Minor refactor CreateSharidngTableRuleBackendHandler (#10749)
     add 1724f28  modify doc for IntervalShardingAlgorithm (#10753)
     add e16c205  Check duplicate binding tables (#10754)
     add c20eddf  Remove useless codes (#10756)
     add 5ad1c76  Add test case for ShardingRuleConfigurationChecker & AlgorithmProvidedShardingRuleConfigurationChecker (#10755)
     add a76daf1  Refactor Oracle DDL test cases (#10752)
     add 99166c4  fix calcite select result merge error when call execute method (#10758)
     add f6fda78  Create AlterTableStatementFederateRefresher #10696 (#10757)
     add 55a35ff  Add GlobalRuleConfiguration and SchemaRuleConfiguration interfaces (#10763)
     add 861d075  optimize select statement that in same datasource route logic (#10762)
     add 9a53991  update sharding document (#10766)
     add e3f6ac5  fix UnsupportedOperationException when execute ConcurrentHashMap.keySet().addAll() (#10767)
     add 99a093d  Add more assertions in MetaDataChangedWatcherTest (#10765)
     add 1299174  Rename RDLStatement.rules fields (#10769)
     add 8622d19  Add AlterRDLStatement (#10772)
     add 474c48f  Fix columns' format may be incorrect in PostgreSQL DataRow (#10774)
     add 953e5ec  Polish structure of RDL and RQL statement (#10775)
     add 73e991b  Minor refactor encrypt rule RDL (#10776)
     add 3120812  Add test case for RuleConfigurationChecker (#10770)
     add 48748d9  Revise #10770 (#10777)
     add c1f1152  Add test case for RuleConfigurationChecker (#10778)
     add 0df6dec  Revise #10778 for code format (#10779)
     add fc811c3  Refactor document for DistSQL (#10771)
     add e305060  Remove useless to phase parse for DistSQL (#10780)
     add 187cf76  Fix format of docs (#10781)
     add d64e7ae  Update DistSQL title for English version and sequence of nav (#10783)
     add 6ae6d50  for code format (#10782)
     add fafcc99  Fix #10536 with code format (#10784)
     add 4811d36  #Fixes #10771 with Chinese word in doc (#10785)
     add 6dd2694  Add : add sysbench benchmark link (#10786)
     add 1272443  Add DistRuleSQLParserFacade to prepare SPI with rule SQL parser (#10788)
     add 0afe88d  Update release note (#10790)
     add 690c80f  update example pom (#10791)
     add 8fa0475  Add DatabaseTypedSQLParserFacade and FeatureTypedSQLParserFacade for SQL parser (#10792)
     add caa6bc9  Add Oracle SQl - ANALYZE (#10768)
     add cf31162  Refactor SQLParserFactory to adapt SQL parser and Dist SQL parser (#10793)
     add 4280ab0  Use static instead of singleton for DatabaseTypedSQLParserFacadeRegistry (#10794)
     add 63da401  Polish sql parser package (#10795)
     add 6f5f2e9  Add test case for ParseASTNode (#10797)
     add 8ffcfe5  Use SPI to introduce DistSQL visitor (#10798)
     add 747c99c  Add StandardSQLStatementParserEngine and FeatureTypedSQLStatementParserEngine to polish DistSQLStatementParserEngine (#10799)
     add b208758  10374 - code refactoring for process report feature (#10676)
     add 18c2f32  Update src distribution ignores (#10803)
     add d892ebc  Rename standard and feature package names to resource and rule (#10805)
     add 37808b1  Split sharding ANTLR g4 file and visitor (#10807)
     add c7c0507  Split readwrite-splitting ANTLR g4 file and visitor (#10809)
     add ffd7f75  Simplify dist sql test cases (#10812)
     add 9249c47  Merge SPI for rule dist sql (#10813)
     add 232647c  Split db-discovery ANTLR g4 file and visitor (#10815)
     add 6952ba1  Split encrypt ANTLR g4 file and visitor (#10818)
     add d848b2e  Rename ResourceStatement.g4 (#10819)
     add 2bf4886  Rename ResourceStatement.g4 (#10820)
     add e65fc94  Split SQL statements to related modules (#10822)
     add 9afdabb  Refactor FunctionSegment (#10824)
     add 1cd5f54  Rename functionDefinition to algorithmDefinition (#10825)
     add 6eb8c5f  fix npe when config multi sharding rules (#10828)
     add ecfd17d  support postgresql create index without index name (#10816)
     add 031f2ad  Add example for RQL (#10829)
     add 65bf4e7  Update NOTICE copyright year to 2021 (#10831)
     add 0b67ead  fix examples pom version (#10802)
     add 4efe9e1  fix(interval sharding algorithm):Fix insert or query by precise value error when there is no db ShardingStrategy and using unique table names.rename variable name and add some testcases (#10804)
     add 2738978  Update mvn command in doc (#10834)
     add fc3c590  fix column index out of range exception when execute subquery select (#10833)
     add 6461341  Update LICENSE for release (#10835)
     new 180f75a  Add OpenGauss Database type (#10292)
     new f06bf4c  Update OpenGaussDataSourceMetaData
     new b21a768  add jdbc:opengauss supoort (#10601)

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (4d4b845)
            \
             N -- N -- N   refs/heads/opengauss_adapt (b21a768)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 NOTICE                                             |   2 +-
 README.md                                          |  11 +-
 README_ZH.md                                       |  11 +-
 RELEASE-NOTES.md                                   |  69 +++
 .../content/contribute/code-conduct.cn.md          |   2 +-
 .../content/contribute/code-conduct.en.md          |   2 +-
 .../content/contribute/release-elasticjob-ui.cn.md |   2 +-
 .../content/contribute/release-elasticjob-ui.en.md |   4 +-
 .../content/contribute/release-elasticjob.cn.md    |   2 +-
 .../content/contribute/release-elasticjob.en.md    |   4 +-
 docs/community/content/contribute/release.cn.md    |   2 +-
 docs/community/content/contribute/release.en.md    |   4 +-
 docs/community/content/contribute/release_ui.cn.md |   2 +-
 docs/community/content/contribute/release_ui.en.md |   4 +-
 docs/document/content/dev-manual/proxy.cn.md       |   8 +-
 docs/document/content/dev-manual/proxy.en.md       |   8 +-
 docs/document/content/dev-manual/sql-parser.cn.md  |  20 +-
 docs/document/content/dev-manual/sql-parser.en.md  |   8 +-
 docs/document/content/faq/_index.cn.md             |  11 +-
 docs/document/content/faq/_index.en.md             |  11 +-
 docs/document/content/features/dist-sql/rdl.en.md  | 134 ------
 docs/document/content/features/dist-sql/rql.cn.md  |  10 -
 docs/document/content/features/dist-sql/rql.en.md  |  10 -
 .../content/features/dist-sql/syntax/_index.cn.md  |   8 +
 .../content/features/dist-sql/syntax/_index.en.md  |   8 +
 .../features/dist-sql/syntax/rdl/_index.cn.md      |   8 +
 .../features/dist-sql/syntax/rdl/_index.en.md      |   8 +
 .../syntax/rdl/rdl-db-discovery-rule.cn.md         |  47 +++
 .../syntax/rdl/rdl-db-discovery-rule.en.md         |   6 +
 .../dist-sql/syntax/rdl/rdl-encrypt-rule.cn.md     |  55 +++
 .../dist-sql/syntax/rdl/rdl-encrypt-rule.en.md     |   6 +
 .../syntax/rdl/rdl-readwrite-splitting-rule.cn.md  |  63 +++
 .../syntax/rdl/rdl-readwrite-splitting-rule.en.md  |   6 +
 .../dist-sql/syntax/rdl/rdl-resource.cn.md         |  40 ++
 .../dist-sql/syntax/rdl/rdl-resource.en.md         |   6 +
 .../dist-sql/syntax/rdl/rdl-sharding-rule.cn.md    | 116 +++++
 .../dist-sql/syntax/rdl/rdl-sharding-rule.en.md    |   6 +
 .../features/dist-sql/syntax/rql/_index.cn.md      |   8 +
 .../features/dist-sql/syntax/rql/_index.en.md      |   8 +
 .../syntax/rql/rql-db-discovery-rule.cn.md         |  31 ++
 .../syntax/rql/rql-db-discovery-rule.en.md         |   6 +
 .../dist-sql/syntax/rql/rql-encrypt-rule.cn.md     |  61 +++
 .../dist-sql/syntax/rql/rql-encrypt-rule.en.md     |   6 +
 .../syntax/rql/rql-readwrite-splitting-rule.cn.md  |  56 +++
 .../syntax/rql/rql-readwrite-splitting-rule.en.md  |   6 +
 .../dist-sql/syntax/rql/rql-resource.cn.md         |  34 ++
 .../dist-sql/syntax/rql/rql-resource.en.md         |   6 +
 .../dist-sql/syntax/rql/rql-sharding-rule.cn.md    | 115 +++++
 .../dist-sql/syntax/rql/rql-sharding-rule.en.md    |   6 +
 .../features/dist-sql/syntax/sctl/_index.cn.md     |   8 +
 .../features/dist-sql/syntax/sctl/_index.en.md     |   8 +
 .../features/dist-sql/{ => syntax/sctl}/sctl.cn.md |  22 +-
 .../features/dist-sql/{ => syntax/sctl}/sctl.en.md |   2 +-
 .../content/features/dist-sql/usage/_index.cn.md   |   8 +
 .../content/features/dist-sql/usage/_index.en.md   |   8 +
 .../{rdl.cn.md => usage/sharding-rule.cn.md}       |  97 ++---
 .../features/dist-sql/usage/sharding-rule.en.md    |   6 +
 .../content/features/sharding/use-norms/sql.cn.md  |  18 +-
 .../content/features/sharding/use-norms/sql.en.md  |  18 +-
 .../test-engine/performance-test-sysbench.cn.md    |   2 +
 docs/document/content/overview/_index.cn.md        |  11 +-
 docs/document/content/overview/_index.en.md        |  11 +-
 .../built-in-algorithm/sharding.cn.md              |  16 +-
 .../built-in-algorithm/sharding.en.md              |  16 +-
 .../configuration/authentication.cn.md             |   4 +
 .../configuration/authentication.en.md             |   4 +
 examples/example-core/config-utility/pom.xml       |   2 +-
 examples/example-core/example-api/pom.xml          |   2 +-
 .../example/core/api/entity/ShadowUser.java        |   6 +-
 examples/example-core/example-raw-jdbc/pom.xml     |   2 +-
 examples/example-core/example-spring-jpa/pom.xml   |   2 +-
 .../example/core/jpa/entity/ShadowUserEntity.java  |   2 +-
 .../example-core/example-spring-mybatis/pom.xml    |   2 +-
 examples/example-core/pom.xml                      |   2 +-
 examples/pom.xml                                   |   2 +-
 .../governance-raw-jdbc-example/pom.xml            |   2 +-
 .../governance-spring-boot-example/pom.xml         |   2 +-
 .../governance-spring-namespace-example/pom.xml    |   2 +-
 .../governance-example/pom.xml                     |   2 +-
 .../encrypt-raw-jdbc-example/pom.xml               |   2 +-
 .../encrypt-spring-boot-example/pom.xml            |   2 +-
 .../encrypt-spring-namespace-example/pom.xml       |   2 +-
 .../other-feature-example/encrypt-example/pom.xml  |   2 +-
 .../hint-example/hint-raw-jdbc-example/pom.xml     |   2 +-
 .../other-feature-example/hint-example/pom.xml     |   2 +-
 .../other-feature-example/pom.xml                  |   2 +-
 .../other-feature-example/shadow-example/pom.xml   |   2 +-
 .../shadow-example/shadow-raw-jdbc-example/pom.xml |   2 +-
 .../shadow-spring-boot-example/pom.xml             |   2 +-
 .../shadow-spring-namespace-example/pom.xml        |   2 +-
 examples/shardingsphere-jdbc-example/pom.xml       |   2 +-
 .../sharding-example/pom.xml                       |   2 +-
 .../sharding-raw-jdbc-example/pom.xml              |   2 +-
 .../sharding-spring-boot-jpa-example/pom.xml       |   2 +-
 ...ication-sharding-readwrite-splitting.properties |   8 +-
 .../sharding-spring-boot-mybatis-example/pom.xml   |   2 +-
 .../sharding-spring-namespace-jpa-example/pom.xml  |   2 +-
 .../pom.xml                                        |   2 +-
 .../transaction-example/pom.xml                    |   2 +-
 .../pom.xml                                        |   2 +-
 .../pom.xml                                        |   2 +-
 .../transaction-2pc-xa-raw-jdbc-example/pom.xml    |   2 +-
 .../transaction-2pc-xa-spring-boot-example/pom.xml |   2 +-
 .../pom.xml                                        |   2 +-
 .../pom.xml                                        |   2 +-
 .../pom.xml                                        |   2 +-
 examples/shardingsphere-parser-example/pom.xml     |   2 +-
 examples/shardingsphere-proxy-example/pom.xml      |   2 +-
 .../pom.xml                                        |   2 +-
 .../shardingsphere-proxy-hint-example/pom.xml      |   2 +-
 .../db/protocol/error/CommonErrorCode.java         |   8 +-
 .../mysql/constant/MySQLServerErrorCode.java       |   2 +-
 .../constant/PostgreSQLBinaryColumnType.java       |   1 +
 .../constant/PostgreSQLColumnFormat.java           |  30 +-
 .../bind/PostgreSQLBinaryResultSetRowPacket.java   |  57 ---
 .../query/binary/bind/PostgreSQLComBindPacket.java |  25 +-
 .../PostgreSQLBinaryProtocolValueFactory.java      |   1 +
 .../query/text/PostgreSQLDataRowPacket.java        |  40 +-
 .../PostgreSQLBinaryResultSetRowPacketTest.java    |  72 ----
 .../binary/bind/PostgreSQLComBindPacketTest.java   |   6 +-
 .../PostgreSQLBinaryProtocolValueFactoryTest.java  |   8 +-
 .../src/main/release-docs/LICENSE                  |  42 +-
 .../src/main/release-docs/NOTICE                   |   2 +-
 .../main/release-docs/licenses/LICENSE-Janino.txt  |  34 ++
 .../src/main/release-docs/licenses/LICENSE-asm.txt |  30 ++
 .../licenses/LICENSE-mchange-commons-java.txt      | 215 ++++++++++
 .../src/main/release-docs/LICENSE                  |  42 +-
 .../src/main/release-docs/NOTICE                   |   2 +-
 .../main/release-docs/licenses/LICENSE-Janino.txt  |  34 ++
 .../src/main/release-docs/licenses/LICENSE-asm.txt |  30 ++
 .../licenses/LICENSE-mchange-commons-java.txt      | 215 ++++++++++
 .../licenses/LICENSE-protobuf-java.txt             |   0
 .../src/main/assembly/source-distribution.xml      |   2 +-
 .../src/main/antlr4/imports/Keyword.g4             | 128 +-----
 .../src/main/antlr4/imports/RDLStatement.g4        | 172 --------
 .../src/main/antlr4/imports/RQLStatement.g4        |  32 --
 .../distsql/parser/autogen/ResourceStatement.g4    |  27 +-
 .../parser/api/DistSQLStatementParserEngine.java   |  39 +-
 .../distsql/parser/core/DistSQLParserFactory.java  |  58 ---
 .../distsql/parser/core/DistSQLVisitor.java        | 467 ---------------------
 .../parser/core/resource/ResourceDistSQLLexer.java |  20 +-
 .../ResourceDistSQLParser.java}                    |  12 +-
 .../resource/ResourceDistSQLStatementVisitor.java  | 123 ++++++
 .../resource/ResourceSQLStatementParserEngine.java |  49 +++
 .../distsql/parser/core/rule/RuleParseASTNode.java |  13 +-
 .../core/rule/RuleSQLStatementParserEngine.java    |  79 ++++
 .../parser/spi/RuleSQLStatementParserFacade.java   |  23 +-
 .../api/DistSQLStatementParserEngineTest.java      | 465 +-------------------
 ...{FunctionSegment.java => AlgorithmSegment.java} |  12 +-
 .../AlterRuleStatement.java}                       |   6 +-
 .../create/{impl => }/AddResourceStatement.java    |   6 +-
 ...eRDLStatement.java => CreateRuleStatement.java} |   4 +-
 .../rdl/drop/{impl => }/DropResourceStatement.java |  11 +-
 ...ropRDLStatement.java => DropRuleStatement.java} |   4 +-
 .../shardingsphere-db-discovery/pom.xml            |   3 +-
 .../config/DatabaseDiscoveryRuleConfiguration.java |   4 +-
 .../shardingsphere-db-discovery-core/pom.xml       |   5 +
 ...ProvidedDatabaseDiscoveryRuleConfiguration.java |   4 +-
 .../constant/DatabaseDiscoveryOrder.java           |   2 +-
 ...orithmProvidedDatabaseDiscoveryRuleBuilder.java |   8 +-
 .../DatabaseDiscoveryRuleBuilder.java              |   4 +-
 .../DatabaseDiscoveryRuleStatementConverter.java   |   8 +-
 ...eAlgorithmProviderConfigurationYamlSwapper.java |   2 +-
 ...here.infra.rule.builder.scope.SchemaRuleBuilder |   4 +-
 ...hmProvidedDatabaseDiscoveryRuleBuilderTest.java |   6 +-
 .../DatabaseDiscoveryRuleBuilderTest.java          |   2 +-
 ...abaseDiscoveryRuleConfigurationCheckerTest.java |  64 +++
 ...atabaseDiscoveryRuleStatementConverterTest.java |   2 +-
 ...orithmProviderConfigurationYamlSwapperTest.java |   2 +-
 ...eDiscoveryRuleConfigurationYamlSwapperTest.java |   9 -
 .../pom.xml                                        |  47 ++-
 .../main/antlr4/imports/db-discovery}/Alphabet.g4  |   0
 .../main/antlr4/imports/db-discovery/Keyword.g4    |  68 ++-
 .../main/antlr4/imports/db-discovery}/Literals.g4  |   0
 .../antlr4/imports/db-discovery/RDLStatement.g4    |  44 +-
 .../antlr4/imports/db-discovery/RQLStatement.g4    |  13 +-
 .../main/antlr4/imports/db-discovery}/Symbol.g4    |   0
 .../autogen/DatabaseDiscoveryRuleStatement.g4      |  16 +-
 .../parser/core/DatabaseDiscoveryRuleLexer.java    |  20 +-
 .../parser/core/DatabaseDiscoveryRuleParser.java   |  12 +-
 .../DatabaseDiscoveryRuleSQLStatementVisitor.java  |  97 +++++
 ...abaseDiscoveryRuleSQLStatementParserFacade.java |  29 +-
 .../AlterDatabaseDiscoveryRuleStatement.java       |  10 +-
 .../CreateDatabaseDiscoveryRuleStatement.java      |  10 +-
 .../DropDatabaseDiscoveryRuleStatement.java        |  11 +-
 .../ShowDatabaseDiscoveryRulesStatement.java       |   3 +-
 .../segment}/DatabaseDiscoveryRuleSegment.java     |   2 +-
 ...distsql.parser.spi.RuleSQLStatementParserFacade |   2 +-
 ...baseDiscoveryRuleStatementParserEngineTest.java | 110 +++++
 .../shardingsphere-encrypt/pom.xml                 |   1 +
 .../api/config/EncryptRuleConfiguration.java       |   4 +-
 .../shardingsphere-encrypt-core/pom.xml            |   7 +-
 .../AlgorithmProvidedEncryptRuleConfiguration.java |   4 +-
 .../encrypt/constant/EncryptOrder.java             |   2 +-
 .../impl/EncryptInsertOnUpdateTokenGenerator.java  |   2 +-
 .../AlgorithmProvidedEncryptRuleBuilder.java       |   8 +-
 .../encrypt/rule/builder/EncryptRuleBuilder.java   |   6 +-
 ...thmProvidedEncryptRuleConfigurationChecker.java |   2 +-
 .../converter/EncryptRuleStatementConverter.java   |  22 +-
 ...eAlgorithmProviderConfigurationYamlSwapper.java |   2 +-
 .../merge/dal/EncryptDALResultDecoratorTest.java   |   4 +-
 ...rovidedEncryptRuleConfigurationCheckerTest.java |  61 +++
 .../EncryptRuleConfigurationCheckerTest.java       |  61 +++
 .../EncryptRuleStatementConverterTest.java         |  11 +-
 .../pom.xml                                        |  40 +-
 .../src/main/antlr4/imports/encrypt}/Alphabet.g4   |   0
 .../src/main/antlr4/imports/encrypt/Keyword.g4     |  94 ++++-
 .../src/main/antlr4/imports/encrypt}/Literals.g4   |   0
 .../main/antlr4/imports/encrypt/RDLStatement.g4    |  76 ++++
 .../main/antlr4/imports/encrypt/RQLStatement.g4    |  21 +-
 .../src/main/antlr4/imports/encrypt}/Symbol.g4     |   0
 .../distsql/parser/autogen/EncryptRuleStatement.g4 |  13 +-
 .../distsql/parser/core/EncryptRuleLexer.java      |  20 +-
 .../distsql/parser/core/EncryptRuleParser.java     |  12 +-
 .../core/EncryptRuleSQLStatementVisitor.java       | 115 +++++
 .../EncryptRuleSQLStatementParserFacade.java       |  29 +-
 .../statement}/AlterEncryptRuleStatement.java      |  10 +-
 .../statement}/CreateEncryptRuleStatement.java     |  10 +-
 .../statement}/DropEncryptRuleStatement.java       |   6 +-
 .../statement}/ShowEncryptRulesStatement.java      |   3 +-
 .../statement/segment}/EncryptColumnSegment.java   |   6 +-
 .../statement/segment}/EncryptRuleSegment.java     |   2 +-
 ...distsql.parser.spi.RuleSQLStatementParserFacade |   2 +-
 .../core/EncryptRuleStatementParserEngineTest.java | 124 ++++++
 .../shardingsphere-readwrite-splitting/pom.xml     |   1 +
 .../api/ReadwriteSplittingRuleConfiguration.java   |   4 +-
 .../pom.xml                                        |   5 +
 ...rovidedReadwriteSplittingRuleConfiguration.java |   4 +-
 .../constant/ReadwriteSplittingOrder.java          |   2 +-
 .../rule/ReadwriteSplittingRule.java               |   9 -
 ...rithmProvidedReadwriteSplittingRuleBuilder.java |  12 +-
 .../ReadwriteSplittingRuleBuilder.java             |   8 +-
 .../ReadwriteSplittingRuleStatementConverter.java  |  10 +-
 ...here.infra.rule.builder.scope.SchemaRuleBuilder |   4 +-
 .../RandomReplicaLoadBalanceAlgorithmTest.java     |   3 +-
 .../RoundRobinReplicaLoadBalanceAlgorithmTest.java |   3 +-
 .../route/ReadwriteSplittingSQLRouterTest.java     |   5 +-
 .../rule/ReadwriteSplittingDataSourceRuleTest.java |   5 +-
 .../rule/ReadwriteSplittingRuleTest.java           |   4 +-
 ...mProvidedReadwriteSplittingRuleBuilderTest.java |   4 +-
 .../ReadwriteSplittingRuleBuilderTest.java         |   2 +-
 ...writeSplittingRuleConfigurationCheckerTest.java |  65 +++
 ...writeSplittingRuleConfigurationCheckerTest.java |  65 +++
 ...orithmProviderConfigurationYamlSwapperTest.java |   4 +-
 ...eSplittingRuleConfigurationYamlSwapperTest.java |  10 +-
 ...amlReadwriteSplittingRuleConfigurationTest.java |   2 +-
 .../pom.xml                                        |  44 +-
 .../imports/readwrite-splitting}/Alphabet.g4       |   0
 .../antlr4/imports/readwrite-splitting/Keyword.g4  |  98 +++--
 .../imports/readwrite-splitting}/Literals.g4       |   0
 .../imports/readwrite-splitting/RDLStatement.g4    |  72 ++++
 .../imports/readwrite-splitting/RQLStatement.g4    |  13 +-
 .../antlr4/imports/readwrite-splitting}/Symbol.g4  |   0
 .../autogen/ReadwriteSplittingRuleStatement.g4     |  16 +-
 .../parser/core/ReadwriteSplittingRuleLexer.java   |  20 +-
 .../parser/core/ReadwriteSplittingRuleParser.java  |  12 +-
 .../ReadwriteSplittingRuleSQLStatementVisitor.java | 122 ++++++
 ...writeSplittingRuleSQLStatementParserFacade.java |  29 +-
 .../AlterReadwriteSplittingRuleStatement.java      |  10 +-
 .../CreateReadwriteSplittingRuleStatement.java     |  10 +-
 .../DropReadwriteSplittingRuleStatement.java       |  11 +-
 .../ShowReadwriteSplittingRulesStatement.java      |   3 +-
 .../segment}/ReadwriteSplittingRuleSegment.java    |   2 +-
 ...distsql.parser.spi.RuleSQLStatementParserFacade |   2 +-
 ...riteSplittingRuleStatementParserEngineTest.java | 133 ++++++
 .../shadow/api/config/ShadowRuleConfiguration.java |   4 +-
 .../shardingsphere-shadow-core/pom.xml             |   2 +-
 .../shadow/rule/builder/ShadowRuleBuilder.java     |   6 +-
 .../ShadowRuleConfigurationCheckerTest.java        |  63 +++
 .../shardingsphere-sharding/pom.xml                |   1 +
 .../api/config/ShardingRuleConfiguration.java      |   4 +-
 .../shardingsphere-sharding-core/pom.xml           |  13 +-
 ...AlgorithmProvidedShardingRuleConfiguration.java |   8 +-
 .../datetime/AutoIntervalShardingAlgorithm.java    |   3 +-
 .../datetime/IntervalShardingAlgorithm.java        |   6 +-
 .../sharding/constant/ShardingOrder.java           |   2 +-
 .../converter/ShardingRuleStatementConverter.java  |  98 ++---
 .../merge/dal/show/LogicTablesMergedResult.java    |  17 +-
 .../dal/show/ShowCreateTableMergedResult.java      |  12 +-
 .../merge/dal/show/ShowIndexMergedResult.java      |   4 +-
 .../sharding/rewrite/token/pojo/IndexToken.java    |  17 +-
 .../impl/WhereClauseShardingConditionEngine.java   |  12 +-
 .../ConditionValueBetweenOperatorGenerator.java    |   4 +-
 .../engine/type/ShardingRouteEngineFactory.java    |   3 +
 .../type/single/SingleTablesRoutingEngine.java     |  11 +-
 .../standard/ShardingStandardRoutingEngine.java    |   2 +-
 .../ShardingCreateIndexStatementValidator.java     |   3 +-
 .../impl/ShardingDropIndexStatementValidator.java  |  17 +-
 .../dml/ShardingDMLStatementValidator.java         |   6 +-
 .../shardingsphere/sharding/rule/ShardingRule.java |  48 ++-
 .../AlgorithmProvidedShardingRuleBuilder.java      |   8 +-
 .../sharding/rule/builder/ShardingRuleBuilder.java |   6 +-
 ...hmProvidedShardingRuleConfigurationChecker.java |   2 +-
 ...eAlgorithmProviderConfigurationYamlSwapper.java |   2 +-
 .../datetime/IntervalShardingAlgorithmTest.java    |   2 +
 .../ShardingRuleStatementConverterTest.java        |  11 +-
 ...ConditionValueBetweenOperatorGeneratorTest.java |   6 +-
 .../engine/fixture/AbstractRoutingEngineTest.java  |  24 ++
 .../type/single/SingleTablesRoutingEngineTest.java |   8 +-
 .../ShardingStandardRoutingEngineTest.java         |  13 +
 .../ShardingCreateIndexStatementValidatorTest.java |  42 +-
 .../sharding/rule/ShardingRuleTest.java            |  61 +--
 ...ovidedShardingRuleConfigurationCheckerTest.java |  69 +++
 .../ShardingRuleConfigurationCheckerTest.java      |  69 +++
 .../shardingsphere-sharding-distsql}/pom.xml       |  46 +-
 .../src/main/antlr4/imports/sharding}/Alphabet.g4  |   0
 .../src/main/antlr4/imports/sharding}/Keyword.g4   | 138 +-----
 .../src/main/antlr4/imports/sharding}/Literals.g4  |   0
 .../main/antlr4/imports/sharding/RDLStatement.g4   | 100 +++++
 .../main/antlr4/imports/sharding}/RQLStatement.g4  |  20 +-
 .../src/main/antlr4/imports/sharding}/Symbol.g4    |   0
 .../parser/autogen/ShardingRuleStatement.g4        |  30 +-
 .../distsql/parser/core/ShardingRuleLexer.java     |  20 +-
 .../distsql/parser/core/ShardingRuleParser.java    |  12 +-
 .../core/ShardingRuleSQLStatementVisitor.java      | 193 +++++++++
 .../ShardingRuleSQLStatementParserFacade.java      |  29 +-
 .../AlterShardingBindingTableRulesStatement.java   |  12 +-
 .../AlterShardingBroadcastTableRulesStatement.java |   9 +-
 .../AlterShardingTableRuleStatement.java           |  11 +-
 .../CreateShardingBindingTableRulesStatement.java  |  11 +-
 ...CreateShardingBroadcastTableRulesStatement.java |   9 +-
 .../CreateShardingTableRuleStatement.java          |  10 +-
 .../DropShardingBindingTableRulesStatement.java    |   8 +-
 .../DropShardingBroadcastTableRulesStatement.java  |   8 +-
 .../statement}/DropShardingTableRuleStatement.java |  11 +-
 .../ShowShardingBindingTableRulesStatement.java    |   3 +-
 .../ShowShardingBroadcastTableRulesStatement.java  |   3 +-
 .../ShowShardingTableRulesStatement.java           |   3 +-
 .../segment}/ShardingBindingTableRuleSegment.java  |   2 +-
 .../statement}/segment/TableRuleSegment.java       |   7 +-
 ...distsql.parser.spi.RuleSQLStatementParserFacade |   2 +-
 .../ShardingRuleStatementParserEngineTest.java     | 216 ++++++++++
 .../rule/ShardingRuleBeanDefinitionParser.java     |  42 +-
 .../metadata/GovernanceMetaDataContexts.java       |   2 -
 .../watcher/MetaDataChangedWatcherTest.java        |  74 +++-
 .../api/config/AuthorityRuleConfiguration.java     |   8 +-
 .../authority/checker/AuthorityChecker.java        |  20 +-
 .../authority/constant/AuthorityOrder.java         |   5 -
 .../rule/builder/AuthorityRuleBuilder.java         |   2 +-
 .../DefaultAuthorityRuleConfigurationBuilder.java  |  12 +-
 .../authority/rule/builder/DefaultUser.java        |  18 +-
 ...der.level.DefaultKernelRuleConfigurationBuilder |   2 +-
 .../select/projection/engine/ProjectionEngine.java |   4 +-
 .../engine/ProjectionsContextEngine.java           |   2 +-
 .../statement/ddl/CreateIndexStatementContext.java |  14 +-
 .../statement/dml/SelectStatementContext.java      |  10 +-
 .../projection/engine/ProjectionEngineTest.java    |  23 +-
 .../config/scope/GlobalRuleConfiguration.java}     |   8 +-
 .../config/scope/SchemaRuleConfiguration.java}     |   8 +-
 .../shardingsphere/infra/datanode/DataNodes.java   |   9 +-
 .../metadata/{engine => }/MetadataRefresher.java   |   2 +-
 .../schema/builder/TableMetaDataBuilder.java       |  10 +-
 .../loader/dialect/H2TableMetaDataLoader.java      |   4 +-
 .../loader/dialect/MySQLTableMetaDataLoader.java   |   4 +-
 .../loader/dialect/OracleTableMetaDataLoader.java  |   4 +-
 .../dialect/PostgreSQLTableMetaDataLoader.java     |   4 +-
 .../dialect/SQLServerTableMetaDataLoader.java      |   4 +-
 .../schema/builder/util/IndexMetaDataUtil.java     |  73 ++++
 .../metadata/schema/refresher/SchemaRefresher.java |   2 +-
 .../type/CreateIndexStatementSchemaRefresher.java  |   6 +-
 .../rule/builder/ShardingSphereRulesBuilder.java   |   2 +-
 .../rule/builder/scope/GlobalRuleBuilder.java      |   5 +-
 .../rule/builder/scope/SchemaRuleBuilder.java      |  11 +-
 .../infra/spi/ordered/OrderedSPIRegistry.java      |   2 +
 .../infra/datanode/DataNodesTest.java              |   4 +-
 .../IndexMetaDataUtilTest.java}                    |  26 +-
 .../infra/rule/ShardingSphereRulesBuilderTest.java |   4 +-
 .../fixture/TestShardingSphereRuleBuilder.java     |   6 +-
 .../RuleConfigurationCheckerFactoryTest.java}      |  33 +-
 .../checker/RuleConfigurationCheckerFixture.java   |  29 +-
 .../infra/spi/ordered/OrderedSPIRegistryTest.java  |   5 +-
 ...ere.infra.rule.checker.RuleConfigurationChecker |   2 +-
 .../metadata/refresher}/MetadataRefreshEngine.java |  48 ++-
 .../refresher}/MetadataRefresherFactory.java       |  46 +-
 .../infra/context/fixture/FixtureRuleBuilder.java  |   4 +-
 .../refresher/MetadataRefresherFactoryTest.java    |  18 +-
 .../shardingsphere-infra-executor/pom.xml          |   2 +-
 .../infra/executor/check/SQLChecker.java           |  13 +-
 .../sql/execute/engine/raw/RawExecutor.java        |   8 +-
 .../sql/federate/execute/FederateExecutor.java     |  14 +-
 .../sql/federate/execute/FederateJDBCExecutor.java |  76 +++-
 .../federate/execute/raw/FederateRawExecutor.java  |  10 +-
 .../sql/federate/schema/FederateLogicSchema.java   |  10 +-
 .../federate/schema/row/FederateRowExecutor.java   |  22 +-
 .../schema/table/AbstractFederateTable.java        |   4 +-
 .../schema/table/FederateFilterableTable.java      |   4 +-
 .../optimize/context/OptimizeContextFactory.java   |  14 +-
 .../FederateSchemaMetadata.java}                   |  46 +-
 .../FederateSchemaMetadatas.java}                  |  32 +-
 .../FederateTableMetadata.java}                    |  27 +-
 .../metadata/refresher/FederateRefresher.java}     |  16 +-
 .../type/AlterTableStatementFederateRefresher.java |  87 ++++
 .../CreateTableStatementFederateRefresher.java     |  76 ++++
 .../AlterTableStatementFederateRefresherTest.java  | 218 ++++++++++
 .../shardingsphere-infra-rewrite/pom.xml           |  12 +-
 .../shardingsphere-infra-rewrite-engine/pom.xml    |  38 --
 .../shardingsphere-infra-rewrite-test/pom.xml      |  47 ---
 .../infra/rewrite/SQLRewriteEntry.java             |   0
 .../infra/rewrite/context/SQLRewriteContext.java   |   0
 .../context/SQLRewriteContextDecorator.java        |   0
 .../rewrite/engine/GenericSQLRewriteEngine.java    |   0
 .../rewrite/engine/RouteSQLRewriteEngine.java      |   0
 .../engine/result/GenericSQLRewriteResult.java     |   0
 .../engine/result/RouteSQLRewriteResult.java       |   0
 .../rewrite/engine/result/SQLRewriteResult.java    |   0
 .../rewrite/engine/result/SQLRewriteUnit.java      |   0
 .../parameter/builder/ParameterBuilder.java        |   0
 .../builder/impl/GroupedParameterBuilder.java      |   0
 .../builder/impl/StandardParameterBuilder.java     |   0
 .../parameter/rewriter/ParameterRewriter.java      |   0
 .../rewriter/ParameterRewriterBuilder.java         |   0
 .../infra/rewrite/sql/SQLBuilder.java              |   0
 .../infra/rewrite/sql/impl/AbstractSQLBuilder.java |   0
 .../infra/rewrite/sql/impl/DefaultSQLBuilder.java  |   0
 .../infra/rewrite/sql/impl/RouteSQLBuilder.java    |   0
 .../generator/CollectionSQLTokenGenerator.java     |   0
 .../token/generator/OptionalSQLTokenGenerator.java |   0
 .../sql/token/generator/SQLTokenGenerator.java     |   0
 .../sql/token/generator/SQLTokenGenerators.java    |   0
 .../sql/token/generator/aware/ParametersAware.java |   0
 .../generator/aware/PreviousSQLTokensAware.java    |   0
 .../token/generator/aware/RouteContextAware.java   |   0
 .../token/generator/aware/SchemaMetaDataAware.java |   0
 .../builder/DefaultTokenGeneratorBuilder.java      |   0
 .../builder/SQLTokenGeneratorBuilder.java          |   0
 .../generator/generic/RemoveTokenGenerator.java    |   0
 .../infra/rewrite/sql/token/pojo/Attachable.java   |   0
 .../rewrite/sql/token/pojo/RouteUnitAware.java     |   0
 .../infra/rewrite/sql/token/pojo/SQLToken.java     |   0
 .../rewrite/sql/token/pojo/Substitutable.java      |   0
 .../sql/token/pojo/generic/ComposableSQLToken.java |   0
 .../sql/token/pojo/generic/InsertColumnsToken.java |   0
 .../sql/token/pojo/generic/InsertValue.java        |   0
 .../sql/token/pojo/generic/InsertValuesToken.java  |   0
 .../rewrite/sql/token/pojo/generic/OwnerToken.java |   0
 .../sql/token/pojo/generic/RemoveToken.java        |   0
 .../pojo/generic/SubstitutableColumnNameToken.java |   0
 .../pojo/generic/UseDefaultInsertColumnsToken.java |   0
 .../infra/rewrite/SQLRewriteEntryTest.java         |   0
 .../rewrite/context/SQLRewriteContextTest.java     |   0
 .../engine/GenericSQLRewriteEngineTest.java        |   0
 .../rewrite/engine/RouteSQLRewriteEngineTest.java  |   0
 .../builder/impl/GroupedParameterBuilderTest.java  |   0
 .../builder/impl/StandardParameterBuilderTest.java |   0
 .../sql/fixture/RouteUnitAwareSQLTokenFixture.java |   0
 .../infra/rewrite/sql/fixture/SQLTokenFixture.java |   0
 .../rewrite/sql/impl/DefaultSQLBuilderTest.java    |   0
 .../rewrite/sql/impl/RouteSQLBuilderTest.java      |   0
 .../infra/rewrite/sql/token/pojo/SQLTokenTest.java |   0
 .../token/pojo/generic/ComposableSQLTokenTest.java |   0
 .../token/pojo/generic/InsertColumnsTokenTest.java |   0
 .../sql/token/pojo/generic/InsertValueTest.java    |   0
 .../sql/token/pojo/generic/OwnerTokenTest.java     |   0
 .../sql/token/pojo/generic/RemoveTokenTest.java    |   0
 .../generic/SubstitutableColumnNameTokenTest.java  |   0
 .../generic/UseDefaultInsertColumnsTokenTest.java  |   0
 .../driver/executor/JDBCLockEngine.java            |   5 +-
 .../jdbc/adapter/AbstractStatementAdapter.java     |   9 +-
 .../resultset/ShardingSphereResultSetMetaData.java |   3 +-
 .../statement/ShardingSpherePreparedStatement.java |  47 +--
 .../core/statement/ShardingSphereStatement.java    | 118 ++----
 ...actShardingSphereDataSourceForFederateTest.java |  25 ++
 .../statement/FederatePrepareStatementTest.java    | 107 ++++-
 .../jdbc/core/statement/FederateStatementTest.java | 138 ++++--
 .../GovernanceShardingSphereDataSource.java        |  12 +-
 .../communication/DatabaseCommunicationEngine.java |   6 +-
 .../backend/communication/ProxyLockEngine.java     |   2 +-
 .../backend/communication/ProxySQLExecutor.java    |  26 +-
 .../jdbc/recognizer/impl/H2Recognizer.java         |   2 +-
 .../jdbc/recognizer/impl/MySQLRecognizer.java      |   2 +-
 .../jdbc/recognizer/impl/OracleRecognizer.java     |   2 +-
 .../recognizer/impl/P6SpyDriverRecognizer.java     |   2 +-
 .../jdbc/recognizer/impl/PostgreSQLRecognizer.java |   2 +-
 .../exception/DuplicateBindingTablesException.java |  11 +-
 .../exception/InvalidKeyGeneratorsException.java   |  14 +-
 .../InvalidShardingAlgorithmsException.java        |  14 +-
 .../text/distsql/rdl/RDLBackendHandlerFactory.java |  40 +-
 .../rdl/impl/AddResourceBackendHandler.java        |   2 +-
 .../AlterDatabaseDiscoveryRuleBackendHandler.java  |  13 +-
 .../rdl/impl/AlterEncryptRuleBackendHandler.java   |  13 +-
 .../AlterReadwriteSplittingRuleBackendHandler.java |  11 +-
 ...terShardingBindingTableRulesBackendHandler.java |  27 +-
 ...rShardingBroadcastTableRulesBackendHandler.java |   2 +-
 .../impl/AlterShardingTableRuleBackendHandler.java |  45 +-
 .../CreateDatabaseDiscoveryRuleBackendHandler.java |  17 +-
 .../rdl/impl/CreateEncryptRuleBackendHandler.java  |  13 +-
 ...CreateReadwriteSplittingRuleBackendHandler.java |  11 +-
 ...ateShardingBindingTableRulesBackendHandler.java |  28 +-
 ...eShardingBroadcastTableRulesBackendHandler.java |   2 +-
 .../CreateShardingTableRuleBackendHandler.java     |  65 ++-
 .../DropDatabaseDiscoveryRuleBackendHandler.java   |   2 +-
 .../rdl/impl/DropEncryptRuleBackendHandler.java    |   2 +-
 .../DropReadwriteSplittingRuleBackendHandler.java  |   2 +-
 .../rdl/impl/DropResourceBackendHandler.java       |   4 +-
 ...ropShardingBindingTableRulesBackendHandler.java |   2 +-
 ...pShardingBroadcastTableRulesBackendHandler.java |   2 +-
 .../impl/DropShardingTableRuleBackendHandler.java  |   2 +-
 .../text/distsql/rql/RQLBackendHandlerFactory.java |  12 +-
 .../DatabaseDiscoveryRulesQueryBackendHandler.java |   2 +-
 .../rql/impl/EncryptRulesQueryBackendHandler.java  |   2 +-
 ...ReadwriteSplittingRulesQueryBackendHandler.java |   4 +-
 ...ardingBindingTableRulesQueryBackendHandler.java |   2 +-
 ...dingBroadcastTableRulesQueryBackendHandler.java |   2 +-
 .../ShardingTableRulesQueryBackendHandler.java     |   2 +-
 .../jdbc/recognizer/impl/H2RecognizerTest.java     |   2 +-
 .../jdbc/recognizer/impl/MySQLRecognizerTest.java  |   2 +-
 .../jdbc/recognizer/impl/OracleRecognizerTest.java |   2 +-
 .../recognizer/impl/P6SpyDriverRecognizerTest.java |   2 +-
 .../recognizer/impl/PostgreSQLRecognizerTest.java  |   2 +-
 .../transaction/LocalTransactionManagerTest.java   |  90 ++++
 .../text/distsql/RDLBackendHandlerFactoryTest.java |  12 +-
 .../rdl/impl/AddResourceBackendHandlerTest.java    |   2 +-
 ...terDatabaseDiscoveryRuleBackendHandlerTest.java |  12 +-
 .../impl/AlterEncryptRuleBackendHandlerTest.java   |  57 ++-
 ...erReadwriteSplittingRuleBackendHandlerTest.java |  18 +-
 ...hardingBindingTableRulesBackendHandlerTest.java |  47 ++-
 ...rdingBroadcastTableRulesBackendHandlerTest.java |  14 +-
 .../AlterShardingTableRuleBackendHandlerTest.java  |  45 +-
 ...ateDatabaseDiscoveryRuleBackendHandlerTest.java |  14 +-
 .../impl/CreateEncryptRuleBackendHandlerTest.java  |  35 +-
 ...teReadwriteSplittingRuleBackendHandlerTest.java |  22 +-
 ...hardingBindingTableRulesBackendHandlerTest.java |  51 ++-
 ...rdingBroadcastTableRulesBackendHandlerTest.java |  19 +-
 .../CreateShardingTableRuleBackendHandlerTest.java |  33 +-
 .../rdl/impl/DropDatabaseBackendHandlerTest.java   |   4 +-
 ...ropDatabaseDiscoveryRuleBackendHandlerTest.java |  15 +-
 .../impl/DropEncryptRuleBackendHandlerTest.java    |  26 +-
 ...opReadwriteSplittingRuleBackendHandlerTest.java |  18 +-
 ...hardingBindingTableRulesBackendHandlerTest.java |  25 +-
 ...rdingBroadcastTableRulesBackendHandlerTest.java |  22 +-
 .../DropShardingTableRuleBackendHandlerTest.java   |  40 +-
 ...abaseDiscoveryRulesQueryBackendHandlerTest.java |   2 +-
 .../impl/EncryptRulesQueryBackendHandlerTest.java  |   2 +-
 ...writeSplittingRulesQueryBackendHandlerTest.java |  28 +-
 ...ngBindingTableRulesQueryBackendHandlerTest.java |   2 +-
 ...BroadcastTableRulesQueryBackendHandlerTest.java |   2 +-
 .../ShardingTableRulesQueryBackendHandlerTest.java |   2 +-
 ...guration.java => RuleConfigurationFixture.java} |   2 +-
 ...tion.java => YamlRuleConfigurationFixture.java} |   4 +-
 ...va => YamlRuleConfigurationSwapperFixture.java} |  26 +-
 .../impl/StandardBootstrapInitializerTest.java     |  10 +-
 ...e.shardingsphere.infra.config.RuleConfiguration |   2 +-
 ...infra.yaml.swapper.YamlRuleConfigurationSwapper |   2 +-
 .../converter/AddResourcesStatementConverter.java  |   2 +-
 .../AddResourcesStatementConverterTest.java        |   2 +-
 .../frontend/command/CommandExecutorTask.java      |   2 +-
 .../netty/FrontendChannelInboundHandler.java       |   4 +-
 .../state/impl/CircuitBreakProxyState.java         |   2 +-
 .../frontend/command/CommandExecutorTaskTest.java  |   2 +-
 .../mysql/command/MySQLCommandExecuteEngine.java   |   2 +-
 .../binary/reset/MySQLComStmtResetExecutor.java    |   2 +-
 .../frontend/mysql/err/MySQLErrPacketFactory.java  |  12 +
 .../mysql/err/MySQLErrPacketFactoryTest.java       |   2 +-
 .../command/PostgreSQLCommandExecuteEngine.java    |   9 +-
 .../PostgreSQLConnectionContextRegistry.java       |  64 +++
 .../command/query/PostgreSQLCommand.java           |   4 +-
 .../binary/bind/PostgreSQLComBindExecutor.java     |  35 +-
 .../binary/close/PostgreSQLComCloseExecutor.java   |   6 +-
 .../execute/PostgreSQLComExecuteExecutor.java      |   5 +-
 .../binary/sync/PostgreSQLComSyncExecutor.java     |   2 +-
 .../query/text/PostgreSQLComQueryExecutor.java     |   6 +-
 .../command/query/PostgreSQLCommandTest.java       |   4 +-
 .../binary/bind/PostgreSQLComBindExecutorTest.java |  15 +-
 .../frontend/command/CommandExecuteEngine.java     |   3 +-
 .../sql/parser/mysql/parser/MySQLParser.java       |   2 +-
 .../sql/parser/mysql/parser/MySQLParserFacade.java |  14 +-
 .../impl/MySQLDCLStatementSQLVisitor.java          |  15 +-
 ...re.sql.parser.spi.DatabaseTypedSQLParserFacade} |   0
 .../sql/parser/mysql/MySQLFormatTest.java          |   2 +-
 .../sql/parser/mysql/MySQLParameterizedTest.java   |   2 +-
 .../sql/parser/mysql/MySQLTableVistorTest.java     |   2 +-
 .../src/main/antlr4/imports/oracle/BaseRule.g4     |  63 ++-
 .../src/main/antlr4/imports/oracle/DDLStatement.g4 |  19 +
 .../src/main/antlr4/imports/oracle/DMLStatement.g4 | 224 +++++++++-
 .../main/antlr4/imports/oracle/OracleKeyword.g4    | 216 ++++++++++
 .../src/main/antlr4/imports/oracle/TCLStatement.g4 |   4 +
 .../sql/parser/autogen/OracleStatement.g4          |   2 +
 .../sql/parser/oracle/parser/OracleParser.java     |   2 +-
 .../parser/oracle/parser/OracleParserFacade.java   |  14 +-
 .../impl/OracleDDLStatementSQLVisitor.java         |  14 +
 .../impl/OracleDMLStatementSQLVisitor.java         |  30 ++
 .../statement/impl/OracleStatementSQLVisitor.java  |   2 +-
 .../impl/OracleTCLStatementSQLVisitor.java         |   9 +-
 ...re.sql.parser.spi.DatabaseTypedSQLParserFacade} |   0
 .../parser/postgresql/parser/PostgreSQLParser.java |   2 +-
 .../postgresql/parser/PostgreSQLParserFacade.java  |  14 +-
 .../impl/PostgreSQLDDLStatementSQLVisitor.java     |  17 +
 ...re.sql.parser.spi.DatabaseTypedSQLParserFacade} |   0
 .../sql/parser/sql92/parser/SQL92Parser.java       |   2 +-
 .../sql/parser/sql92/parser/SQL92ParserFacade.java |  14 +-
 ...re.sql.parser.spi.DatabaseTypedSQLParserFacade} |   0
 .../parser/sqlserver/parser/SQLServerParser.java   |   2 +-
 .../sqlserver/parser/SQLServerParserFacade.java    |  14 +-
 .../impl/SQLServerDMLStatementSQLVisitor.java      |   2 +-
 ...re.sql.parser.spi.DatabaseTypedSQLParserFacade} |   0
 .../sql/parser/api/SQLParserEngine.java            |   4 +-
 .../sql/parser/api/SQLVisitorEngine.java           |   6 +-
 .../sql/parser/core/{parser => }/ParseASTNode.java |   2 +-
 .../parser/core/{parser => }/SQLParserFactory.java |  17 +-
 .../cache/ParseTreeCacheBuilder.java               |   2 +-
 .../{ => database}/cache/ParseTreeCacheLoader.java |   4 +-
 .../DatabaseTypedSQLParserFacadeRegistry.java      |  53 +++
 .../{ => database}/parser/SQLParserExecutor.java   |  18 +-
 .../visitor/SQLVisitorFacadeRegistry.java          |   2 +-
 .../{ => database}/visitor/SQLVisitorFactory.java  |   2 +-
 .../{ => database}/visitor/SQLVisitorRule.java     |   8 +-
 .../core/parser/SQLParserFacadeRegistry.java       |  62 ---
 ...LVisitorRuleTest.java => ParseASTNodeTest.java} |  17 +-
 .../cache/ParseTreeCacheBuilderTest.java           |   4 +-
 .../cache/ParseTreeCacheLoaderTest.java            |   8 +-
 .../{ => database}/visitor/SQLVisitorRuleTest.java |   2 +-
 .../core/{ => database}/visitor/SelectContext.java |   2 +-
 .../parser/spi/DatabaseTypedSQLParserFacade.java   |  14 +-
 .../sql/parser/spi/SQLParserFacade.java            |   7 -
 .../common/statement/ddl/CreateIndexStatement.java |   6 +
 .../sql/common/statement/dml/SelectStatement.java  |  12 +
 .../statement/tcl/SetConstraintsStatement.java     |   8 +-
 .../parser/sql/common/util/ExpressionBuilder.java  |   2 +-
 .../sql/parser/sql/common/util/SQLUtil.java        |  16 +-
 ...tionUtils.java => SafeNumberOperationUtil.java} |   2 +-
 .../sql/common/util/SubqueryExtractUtil.java       | 106 +++++
 .../parser/sql/common/util/WhereExtractUtil.java   |  72 ++++
 .../sql/common/util/WhereSegmentExtractUtils.java  | 135 ------
 .../handler/ddl/CreateIndexStatementHandler.java   |  47 +++
 .../handler/dml/SelectStatementHandler.java        |  14 +
 .../oracle/ddl/OracleAnalyzeStatement.java}        |  10 +-
 .../tcl/OracleSetConstraintsStatement.java}        |  10 +-
 .../ddl/PostgreSQLCreateIndexStatement.java        |  15 +
 ...sTest.java => SafeNumberOperationUtilTest.java} |  62 +--
 .../asserts/segment/with/WithClauseAssert.java     |   4 +
 .../asserts/statement/ddl/DDLStatementAssert.java  |   5 +
 .../statement/ddl/impl/AnalyzeStatementAssert.java |  57 +++
 .../statement/dml/impl/SelectStatementAssert.java  |  13 +
 .../asserts/statement/tcl/TCLStatementAssert.java  |   5 +
 .../tcl/impl/SetConstraintsStatementAssert.java    |  21 +-
 .../jaxb/cases/domain/SQLParserTestCases.java      |  10 +
 .../statement/ddl/AnalyzeStatementTestCase.java    |  31 +-
 .../statement/dml/SelectStatementTestCase.java     |   4 +
 .../tcl/SetConstraintsStatementTestCase.java       |   8 +-
 .../src/main/resources/case/ddl/analyze.xml        |  57 +++
 .../src/main/resources/case/dml/delete.xml         |   4 +-
 .../src/main/resources/case/dml/insert.xml         |   4 +-
 .../src/main/resources/case/dml/select-with.xml    | 310 ++++++++++++++
 .../main/resources/case/tcl/set-constraints.xml    |  17 +-
 .../resources/sql/supported/ddl/alter-database.xml |  28 ++
 .../resources/sql/supported/ddl/alter-function.xml |  20 +-
 .../resources/sql/supported/ddl/alter-index.xml    |  38 ++
 .../sql/supported/ddl/alter-procedure.xml          |  26 ++
 .../resources/sql/supported/ddl/alter-sequence.xml |  15 +-
 .../resources/sql/supported/ddl/alter-session.xml  |  27 ++
 .../resources/sql/supported/ddl/alter-synonym.xml  |  17 +-
 .../resources/sql/supported/ddl/alter-system.xml   |  41 ++
 .../supported/ddl/{alter.xml => alter-table.xml}   |  82 ----
 .../main/resources/sql/supported/ddl/analyze.xml   |  30 ++
 .../sql/supported/ddl/create-database.xml          |  23 +-
 .../sql/supported/ddl/create-function.xml          |  37 ++
 .../resources/sql/supported/ddl/create-index.xml   |  48 +++
 .../sql/supported/ddl/create-procedure.xml         |  20 +-
 .../sql/supported/ddl/create-sequence.xml          |  17 +-
 .../supported/ddl/{create.xml => create-table.xml} | 118 ------
 .../resources/sql/supported/ddl/create-view.xml    |  27 +-
 .../resources/sql/supported/ddl/drop-database.xml  |  16 +-
 .../resources/sql/supported/ddl/drop-function.xml  |  17 +-
 .../resources/sql/supported/ddl/drop-index.xml     |  35 ++
 .../resources/sql/supported/ddl/drop-procedure.xml |  15 +-
 .../resources/sql/supported/ddl/drop-sequence.xml  |  15 +-
 .../resources/sql/supported/ddl/drop-table.xml     |  35 ++
 .../main/resources/sql/supported/ddl/drop-view.xml |  15 +-
 .../src/main/resources/sql/supported/ddl/drop.xml  |  63 ---
 .../resources/sql/supported/dml/select-with.xml    |  25 ++
 .../sql/supported/tcl/set-constraints.xml          |  17 +-
 .../integration/scaling/test/mysql/ScalingIT.java  |  26 +-
 .../test/mysql/env/ITEnvironmentContext.java       |  89 ++++
 .../scaling/test/mysql/env/cases/DataSet.java      |  16 +-
 .../scaling/test/mysql/env/cases/Type.java         |  50 ++-
 .../config/SourceConfiguration.java}               |  57 +--
 .../config/TargetConfiguration.java}               |  52 ++-
 .../scaling/test/mysql/fixture/DataImporter.java   |  78 ++++
 .../test/mysql/fixture/FixtureWriteThread.java     | 109 -----
 .../scaling/test/mysql/util/ScalingUtil.java       |  13 +-
 .../src/test/resources/cases/mysql/types.xml       |  28 +-
 .../src/test/resources/env/mysql/init.sql          |   2 -
 .../shardingsphere-rewrite-test/pom.xml            |   6 -
 .../AbstractSQLRewriterParameterizedTest.java      |   4 +-
 .../parameter/SQLRewriteEngineTestParameters.java  |   2 +-
 .../SQLRewriteEngineTestParametersBuilder.java     |  10 +-
 .../entity/RewriteAssertionEntity.java             |   2 +-
 .../entity/RewriteAssertionsRootEntity.java        |   2 +-
 .../parameterized/entity/RewriteInputEntity.java   |   2 +-
 .../parameterized/entity/RewriteOutputEntity.java  |   2 +-
 .../loader/RewriteAssertionsRootEntityLoader.java  |   4 +-
 .../EncryptSQLRewriterParameterizedTest.java       |  12 +-
 .../MixSQLRewriterParameterizedTest.java           |  12 +-
 .../ShardingSQLRewriterParameterizedTest.java      |  12 +-
 .../encrypt/case}/alter_for_query_with_plain.xml   |   2 +-
 .../encrypt/case}/create_for_query_with_plain.xml  |   2 +-
 .../encrypt/case}/delete_for_query_with_cipher.xml |   2 +-
 .../encrypt/case}/delete_for_query_with_plain.xml  |   2 +-
 .../{encrypt => scenario/encrypt/case}/insert.xml  |   2 +-
 .../encrypt/case}/select_for_query_with_cipher.xml |   2 +-
 .../encrypt/case}/select_for_query_with_plain.xml  |   2 +-
 .../encrypt/case}/update_for_query_with_cipher.xml |   2 +-
 .../encrypt/case}/update_for_query_with_plain.xml  |   2 +-
 .../encrypt/config}/query-with-cipher.yaml         |   0
 .../encrypt/config}/query-with-plain.yaml          |   0
 .../{mix => scenario/mix/case}/create.xml          |   2 +-
 .../mix/case}/delete_for_query_with_cipher.xml     |   2 +-
 .../mix/case}/delete_for_query_with_plain.xml      |   2 +-
 .../{mix => scenario/mix/case}/insert.xml          |   2 +-
 .../mix/case}/select_for_query_with_cipher.xml     |   2 +-
 .../mix/case}/select_for_query_with_plain.xml      |   2 +-
 .../mix/case}/update_for_query_with_cipher.xml     |   2 +-
 .../mix/case}/update_for_query_with_plain.xml      |   2 +-
 .../mix/config}/query-with-cipher.yaml             |   0
 .../mix/config}/query-with-plain.yaml              |   0
 .../{sharding => scenario/sharding/case}/alter.xml |   2 +-
 .../sharding/case}/analyze.xml                     |   2 +-
 .../sharding/case}/create.xml                      |   2 +-
 .../sharding/case}/delete.xml                      |   2 +-
 .../{sharding => scenario/sharding/case}/drop.xml  |   2 +-
 .../{sharding => scenario/sharding/case}/index.xml |  14 +-
 .../sharding/case}/insert.xml                      |   2 +-
 .../sharding/case}/select.xml                      |   2 +-
 .../{sharding => scenario/sharding/case}/show.xml  |   2 +-
 .../sharding/case}/update.xml                      |   2 +-
 .../sharding/config}/sharding-rule.yaml            |   0
 726 files changed, 9620 insertions(+), 4987 deletions(-)
 delete mode 100644 docs/document/content/features/dist-sql/rdl.en.md
 delete mode 100644 docs/document/content/features/dist-sql/rql.cn.md
 delete mode 100644 docs/document/content/features/dist-sql/rql.en.md
 create mode 100644 docs/document/content/features/dist-sql/syntax/_index.cn.md
 create mode 100644 docs/document/content/features/dist-sql/syntax/_index.en.md
 create mode 100644 docs/document/content/features/dist-sql/syntax/rdl/_index.cn.md
 create mode 100644 docs/document/content/features/dist-sql/syntax/rdl/_index.en.md
 create mode 100644 docs/document/content/features/dist-sql/syntax/rdl/rdl-db-discovery-rule.cn.md
 create mode 100644 docs/document/content/features/dist-sql/syntax/rdl/rdl-db-discovery-rule.en.md
 create mode 100644 docs/document/content/features/dist-sql/syntax/rdl/rdl-encrypt-rule.cn.md
 create mode 100644 docs/document/content/features/dist-sql/syntax/rdl/rdl-encrypt-rule.en.md
 create mode 100644 docs/document/content/features/dist-sql/syntax/rdl/rdl-readwrite-splitting-rule.cn.md
 create mode 100644 docs/document/content/features/dist-sql/syntax/rdl/rdl-readwrite-splitting-rule.en.md
 create mode 100644 docs/document/content/features/dist-sql/syntax/rdl/rdl-resource.cn.md
 create mode 100644 docs/document/content/features/dist-sql/syntax/rdl/rdl-resource.en.md
 create mode 100644 docs/document/content/features/dist-sql/syntax/rdl/rdl-sharding-rule.cn.md
 create mode 100644 docs/document/content/features/dist-sql/syntax/rdl/rdl-sharding-rule.en.md
 create mode 100644 docs/document/content/features/dist-sql/syntax/rql/_index.cn.md
 create mode 100644 docs/document/content/features/dist-sql/syntax/rql/_index.en.md
 create mode 100644 docs/document/content/features/dist-sql/syntax/rql/rql-db-discovery-rule.cn.md
 create mode 100644 docs/document/content/features/dist-sql/syntax/rql/rql-db-discovery-rule.en.md
 create mode 100644 docs/document/content/features/dist-sql/syntax/rql/rql-encrypt-rule.cn.md
 create mode 100644 docs/document/content/features/dist-sql/syntax/rql/rql-encrypt-rule.en.md
 create mode 100644 docs/document/content/features/dist-sql/syntax/rql/rql-readwrite-splitting-rule.cn.md
 create mode 100644 docs/document/content/features/dist-sql/syntax/rql/rql-readwrite-splitting-rule.en.md
 create mode 100644 docs/document/content/features/dist-sql/syntax/rql/rql-resource.cn.md
 create mode 100644 docs/document/content/features/dist-sql/syntax/rql/rql-resource.en.md
 create mode 100644 docs/document/content/features/dist-sql/syntax/rql/rql-sharding-rule.cn.md
 create mode 100644 docs/document/content/features/dist-sql/syntax/rql/rql-sharding-rule.en.md
 create mode 100644 docs/document/content/features/dist-sql/syntax/sctl/_index.cn.md
 create mode 100644 docs/document/content/features/dist-sql/syntax/sctl/_index.en.md
 rename docs/document/content/features/dist-sql/{ => syntax/sctl}/sctl.cn.md (85%)
 rename docs/document/content/features/dist-sql/{ => syntax/sctl}/sctl.en.md (99%)
 create mode 100644 docs/document/content/features/dist-sql/usage/_index.cn.md
 create mode 100644 docs/document/content/features/dist-sql/usage/_index.en.md
 rename docs/document/content/features/dist-sql/{rdl.cn.md => usage/sharding-rule.cn.md} (50%)
 create mode 100644 docs/document/content/features/dist-sql/usage/sharding-rule.en.md
 copy shardingsphere-infra/shardingsphere-infra-rewrite/shardingsphere-infra-rewrite-engine/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/pojo/SQLToken.java => shardingsphere-db-protocol/shardingsphere-db-protocol-postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/constant/PostgreSQLColumnFormat.java (59%)
 delete mode 100644 shardingsphere-db-protocol/shardingsphere-db-protocol-postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/binary/bind/PostgreSQLBinaryResultSetRowPacket.java
 delete mode 100644 shardingsphere-db-protocol/shardingsphere-db-protocol-postgresql/src/test/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/binary/bind/PostgreSQLBinaryResultSetRowPacketTest.java
 create mode 100644 shardingsphere-distribution/shardingsphere-proxy-distribution/src/main/release-docs/licenses/LICENSE-Janino.txt
 create mode 100644 shardingsphere-distribution/shardingsphere-proxy-distribution/src/main/release-docs/licenses/LICENSE-asm.txt
 create mode 100644 shardingsphere-distribution/shardingsphere-proxy-distribution/src/main/release-docs/licenses/LICENSE-mchange-commons-java.txt
 create mode 100644 shardingsphere-distribution/shardingsphere-scaling-distribution/src/main/release-docs/licenses/LICENSE-Janino.txt
 create mode 100644 shardingsphere-distribution/shardingsphere-scaling-distribution/src/main/release-docs/licenses/LICENSE-asm.txt
 create mode 100644 shardingsphere-distribution/shardingsphere-scaling-distribution/src/main/release-docs/licenses/LICENSE-mchange-commons-java.txt
 copy shardingsphere-distribution/{shardingsphere-proxy-distribution => shardingsphere-scaling-distribution}/src/main/release-docs/licenses/LICENSE-protobuf-java.txt (100%)
 copy shardingsphere-infra/shardingsphere-infra-rewrite/shardingsphere-infra-rewrite-engine/src/main/java/org/apache/shardingsphere/infra/rewrite/engine/result/GenericSQLRewriteResult.java => shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/antlr4/org/apache/shardingsphere/distsql/parser/autogen/ResourceStatement.g4 (71%)
 delete mode 100644 shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/java/org/apache/shardingsphere/distsql/parser/core/DistSQLParserFactory.java
 delete mode 100644 shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/java/org/apache/shardingsphere/distsql/parser/core/DistSQLVisitor.java
 copy shardingsphere-infra/shardingsphere-infra-rewrite/shardingsphere-infra-rewrite-engine/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/pojo/SQLToken.java => shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/java/org/apache/shardingsphere/distsql/parser/core/resource/ResourceDistSQLLexer.java (64%)
 copy shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/java/org/apache/shardingsphere/distsql/parser/core/{DistSQLParser.java => resource/ResourceDistSQLParser.java} (73%)
 create mode 100644 shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/java/org/apache/shardingsphere/distsql/parser/core/resource/ResourceDistSQLStatementVisitor.java
 create mode 100644 shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/java/org/apache/shardingsphere/distsql/parser/core/resource/ResourceSQLStatementParserEngine.java
 copy shardingsphere-infra/shardingsphere-infra-rewrite/shardingsphere-infra-rewrite-engine/src/main/java/org/apache/shardingsphere/infra/rewrite/engine/result/SQLRewriteUnit.java => shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/java/org/apache/shardingsphere/distsql/parser/core/rule/RuleParseASTNode.java (77%)
 create mode 100644 shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/java/org/apache/shardingsphere/distsql/parser/core/rule/RuleSQLStatementParserEngine.java
 copy shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-core/src/main/java/org/apache/shardingsphere/dbdiscovery/constant/DatabaseDiscoveryOrder.java => shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/java/org/apache/shardingsphere/distsql/parser/spi/RuleSQLStatementParserFacade.java (63%)
 copy shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/segment/{FunctionSegment.java => AlgorithmSegment.java} (82%)
 copy shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/{drop/DropRDLStatement.java => alter/AlterRuleStatement.java} (84%)
 rename shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/create/{impl => }/AddResourceStatement.java (87%)
 rename shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/create/{CreateRDLStatement.java => CreateRuleStatement.java} (91%)
 copy shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/drop/{impl => }/DropResourceStatement.java (78%)
 copy shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/drop/{DropRDLStatement.java => DropRuleStatement.java} (91%)
 rename shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-core/src/main/java/org/apache/shardingsphere/dbdiscovery/rule/{biulder => builder}/AlgorithmProvidedDatabaseDiscoveryRuleBuilder.java (89%)
 rename shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-core/src/main/java/org/apache/shardingsphere/dbdiscovery/rule/{biulder => builder}/DatabaseDiscoveryRuleBuilder.java (94%)
 rename shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-core/src/test/java/org/apache/shardingsphere/dbdiscovery/rule/{biulder => builder}/AlgorithmProvidedDatabaseDiscoveryRuleBuilderTest.java (97%)
 rename shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-core/src/test/java/org/apache/shardingsphere/dbdiscovery/rule/{biulder => builder}/DatabaseDiscoveryRuleBuilderTest.java (97%)
 create mode 100644 shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-core/src/test/java/org/apache/shardingsphere/dbdiscovery/rule/checker/DatabaseDiscoveryRuleConfigurationCheckerTest.java
 copy shardingsphere-features/shardingsphere-db-discovery/{shardingsphere-db-discovery-core => shardingsphere-db-discovery-distsql}/pom.xml (62%)
 copy {shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/imports/sqlserver => shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/src/main/antlr4/imports/db-discovery}/Alphabet.g4 (100%)
 rename shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/segment/FunctionSegment.java => shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/src/main/antlr4/imports/db-discovery/Keyword.g4 (63%)
 copy {shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/antlr4/imports => shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/src/main/antlr4/imports/db-discovery}/Literals.g4 (100%)
 copy shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/antlr4/imports/RQLStatement.g4 => shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/src/main/antlr4/imports/db-discovery/RDLStatement.g4 (52%)
 copy shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/test/java/org/apache/shardingsphere/sql/parser/core/visitor/SelectContext.java => shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/src/main/antlr4/imports/db-discovery/RQLStatement.g4 (82%)
 copy {shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/antlr4/imports => shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/src/main/antlr4/imports/db-discovery}/Symbol.g4 (100%)
 copy shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/drop/DropRDLStatement.java => shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/src/main/antlr4/org/apache/shardingsphere/distsql/parser/autogen/DatabaseDiscoveryRuleStatement.g4 (76%)
 copy shardingsphere-infra/shardingsphere-infra-rewrite/shardingsphere-infra-rewrite-engine/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/pojo/SQLToken.java => shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/parser/core/DatabaseDiscoveryRuleLexer.java (62%)
 copy shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/java/org/apache/shardingsphere/distsql/parser/core/DistSQLParser.java => shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/parser/core/DatabaseDiscoveryRuleParser.java (71%)
 create mode 100644 shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/parser/core/DatabaseDiscoveryRuleSQLStatementVisitor.java
 copy shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/parser/OracleParserFacade.java => shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/parser/facade/DatabaseDiscoveryRuleSQLStatementParserFacade.java (53%)
 rename {shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/alter => shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/parser/statement}/AlterDatabaseDiscoveryRuleStatement.java (70%)
 rename {shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/create/impl => shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/parser/statement}/CreateDatabaseDiscoveryRuleStatement.java (79%)
 rename {shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/drop/impl => shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/parser/statement}/DropDatabaseDiscoveryRuleStatement.java (82%)
 rename {shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show => shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/parser/statement}/ShowDatabaseDiscoveryRulesStatement.java (87%)
 rename {shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/segment/rdl => shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/parser/statement/segment}/DatabaseDiscoveryRuleSegment.java (94%)
 copy shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLParserFacade => shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.parser.spi.RuleSQLStatementParserFacade (88%)
 create mode 100644 shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/src/test/java/org/apache/shardingsphere/dbdiscovery/distsql/parser/core/DatabaseDiscoveryRuleStatementParserEngineTest.java
 create mode 100644 shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/rule/checker/AlgorithmProvidedEncryptRuleConfigurationCheckerTest.java
 create mode 100644 shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/rule/checker/EncryptRuleConfigurationCheckerTest.java
 copy shardingsphere-features/shardingsphere-encrypt/{shardingsphere-encrypt-core => shardingsphere-encrypt-distsql}/pom.xml (63%)
 copy {shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/imports/sqlserver => shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/src/main/antlr4/imports/encrypt}/Alphabet.g4 (100%)
 copy shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/segment/TableRuleSegment.java => shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/src/main/antlr4/imports/encrypt/Keyword.g4 (57%)
 copy {shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/antlr4/imports => shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/src/main/antlr4/imports/encrypt}/Literals.g4 (100%)
 create mode 100644 shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/src/main/antlr4/imports/encrypt/RDLStatement.g4
 copy shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/test/java/org/apache/shardingsphere/sql/parser/core/visitor/SelectContext.java => shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/src/main/antlr4/imports/encrypt/RQLStatement.g4 (76%)
 copy {shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/antlr4/imports => shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/src/main/antlr4/imports/encrypt}/Symbol.g4 (100%)
 copy shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/test/java/org/apache/shardingsphere/sql/parser/core/visitor/SelectContext.java => shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/src/main/antlr4/org/apache/shardingsphere/distsql/parser/autogen/EncryptRuleStatement.g4 (80%)
 copy shardingsphere-infra/shardingsphere-infra-rewrite/shardingsphere-infra-rewrite-engine/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/pojo/SQLToken.java => shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/src/main/java/org/apache/shardingsphere/encrypt/distsql/parser/core/EncryptRuleLexer.java (64%)
 copy shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/java/org/apache/shardingsphere/distsql/parser/core/DistSQLParser.java => shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/src/main/java/org/apache/shardingsphere/encrypt/distsql/parser/core/EncryptRuleParser.java (73%)
 create mode 100644 shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/src/main/java/org/apache/shardingsphere/encrypt/distsql/parser/core/EncryptRuleSQLStatementVisitor.java
 copy shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/parser/OracleParserFacade.java => shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/src/main/java/org/apache/shardingsphere/encrypt/distsql/parser/facade/EncryptRuleSQLStatementParserFacade.java (55%)
 rename {shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/alter => shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/src/main/java/org/apache/shardingsphere/encrypt/distsql/parser/statement}/AlterEncryptRuleStatement.java (71%)
 rename {shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/create/impl => shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/src/main/java/org/apache/shardingsphere/encrypt/distsql/parser/statement}/CreateEncryptRuleStatement.java (76%)
 rename {shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/drop/impl => shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/src/main/java/org/apache/shardingsphere/encrypt/distsql/parser/statement}/DropEncryptRuleStatement.java (86%)
 rename {shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show => shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/src/main/java/org/apache/shardingsphere/encrypt/distsql/parser/statement}/ShowEncryptRulesStatement.java (88%)
 rename {shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/segment/rdl => shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/src/main/java/org/apache/shardingsphere/encrypt/distsql/parser/statement/segment}/EncryptColumnSegment.java (85%)
 copy {shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/segment/rdl => shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/src/main/java/org/apache/shardingsphere/encrypt/distsql/parser/statement/segment}/EncryptRuleSegment.java (94%)
 copy shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLParserFacade => shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.parser.spi.RuleSQLStatementParserFacade (89%)
 create mode 100644 shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/src/test/java/org/apache/shardingsphere/encrypt/distsql/parser/core/EncryptRuleStatementParserEngineTest.java
 rename shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/{biulder => builder}/AlgorithmProvidedReadwriteSplittingRuleBuilder.java (78%)
 rename shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/{biulder => builder}/ReadwriteSplittingRuleBuilder.java (86%)
 rename shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/{ => org/apache/shardingsphere/readwritesplitting}/algorithm/RandomReplicaLoadBalanceAlgorithmTest.java (94%)
 rename shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/{ => org/apache/shardingsphere/readwritesplitting}/algorithm/RoundRobinReplicaLoadBalanceAlgorithmTest.java (95%)
 rename shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/{ => org/apache/shardingsphere/readwritesplitting}/route/ReadwriteSplittingSQLRouterTest.java (99%)
 rename shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/{ => org/apache/shardingsphere/readwritesplitting}/rule/ReadwriteSplittingDataSourceRuleTest.java (97%)
 rename shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/{ => org/apache/shardingsphere/readwritesplitting}/rule/ReadwriteSplittingRuleTest.java (96%)
 rename shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/{rule/biulder => org/apache/shardingsphere/readwritesplitting/rule/builder}/AlgorithmProvidedReadwriteSplittingRuleBuilderTest.java (97%)
 rename shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/{rule/biulder => org/apache/shardingsphere/readwritesplitting/rule/builder}/ReadwriteSplittingRuleBuilderTest.java (97%)
 create mode 100644 shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/checker/AlgorithmProvidedReadwriteSplittingRuleConfigurationCheckerTest.java
 create mode 100644 shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/checker/ReadwriteSplittingRuleConfigurationCheckerTest.java
 rename shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/{ => org/apache/shardingsphere/readwritesplitting}/swapper/ReadwriteSplittingRuleAlgorithmProviderConfigurationYamlSwapperTest.java (98%)
 rename shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/{ => org/apache/shardingsphere/readwritesplitting}/swapper/ReadwriteSplittingRuleConfigurationYamlSwapperTest.java (94%)
 rename shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/test/java/{ => org/apache/shardingsphere/readwritesplitting}/swapper/YamlRootRuleConfigurationsForYamlReadwriteSplittingRuleConfigurationTest.java (98%)
 copy shardingsphere-features/shardingsphere-readwrite-splitting/{shardingsphere-readwrite-splitting-core => shardingsphere-readwrite-splitting-distsql}/pom.xml (62%)
 copy {shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/imports/sqlserver => shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/src/main/antlr4/imports/readwrite-splitting}/Alphabet.g4 (100%)
 copy shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/OracleStatement.g4 => shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/src/main/antlr4/imports/readwrite-splitting/Keyword.g4 (56%)
 copy {shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/antlr4/imports => shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/src/main/antlr4/imports/readwrite-splitting}/Literals.g4 (100%)
 create mode 100644 shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/src/main/antlr4/imports/readwrite-splitting/RDLStatement.g4
 copy shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/test/java/org/apache/shardingsphere/sql/parser/core/visitor/SelectContext.java => shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/src/main/antlr4/imports/readwrite-splitting/RQLStatement.g4 (81%)
 copy {shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/antlr4/imports => shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/src/main/antlr4/imports/readwrite-splitting}/Symbol.g4 (100%)
 copy shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/drop/DropRDLStatement.java => shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/src/main/antlr4/org/apache/shardingsphere/distsql/parser/autogen/ReadwriteSplittingRuleStatement.g4 (76%)
 copy shardingsphere-infra/shardingsphere-infra-rewrite/shardingsphere-infra-rewrite-engine/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/pojo/SQLToken.java => shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/parser/core/ReadwriteSplittingRuleLexer.java (61%)
 copy shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/java/org/apache/shardingsphere/distsql/parser/core/DistSQLParser.java => shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/parser/core/ReadwriteSplittingRuleParser.java (70%)
 create mode 100644 shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/parser/core/ReadwriteSplittingRuleSQLStatementVisitor.java
 copy shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/parser/OracleParserFacade.java => shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/parser/facade/ReadwriteSplittingRuleSQLStatementParserFacade.java (52%)
 rename {shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/alter => shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/parser/statement}/AlterReadwriteSplittingRuleStatement.java (73%)
 rename {shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/create/impl => shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/parser/statement}/CreateReadwriteSplittingRuleStatement.java (78%)
 rename {shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/drop/impl => shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/parser/statement}/DropReadwriteSplittingRuleStatement.java (81%)
 rename {shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show => shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/parser/statement}/ShowReadwriteSplittingRulesStatement.java (87%)
 rename {shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/segment/rdl => shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/parser/statement/segment}/ReadwriteSplittingRuleSegment.java (93%)
 copy shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLParserFacade => shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.parser.spi.RuleSQLStatementParserFacade (87%)
 create mode 100644 shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/parser/core/ReadwriteSplittingRuleStatementParserEngineTest.java
 create mode 100644 shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-core/src/test/java/org/apache/shardingsphere/shadow/rule/checker/ShadowRuleConfigurationCheckerTest.java
 create mode 100644 shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/rule/checker/AlgorithmProvidedShardingRuleConfigurationCheckerTest.java
 create mode 100644 shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/rule/checker/ShardingRuleConfigurationCheckerTest.java
 copy shardingsphere-features/{shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core => shardingsphere-sharding/shardingsphere-sharding-distsql}/pom.xml (61%)
 copy {shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/imports/sqlserver => shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/src/main/antlr4/imports/sharding}/Alphabet.g4 (100%)
 copy {shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/antlr4/imports => shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/src/main/antlr4/imports/sharding}/Keyword.g4 (57%)
 copy {shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/antlr4/imports => shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/src/main/antlr4/imports/sharding}/Literals.g4 (100%)
 create mode 100644 shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/src/main/antlr4/imports/sharding/RDLStatement.g4
 copy {shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/antlr4/imports => shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/src/main/antlr4/imports/sharding}/RQLStatement.g4 (79%)
 copy {shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/antlr4/imports => shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/src/main/antlr4/imports/sharding}/Symbol.g4 (100%)
 rename shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/antlr4/org/apache/shardingsphere/distsql/parser/autogen/DistSQLStatement.g4 => shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/src/main/antlr4/org/apache/shardingsphere/distsql/parser/autogen/ShardingRuleStatement.g4 (63%)
 copy shardingsphere-infra/shardingsphere-infra-rewrite/shardingsphere-infra-rewrite-engine/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/pojo/SQLToken.java => shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingRuleLexer.java (64%)
 rename shardingsphere-distsql-parser/shardingsphere-distsql-parser-engine/src/main/java/org/apache/shardingsphere/distsql/parser/core/DistSQLParser.java => shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingRuleParser.java (73%)
 create mode 100644 shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingRuleSQLStatementVisitor.java
 copy shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/parser/OracleParserFacade.java => shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/facade/ShardingRuleSQLStatementParserFacade.java (55%)
 rename {shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/alter => shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/statement}/AlterShardingBindingTableRulesStatement.java (78%)
 rename {shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/alter => shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/statement}/AlterShardingBroadcastTableRulesStatement.java (80%)
 rename {shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/alter => shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/statement}/AlterShardingTableRuleStatement.java (71%)
 rename {shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/create/impl => shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/statement}/CreateShardingBindingTableRulesStatement.java (81%)
 rename {shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/create/impl => shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/statement}/CreateShardingBroadcastTableRulesStatement.java (83%)
 rename {shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/create/impl => shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/statement}/CreateShardingTableRuleStatement.java (81%)
 rename {shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/drop/impl => shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/statement}/DropShardingBindingTableRulesStatement.java (87%)
 rename {shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/drop/impl => shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/statement}/DropShardingBroadcastTableRulesStatement.java (87%)
 rename {shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/drop/impl => shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/statement}/DropShardingTableRuleStatement.java (78%)
 rename {shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show => shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/statement}/ShowShardingBindingTableRulesStatement.java (88%)
 rename {shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show => shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/statement}/ShowShardingBroadcastTableRulesStatement.java (88%)
 rename {shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show => shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/statement}/ShowShardingTableRulesStatement.java (88%)
 rename {shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/segment/rdl => shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/statement/segment}/ShardingBindingTableRuleSegment.java (93%)
 rename {shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser => shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/statement}/segment/TableRuleSegment.java (83%)
 copy shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLParserFacade => shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.parser.spi.RuleSQLStatementParserFacade (89%)
 create mode 100644 shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/src/test/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingRuleStatementParserEngineTest.java
 copy shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/constant/EncryptOrder.java => shardingsphere-infra/shardingsphere-infra-authority/shardingsphere-infra-authority-common/src/main/java/org/apache/shardingsphere/authority/rule/builder/DefaultUser.java (75%)
 copy shardingsphere-infra/{shardingsphere-infra-rewrite/shardingsphere-infra-rewrite-engine/src/main/java/org/apache/shardingsphere/infra/rewrite/engine/result/SQLRewriteResult.java => shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/config/scope/GlobalRuleConfiguration.java} (78%)
 copy shardingsphere-infra/{shardingsphere-infra-rewrite/shardingsphere-infra-rewrite-engine/src/main/java/org/apache/shardingsphere/infra/rewrite/engine/result/SQLRewriteResult.java => shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/config/scope/SchemaRuleConfiguration.java} (78%)
 rename shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/{engine => }/MetadataRefresher.java (93%)
 create mode 100644 shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/util/IndexMetaDataUtil.java
 rename shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/schema/builder/{loader/util/TableMetaDataLoaderUtilTest.java => util/IndexMetaDataUtilTest.java} (54%)
 copy shardingsphere-infra/{shardingsphere-infra-rewrite/shardingsphere-infra-rewrite-engine/src/test/java/org/apache/shardingsphere/infra/rewrite/sql/token/pojo/SQLTokenTest.java => shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/rule/fixture/checker/RuleConfigurationCheckerFactoryTest.java} (54%)
 copy shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/recognizer/impl/H2Recognizer.java => shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/rule/fixture/checker/RuleConfigurationCheckerFixture.java (58%)
 copy shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLParserFacade => shardingsphere-infra/shardingsphere-infra-common/src/test/resources/META-INF/services/org.apache.shardingsphere.infra.rule.checker.RuleConfigurationChecker (90%)
 rename shardingsphere-infra/{shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/engine => shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/metadata/refresher}/MetadataRefreshEngine.java (57%)
 rename shardingsphere-infra/{shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/engine => shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/metadata/refresher}/MetadataRefresherFactory.java (56%)
 rename shardingsphere-infra/{shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/schema => shardingsphere-infra-context/src/test/java/org/apache/shardingsphere/infra/context/metadata}/refresher/MetadataRefresherFactoryTest.java (71%)
 rename shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/core/{schema/LogicSchemaMetadata.java => metadata/FederateSchemaMetadata.java} (68%)
 rename shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/core/{schema/LogicSchemaMetadatas.java => metadata/FederateSchemaMetadatas.java} (58%)
 rename shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/core/{schema/LogicTableMetadata.java => metadata/FederateTableMetadata.java} (79%)
 copy shardingsphere-infra/{shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/refresher/SchemaRefresher.java => shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/core/metadata/refresher/FederateRefresher.java} (69%)
 create mode 100644 shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/core/metadata/refresher/type/AlterTableStatementFederateRefresher.java
 create mode 100644 shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/core/metadata/refresher/type/CreateTableStatementFederateRefresher.java
 create mode 100644 shardingsphere-infra/shardingsphere-infra-optimize/src/test/java/org/apache/shardingsphere/infra/optimize/core/metadata/refresher/AlterTableStatementFederateRefresherTest.java
 delete mode 100644 shardingsphere-infra/shardingsphere-infra-rewrite/shardingsphere-infra-rewrite-engine/pom.xml
 delete mode 100644 shardingsphere-infra/shardingsphere-infra-rewrite/shardingsphere-infra-rewrite-test/pom.xml
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/main/java/org/apache/shardingsphere/infra/rewrite/SQLRewriteEntry.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/main/java/org/apache/shardingsphere/infra/rewrite/context/SQLRewriteContext.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/main/java/org/apache/shardingsphere/infra/rewrite/context/SQLRewriteContextDecorator.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/main/java/org/apache/shardingsphere/infra/rewrite/engine/GenericSQLRewriteEngine.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/main/java/org/apache/shardingsphere/infra/rewrite/engine/RouteSQLRewriteEngine.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/main/java/org/apache/shardingsphere/infra/rewrite/engine/result/GenericSQLRewriteResult.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/main/java/org/apache/shardingsphere/infra/rewrite/engine/result/RouteSQLRewriteResult.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/main/java/org/apache/shardingsphere/infra/rewrite/engine/result/SQLRewriteResult.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/main/java/org/apache/shardingsphere/infra/rewrite/engine/result/SQLRewriteUnit.java (100%)
 copy shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/main/java/org/apache/shardingsphere/infra/rewrite/parameter/builder/ParameterBuilder.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/main/java/org/apache/shardingsphere/infra/rewrite/parameter/builder/impl/GroupedParameterBuilder.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/main/java/org/apache/shardingsphere/infra/rewrite/parameter/builder/impl/StandardParameterBuilder.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/main/java/org/apache/shardingsphere/infra/rewrite/parameter/rewriter/ParameterRewriter.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/main/java/org/apache/shardingsphere/infra/rewrite/parameter/rewriter/ParameterRewriterBuilder.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/SQLBuilder.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/impl/AbstractSQLBuilder.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/impl/DefaultSQLBuilder.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/impl/RouteSQLBuilder.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/generator/CollectionSQLTokenGenerator.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/generator/OptionalSQLTokenGenerator.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/generator/SQLTokenGenerator.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/generator/SQLTokenGenerators.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/generator/aware/ParametersAware.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/generator/aware/PreviousSQLTokensAware.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/generator/aware/RouteContextAware.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/generator/aware/SchemaMetaDataAware.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/generator/builder/DefaultTokenGeneratorBuilder.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/generator/builder/SQLTokenGeneratorBuilder.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/generator/generic/RemoveTokenGenerator.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/pojo/Attachable.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/pojo/RouteUnitAware.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/pojo/SQLToken.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/pojo/Substitutable.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/pojo/generic/ComposableSQLToken.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/pojo/generic/InsertColumnsToken.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/pojo/generic/InsertValue.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/pojo/generic/InsertValuesToken.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/pojo/generic/OwnerToken.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/pojo/generic/RemoveToken.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/pojo/generic/SubstitutableColumnNameToken.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/pojo/generic/UseDefaultInsertColumnsToken.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/test/java/org/apache/shardingsphere/infra/rewrite/SQLRewriteEntryTest.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/test/java/org/apache/shardingsphere/infra/rewrite/context/SQLRewriteContextTest.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/test/java/org/apache/shardingsphere/infra/rewrite/engine/GenericSQLRewriteEngineTest.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/test/java/org/apache/shardingsphere/infra/rewrite/engine/RouteSQLRewriteEngineTest.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/test/java/org/apache/shardingsphere/infra/rewrite/parameter/builder/impl/GroupedParameterBuilderTest.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/test/java/org/apache/shardingsphere/infra/rewrite/parameter/builder/impl/StandardParameterBuilderTest.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/test/java/org/apache/shardingsphere/infra/rewrite/sql/fixture/RouteUnitAwareSQLTokenFixture.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/test/java/org/apache/shardingsphere/infra/rewrite/sql/fixture/SQLTokenFixture.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/test/java/org/apache/shardingsphere/infra/rewrite/sql/impl/DefaultSQLBuilderTest.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/test/java/org/apache/shardingsphere/infra/rewrite/sql/impl/RouteSQLBuilderTest.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/test/java/org/apache/shardingsphere/infra/rewrite/sql/token/pojo/SQLTokenTest.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/test/java/org/apache/shardingsphere/infra/rewrite/sql/token/pojo/generic/ComposableSQLTokenTest.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/test/java/org/apache/shardingsphere/infra/rewrite/sql/token/pojo/generic/InsertColumnsTokenTest.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/test/java/org/apache/shardingsphere/infra/rewrite/sql/token/pojo/generic/InsertValueTest.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/test/java/org/apache/shardingsphere/infra/rewrite/sql/token/pojo/generic/OwnerTokenTest.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/test/java/org/apache/shardingsphere/infra/rewrite/sql/token/pojo/generic/RemoveTokenTest.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/test/java/org/apache/shardingsphere/infra/rewrite/sql/token/pojo/generic/SubstitutableColumnNameTokenTest.java (100%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/{shardingsphere-infra-rewrite-engine => }/src/test/java/org/apache/shardingsphere/infra/rewrite/sql/token/pojo/generic/UseDefaultInsertColumnsTokenTest.java (100%)
 rename shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/segment/rdl/EncryptRuleSegment.java => shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/exception/DuplicateBindingTablesException.java (75%)
 copy shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/drop/impl/DropResourceStatement.java => shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/exception/InvalidKeyGeneratorsException.java (71%)
 copy shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/drop/impl/DropResourceStatement.java => shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/exception/InvalidShardingAlgorithmsException.java (70%)
 create mode 100644 shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/transaction/LocalTransactionManagerTest.java
 rename shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/java/org/apache/shardingsphere/proxy/fixture/{FixtureRuleConfiguration.java => RuleConfigurationFixture.java} (94%)
 rename shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/java/org/apache/shardingsphere/proxy/fixture/{FixtureYamlRuleConfiguration.java => YamlRuleConfigurationFixture.java} (91%)
 rename shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/java/org/apache/shardingsphere/proxy/fixture/{FixtureConfigurationYamlSwapper.java => YamlRuleConfigurationSwapperFixture.java} (67%)
 create mode 100644 shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/PostgreSQLConnectionContextRegistry.java
 rename shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/resources/META-INF/services/{org.apache.shardingsphere.sql.parser.spi.SQLParserFacade => org.apache.shardingsphere.sql.parser.spi.DatabaseTypedSQLParserFacade} (100%)
 rename shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/resources/META-INF/services/{org.apache.shardingsphere.sql.parser.spi.SQLParserFacade => org.apache.shardingsphere.sql.parser.spi.DatabaseTypedSQLParserFacade} (100%)
 rename shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/resources/META-INF/services/{org.apache.shardingsphere.sql.parser.spi.SQLParserFacade => org.apache.shardingsphere.sql.parser.spi.DatabaseTypedSQLParserFacade} (100%)
 rename shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sql92/src/main/resources/META-INF/services/{org.apache.shardingsphere.sql.parser.spi.SQLParserFacade => org.apache.shardingsphere.sql.parser.spi.DatabaseTypedSQLParserFacade} (100%)
 rename shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/resources/META-INF/services/{org.apache.shardingsphere.sql.parser.spi.SQLParserFacade => org.apache.shardingsphere.sql.parser.spi.DatabaseTypedSQLParserFacade} (100%)
 rename shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/{parser => }/ParseASTNode.java (95%)
 rename shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/{parser => }/SQLParserFactory.java (78%)
 rename shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/{ => database}/cache/ParseTreeCacheBuilder.java (96%)
 rename shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/{ => database}/cache/ParseTreeCacheLoader.java (90%)
 create mode 100644 shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/database/parser/DatabaseTypedSQLParserFacadeRegistry.java
 rename shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/{ => database}/parser/SQLParserExecutor.java (76%)
 rename shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/{ => database}/visitor/SQLVisitorFacadeRegistry.java (97%)
 rename shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/{ => database}/visitor/SQLVisitorFactory.java (97%)
 rename shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/{ => database}/visitor/SQLVisitorRule.java (97%)
 delete mode 100644 shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/parser/SQLParserFacadeRegistry.java
 copy shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/test/java/org/apache/shardingsphere/sql/parser/core/{visitor/SQLVisitorRuleTest.java => ParseASTNodeTest.java} (70%)
 rename shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/test/java/org/apache/shardingsphere/sql/parser/core/{ => database}/cache/ParseTreeCacheBuilderTest.java (94%)
 rename shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/test/java/org/apache/shardingsphere/sql/parser/core/{ => database}/cache/ParseTreeCacheLoaderTest.java (91%)
 rename shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/test/java/org/apache/shardingsphere/sql/parser/core/{ => database}/visitor/SQLVisitorRuleTest.java (95%)
 rename shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/test/java/org/apache/shardingsphere/sql/parser/core/{ => database}/visitor/SelectContext.java (92%)
 rename shardingsphere-infra/shardingsphere-infra-rewrite/shardingsphere-infra-rewrite-engine/src/main/java/org/apache/shardingsphere/infra/rewrite/parameter/builder/ParameterBuilder.java => shardingsphere-sql-parser/shardingsphere-sql-parser-spi/src/main/java/org/apache/shardingsphere/sql/parser/spi/DatabaseTypedSQLParserFacade.java (77%)
 copy shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/drop/DropRDLStatement.java => shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/tcl/SetConstraintsStatement.java (73%)
 rename shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/util/{SafeNumberOperationUtils.java => SafeNumberOperationUtil.java} (99%)
 create mode 100644 shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/util/SubqueryExtractUtil.java
 create mode 100644 shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/util/WhereExtractUtil.java
 delete mode 100644 shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/util/WhereSegmentExtractUtils.java
 create mode 100644 shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/handler/ddl/CreateIndexStatementHandler.java
 copy shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/{common/statement/ddl/CreateIndexStatement.java => dialect/statement/oracle/ddl/OracleAnalyzeStatement.java} (76%)
 copy shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/{postgresql/ddl/PostgreSQLCreateIndexStatement.java => oracle/tcl/OracleSetConstraintsStatement.java} (81%)
 rename shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/test/java/org/apache/shardingsphere/sql/parser/sql/common/util/{SafeNumberOperationUtilsTest.java => SafeNumberOperationUtilTest.java} (73%)
 create mode 100644 shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/ddl/impl/AnalyzeStatementAssert.java
 rename shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/util/TableMetaDataLoaderUtil.java => shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/tcl/impl/SetConstraintsStatementAssert.java (51%)
 copy shardingsphere-infra/shardingsphere-infra-rewrite/shardingsphere-infra-rewrite-test/src/main/java/org/apache/shardingsphere/infra/rewrite/parameterized/entity/RewriteAssertionEntity.java => shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/AnalyzeStatementTestCase.java (57%)
 rename shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/drop/DropRDLStatement.java => shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/tcl/SetConstraintsStatementTestCase.java (71%)
 create mode 100644 shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/ddl/analyze.xml
 create mode 100644 shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/dml/select-with.xml
 copy examples/example-core/example-api/pom.xml => shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/tcl/set-constraints.xml (62%)
 create mode 100644 shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/ddl/alter-database.xml
 copy examples/example-core/example-api/pom.xml => shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/ddl/alter-function.xml (52%)
 create mode 100644 shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/ddl/alter-index.xml
 create mode 100644 shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/ddl/alter-procedure.xml
 copy examples/example-core/example-api/pom.xml => shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/ddl/alter-sequence.xml (62%)
 create mode 100644 shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/ddl/alter-session.xml
 copy examples/example-core/example-api/pom.xml => shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/ddl/alter-synonym.xml (62%)
 create mode 100644 shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/ddl/alter-system.xml
 rename shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/ddl/{alter.xml => alter-table.xml} (68%)
 create mode 100644 shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/ddl/analyze.xml
 copy examples/example-core/example-api/pom.xml => shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/ddl/create-database.xml (56%)
 create mode 100644 shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/ddl/create-function.xml
 create mode 100644 shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/ddl/create-index.xml
 copy examples/example-core/example-api/pom.xml => shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/ddl/create-procedure.xml (62%)
 copy examples/example-core/example-api/pom.xml => shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/ddl/create-sequence.xml (62%)
 rename shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/ddl/{create.xml => create-table.xml} (71%)
 copy examples/example-core/example-api/pom.xml => shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/ddl/create-view.xml (58%)
 copy examples/example-core/example-api/pom.xml => shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/ddl/drop-database.xml (62%)
 copy examples/example-core/example-api/pom.xml => shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/ddl/drop-function.xml (62%)
 create mode 100644 shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/ddl/drop-index.xml
 copy examples/example-core/example-api/pom.xml => shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/ddl/drop-procedure.xml (62%)
 copy examples/example-core/example-api/pom.xml => shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/ddl/drop-sequence.xml (62%)
 create mode 100644 shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/ddl/drop-table.xml
 copy examples/example-core/example-api/pom.xml => shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/ddl/drop-view.xml (62%)
 delete mode 100644 shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/ddl/drop.xml
 create mode 100644 shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/dml/select-with.xml
 copy examples/example-core/example-api/pom.xml => shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/tcl/set-constraints.xml (62%)
 create mode 100644 shardingsphere-test/shardingsphere-integration-scaling-test/shardingsphere-integration-scaling-test-mysql/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/env/ITEnvironmentContext.java
 rename shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/drop/impl/DropResourceStatement.java => shardingsphere-test/shardingsphere-integration-scaling-test/shardingsphere-integration-scaling-test-mysql/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/env/cases/DataSet.java (71%)
 copy shardingsphere-infra/shardingsphere-infra-rewrite/shardingsphere-infra-rewrite-test/src/main/java/org/apache/shardingsphere/infra/rewrite/parameterized/entity/RewriteAssertionEntity.java => shardingsphere-test/shardingsphere-integration-scaling-test/shardingsphere-integration-scaling-test-mysql/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/env/cases/Type.java (57%)
 rename shardingsphere-test/shardingsphere-integration-scaling-test/shardingsphere-integration-scaling-test-mysql/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/{util/SourceShardingSphereUtil.java => env/config/SourceConfiguration.java} (57%)
 rename shardingsphere-test/shardingsphere-integration-scaling-test/shardingsphere-integration-scaling-test-mysql/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/{util/TargetDataSourceUtil.java => env/config/TargetConfiguration.java} (53%)
 create mode 100644 shardingsphere-test/shardingsphere-integration-scaling-test/shardingsphere-integration-scaling-test-mysql/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/fixture/DataImporter.java
 delete mode 100644 shardingsphere-test/shardingsphere-integration-scaling-test/shardingsphere-integration-scaling-test-mysql/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/fixture/FixtureWriteThread.java
 copy examples/example-core/example-api/pom.xml => shardingsphere-test/shardingsphere-integration-scaling-test/shardingsphere-integration-scaling-test-mysql/src/test/resources/cases/mysql/types.xml (59%)
 rename {shardingsphere-infra/shardingsphere-infra-rewrite/shardingsphere-infra-rewrite-test/src/main/java/org/apache/shardingsphere/infra => shardingsphere-test/shardingsphere-rewrite-test/src/test/java/org/apache/shardingsphere/sharding}/rewrite/parameterized/engine/AbstractSQLRewriterParameterizedTest.java (92%)
 rename {shardingsphere-infra/shardingsphere-infra-rewrite/shardingsphere-infra-rewrite-test/src/main/java/org/apache/shardingsphere/infra => shardingsphere-test/shardingsphere-rewrite-test/src/test/java/org/apache/shardingsphere/sharding}/rewrite/parameterized/engine/parameter/SQLRewriteEngineTestParameters.java (95%)
 rename {shardingsphere-infra/shardingsphere-infra-rewrite/shardingsphere-infra-rewrite-test/src/main/java/org/apache/shardingsphere/infra => shardingsphere-test/shardingsphere-rewrite-test/src/test/java/org/apache/shardingsphere/sharding}/rewrite/parameterized/engine/parameter/SQLRewriteEngineTestParametersBuilder.java (90%)
 rename {shardingsphere-infra/shardingsphere-infra-rewrite/shardingsphere-infra-rewrite-test/src/main/java/org/apache/shardingsphere/infra => shardingsphere-test/shardingsphere-rewrite-test/src/test/java/org/apache/shardingsphere/sharding}/rewrite/parameterized/entity/RewriteAssertionEntity.java (95%)
 rename {shardingsphere-infra/shardingsphere-infra-rewrite/shardingsphere-infra-rewrite-test/src/main/java/org/apache/shardingsphere/infra => shardingsphere-test/shardingsphere-rewrite-test/src/test/java/org/apache/shardingsphere/sharding}/rewrite/parameterized/entity/RewriteAssertionsRootEntity.java (95%)
 rename {shardingsphere-infra/shardingsphere-infra-rewrite/shardingsphere-infra-rewrite-test/src/main/java/org/apache/shardingsphere/infra => shardingsphere-test/shardingsphere-rewrite-test/src/test/java/org/apache/shardingsphere/sharding}/rewrite/parameterized/entity/RewriteInputEntity.java (94%)
 rename {shardingsphere-infra/shardingsphere-infra-rewrite/shardingsphere-infra-rewrite-test/src/main/java/org/apache/shardingsphere/infra => shardingsphere-test/shardingsphere-rewrite-test/src/test/java/org/apache/shardingsphere/sharding}/rewrite/parameterized/entity/RewriteOutputEntity.java (94%)
 rename {shardingsphere-infra/shardingsphere-infra-rewrite/shardingsphere-infra-rewrite-test/src/main/java/org/apache/shardingsphere/infra => shardingsphere-test/shardingsphere-rewrite-test/src/test/java/org/apache/shardingsphere/sharding}/rewrite/parameterized/loader/RewriteAssertionsRootEntityLoader.java (90%)
 rename shardingsphere-test/shardingsphere-rewrite-test/src/test/java/org/apache/shardingsphere/sharding/rewrite/parameterized/{ => scenario}/EncryptSQLRewriterParameterizedTest.java (92%)
 rename shardingsphere-test/shardingsphere-rewrite-test/src/test/java/org/apache/shardingsphere/sharding/rewrite/parameterized/{ => scenario}/MixSQLRewriterParameterizedTest.java (94%)
 rename shardingsphere-test/shardingsphere-rewrite-test/src/test/java/org/apache/shardingsphere/sharding/rewrite/parameterized/{ => scenario}/ShardingSQLRewriterParameterizedTest.java (94%)
 rename shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/{encrypt => scenario/encrypt/case}/alter_for_query_with_plain.xml (97%)
 rename shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/{encrypt => scenario/encrypt/case}/create_for_query_with_plain.xml (94%)
 rename shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/{encrypt => scenario/encrypt/case}/delete_for_query_with_cipher.xml (96%)
 rename shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/{encrypt => scenario/encrypt/case}/delete_for_query_with_plain.xml (95%)
 rename shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/{encrypt => scenario/encrypt/case}/insert.xml (99%)
 rename shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/{encrypt => scenario/encrypt/case}/select_for_query_with_cipher.xml (98%)
 rename shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/{encrypt => scenario/encrypt/case}/select_for_query_with_plain.xml (97%)
 rename shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/{encrypt => scenario/encrypt/case}/update_for_query_with_cipher.xml (98%)
 rename shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/{encrypt => scenario/encrypt/case}/update_for_query_with_plain.xml (96%)
 rename shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/{yaml/encrypt => scenario/encrypt/config}/query-with-cipher.yaml (100%)
 rename shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/{yaml/encrypt => scenario/encrypt/config}/query-with-plain.yaml (100%)
 rename shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/{mix => scenario/mix/case}/create.xml (97%)
 rename shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/{mix => scenario/mix/case}/delete_for_query_with_cipher.xml (97%)
 rename shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/{mix => scenario/mix/case}/delete_for_query_with_plain.xml (95%)
 rename shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/{mix => scenario/mix/case}/insert.xml (99%)
 rename shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/{mix => scenario/mix/case}/select_for_query_with_cipher.xml (98%)
 rename shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/{mix => scenario/mix/case}/select_for_query_with_plain.xml (98%)
 rename shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/{mix => scenario/mix/case}/update_for_query_with_cipher.xml (97%)
 rename shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/{mix => scenario/mix/case}/update_for_query_with_plain.xml (96%)
 rename shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/{yaml/mix => scenario/mix/config}/query-with-cipher.yaml (100%)
 rename shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/{yaml/mix => scenario/mix/config}/query-with-plain.yaml (100%)
 rename shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/{sharding => scenario/sharding/case}/alter.xml (99%)
 rename shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/{sharding => scenario/sharding/case}/analyze.xml (99%)
 rename shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/{sharding => scenario/sharding/case}/create.xml (99%)
 rename shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/{sharding => scenario/sharding/case}/delete.xml (96%)
 rename shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/{sharding => scenario/sharding/case}/drop.xml (98%)
 rename shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/{sharding => scenario/sharding/case}/index.xml (71%)
 rename shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/{sharding => scenario/sharding/case}/insert.xml (99%)
 rename shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/{sharding => scenario/sharding/case}/select.xml (99%)
 rename shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/{sharding => scenario/sharding/case}/show.xml (95%)
 rename shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/{sharding => scenario/sharding/case}/update.xml (97%)
 rename shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/{yaml/sharding => scenario/sharding/config}/sharding-rule.yaml (100%)

[shardingsphere] 03/03: add jdbc:opengauss supoort (#10601)

Posted by wu...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

wuweijie pushed a commit to branch opengauss_adapt
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git

commit b21a76853e254958d6ccf7ee02403e46c7cb3ec8
Author: justbk2015 <24...@qq.com>
AuthorDate: Tue Jun 1 20:38:33 2021 +0800

    add jdbc:opengauss supoort (#10601)
---
 .../dialect/OpenGaussDataSourceMetaData.java       |   2 +-
 .../dialect/OpenGaussTableMetaDataLoader.java      | 144 +++++++++++++++++++++
 ...a.schema.builder.spi.DialectTableMetaDataLoader |   1 +
 .../optimize/context/OptimizeContextFactory.java   |   4 +-
 .../jdbc/recognizer/impl/OpenGaussRecognizer.java  |  44 +++++++
 ...aussStatementMemoryStrictlyFetchSizeSetter.java |  39 ++++++
 ...ion.jdbc.recognizer.spi.JDBCDriverURLRecognizer |   1 +
 ...tatement.StatementMemoryStrictlyFetchSizeSetter |   1 +
 .../src/main/resources/conf/config-sharding.yaml   |   4 +-
 .../postgresql/OpenGaussFrontendEngine.java        |  56 ++++++++
 ...oxy.frontend.spi.DatabaseProtocolFrontendEngine |   1 +
 .../postgresql/parser/OpenGaussParserFacade.java   |  43 ++++++
 .../facade/OpenGaussFormatSQLVisitorFacade.java    |  72 +++++++++++
 .../facade/OpenGaussStatementSQLVisitorFacade.java |  77 +++++++++++
 ...ere.sql.parser.spi.DatabaseTypedSQLParserFacade |   1 +
 ....shardingsphere.sql.parser.spi.SQLVisitorFacade |   2 +
 .../xa/jta/connection/XAConnectionFactory.java     |   1 +
 .../dialect/OpenGaussXADataSourceDefinition.java   |  39 ++++++
 ...ta.datasource.properties.XADataSourceDefinition |   1 +
 19 files changed, 529 insertions(+), 4 deletions(-)

diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/metadata/dialect/OpenGaussDataSourceMetaData.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/metadata/dialect/OpenGaussDataSourceMetaData.java
index 84974b3..b9837e6 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/metadata/dialect/OpenGaussDataSourceMetaData.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/metadata/dialect/OpenGaussDataSourceMetaData.java
@@ -42,7 +42,7 @@ public final class OpenGaussDataSourceMetaData implements DataSourceMetaData {
     private final String schema;
     
     // TODO fix OpenGauss's url pattern
-    private final Pattern pattern = Pattern.compile("jdbc:openguass://([\\w\\-\\.]+):?([0-9]*),?.*?/([\\w\\-]+)?\\S*", Pattern.CASE_INSENSITIVE);
+    private final Pattern pattern = Pattern.compile("jdbc:opengauss://([\\w\\-\\.]+):?([0-9]*),?.*?/([\\w\\-]+)?\\S*", Pattern.CASE_INSENSITIVE);
     
     public OpenGaussDataSourceMetaData(final String url) {
         Matcher matcher = pattern.matcher(url);
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/OpenGaussTableMetaDataLoader.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/OpenGaussTableMetaDataLoader.java
new file mode 100644
index 0000000..9346b5a
--- /dev/null
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/OpenGaussTableMetaDataLoader.java
@@ -0,0 +1,144 @@
+/*
+ * 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.infra.metadata.schema.builder.loader.dialect;
+
+import org.apache.shardingsphere.infra.metadata.schema.builder.loader.DataTypeLoader;
+import org.apache.shardingsphere.infra.metadata.schema.builder.spi.DialectTableMetaDataLoader;
+import org.apache.shardingsphere.infra.metadata.schema.model.ColumnMetaData;
+import org.apache.shardingsphere.infra.metadata.schema.model.IndexMetaData;
+import org.apache.shardingsphere.infra.metadata.schema.model.TableMetaData;
+
+import javax.sql.DataSource;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.LinkedList;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * Table meta data loader for OpenGauss.
+ */
+public final class OpenGaussTableMetaDataLoader implements DialectTableMetaDataLoader {
+    
+    private static final String BASIC_TABLE_META_DATA_SQL = "SELECT table_name, column_name, data_type, udt_name, column_default FROM information_schema.columns WHERE table_schema = ?";
+    
+    private static final String TABLE_META_DATA_SQL_WITH_EXISTED_TABLES = BASIC_TABLE_META_DATA_SQL + " AND table_name NOT IN (%s)";
+    
+    private static final String PRIMARY_KEY_META_DATA_SQL = "SELECT tc.table_name, kc.column_name FROM information_schema.table_constraints tc"
+            + " JOIN information_schema.key_column_usage kc"
+            + " ON kc.table_schema = tc.table_schema AND kc.table_name = tc.table_name AND kc.constraint_name = tc.constraint_name"
+            + " WHERE tc.constraint_type = 'PRIMARY KEY' AND kc.ordinal_position IS NOT NULL AND kc.table_schema = ?";
+    
+    private static final String BASIC_INDEX_META_DATA_SQL = "SELECT tablename, indexname FROM pg_indexes WHERE schemaname = ?";
+    
+    @Override
+    public Map<String, TableMetaData> load(final DataSource dataSource, final Collection<String> existedTables) throws SQLException {
+        Map<String, TableMetaData> result = new LinkedHashMap<>();
+        Map<String, Collection<IndexMetaData>> indexMetaDataMap = loadIndexMetaDataMap(dataSource);
+        for (Entry<String, Collection<ColumnMetaData>> entry : loadColumnMetaDataMap(dataSource, existedTables).entrySet()) {
+            Collection<IndexMetaData> indexMetaDataList = indexMetaDataMap.get(entry.getKey());
+            if (null == indexMetaDataList) {
+                indexMetaDataList = Collections.emptyList();
+            }
+            result.put(entry.getKey(), new TableMetaData(entry.getValue(), indexMetaDataList));
+        }
+        return result;
+    }
+    
+    private Map<String, Collection<ColumnMetaData>> loadColumnMetaDataMap(final DataSource dataSource, final Collection<String> existedTables) throws SQLException {
+        Map<String, Collection<ColumnMetaData>> result = new HashMap<>();
+        try (Connection connection = dataSource.getConnection();
+             PreparedStatement preparedStatement = connection.prepareStatement(getTableMetaDataSQL(existedTables))) {
+            Map<String, Integer> dataTypes = DataTypeLoader.load(connection.getMetaData());
+            Set<String> primaryKeys = loadPrimaryKeys(connection);
+            preparedStatement.setString(1, connection.getSchema());
+            try (ResultSet resultSet = preparedStatement.executeQuery()) {
+                while (resultSet.next()) {
+                    String tableName = resultSet.getString("table_name");
+                    Collection<ColumnMetaData> columns = result.computeIfAbsent(tableName, key -> new LinkedList<>());
+                    ColumnMetaData columnMetaData = loadColumnMetaData(dataTypes, primaryKeys, resultSet);
+                    columns.add(columnMetaData);
+                }
+            }
+        }
+        return result;
+    }
+    
+    private Set<String> loadPrimaryKeys(final Connection connection) throws SQLException {
+        Set<String> result = new HashSet<>();
+        try (PreparedStatement preparedStatement = connection.prepareStatement(PRIMARY_KEY_META_DATA_SQL)) {
+            preparedStatement.setString(1, connection.getSchema());
+            try (ResultSet resultSet = preparedStatement.executeQuery()) {
+                while (resultSet.next()) {
+                    String tableName = resultSet.getString("table_name");
+                    String columnName = resultSet.getString("column_name");
+                    result.add(tableName + "," + columnName);
+                }
+            }
+        }
+        return result;
+    }
+    
+    private ColumnMetaData loadColumnMetaData(final Map<String, Integer> dataTypeMap, final Set<String> primaryKeys, final ResultSet resultSet) throws SQLException {
+        String tableName = resultSet.getString("table_name");
+        String columnName = resultSet.getString("column_name");
+        String dataType = resultSet.getString("udt_name");
+        boolean isPrimaryKey = primaryKeys.contains(tableName + "," + columnName);
+        String columnDefault = resultSet.getString("column_default");
+        boolean generated = null != columnDefault && columnDefault.startsWith("nextval(");
+        //TODO user defined collation which deterministic is false
+        boolean caseSensitive = true;
+        return new ColumnMetaData(columnName, dataTypeMap.get(dataType), isPrimaryKey, generated, caseSensitive);
+    }
+    
+    private String getTableMetaDataSQL(final Collection<String> existedTables) {
+        return existedTables.isEmpty() ? BASIC_TABLE_META_DATA_SQL
+                : String.format(TABLE_META_DATA_SQL_WITH_EXISTED_TABLES, existedTables.stream().map(each -> String.format("'%s'", each)).collect(Collectors.joining(",")));
+    }
+    
+    private Map<String, Collection<IndexMetaData>> loadIndexMetaDataMap(final DataSource dataSource) throws SQLException {
+        Map<String, Collection<IndexMetaData>> result = new HashMap<>();
+        try (Connection connection = dataSource.getConnection();
+             PreparedStatement preparedStatement = connection.prepareStatement(BASIC_INDEX_META_DATA_SQL)) {
+            preparedStatement.setString(1, connection.getSchema());
+            try (ResultSet resultSet = preparedStatement.executeQuery()) {
+                while (resultSet.next()) {
+                    String tableName = resultSet.getString("tablename");
+                    Collection<IndexMetaData> indexes = result.computeIfAbsent(tableName, k -> new LinkedList<>());
+                    String indexName = resultSet.getString("indexname");
+                    indexes.add(new IndexMetaData(indexName));
+                }
+            }
+        }
+        return result;
+    }
+    
+    @Override
+    public String getDatabaseType() {
+        return "OpenGauss";
+    }
+}
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.schema.builder.spi.DialectTableMetaDataLoader b/shardingsphere-infra/shardingsphere-infra-common/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.schema.builder.spi.DialectTableMetaDataLoader
index 9e92eb6..4dbc8ef 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.schema.builder.spi.DialectTableMetaDataLoader
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.schema.builder.spi.DialectTableMetaDataLoader
@@ -18,5 +18,6 @@
 org.apache.shardingsphere.infra.metadata.schema.builder.loader.dialect.MySQLTableMetaDataLoader
 org.apache.shardingsphere.infra.metadata.schema.builder.loader.dialect.OracleTableMetaDataLoader
 org.apache.shardingsphere.infra.metadata.schema.builder.loader.dialect.PostgreSQLTableMetaDataLoader
+org.apache.shardingsphere.infra.metadata.schema.builder.loader.dialect.OpenGaussTableMetaDataLoader
 org.apache.shardingsphere.infra.metadata.schema.builder.loader.dialect.SQLServerTableMetaDataLoader
 org.apache.shardingsphere.infra.metadata.schema.builder.loader.dialect.H2TableMetaDataLoader
diff --git a/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/context/OptimizeContextFactory.java b/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/context/OptimizeContextFactory.java
index c3485a9..1d9aaff 100644
--- a/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/context/OptimizeContextFactory.java
+++ b/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/context/OptimizeContextFactory.java
@@ -45,6 +45,7 @@ import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import org.apache.shardingsphere.infra.database.type.dialect.H2DatabaseType;
 import org.apache.shardingsphere.infra.database.type.dialect.MariaDBDatabaseType;
 import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
+import org.apache.shardingsphere.infra.database.type.dialect.OpenGaussDatabaseType;
 import org.apache.shardingsphere.infra.database.type.dialect.OracleDatabaseType;
 import org.apache.shardingsphere.infra.database.type.dialect.PostgreSQLDatabaseType;
 import org.apache.shardingsphere.infra.database.type.dialect.SQL92DatabaseType;
@@ -118,7 +119,8 @@ public final class OptimizeContextFactory {
             properties.setProperty(CONFORMANCE_CAMEL_NAME, SqlConformanceEnum.ORACLE_12.name());
             return;
         }
-        if (databaseType instanceof PostgreSQLDatabaseType) {
+        if (databaseType instanceof PostgreSQLDatabaseType
+            || databaseType instanceof OpenGaussDatabaseType) {
             // TODO No suitable type of Lex and conformance
             properties.setProperty(LEX_CAMEL_NAME, Lex.JAVA.name());
             properties.setProperty(CONFORMANCE_CAMEL_NAME, SqlConformanceEnum.BABEL.name());
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/recognizer/impl/OpenGaussRecognizer.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/recognizer/impl/OpenGaussRecognizer.java
new file mode 100644
index 0000000..4a545c0
--- /dev/null
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/recognizer/impl/OpenGaussRecognizer.java
@@ -0,0 +1,44 @@
+/*
+ * 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.proxy.backend.communication.jdbc.recognizer.impl;
+
+import org.apache.shardingsphere.proxy.backend.communication.jdbc.recognizer.spi.JDBCDriverURLRecognizer;
+
+import java.util.Collection;
+import java.util.Collections;
+
+/**
+ * JDBC URL recognizer for OpenGauss.
+ */
+public final class OpenGaussRecognizer implements JDBCDriverURLRecognizer {
+    
+    @Override
+    public String getDatabaseType() {
+        return "OpenGauss";
+    }
+    
+    @Override
+    public Collection<String> getURLPrefixes() {
+        return Collections.singletonList("jdbc:opengauss:");
+    }
+    
+    @Override
+    public String getDriverClassName() {
+        return "org.postgresql.OpenGaussDriver";
+    }
+}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/statement/impl/OpenGaussStatementMemoryStrictlyFetchSizeSetter.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/statement/impl/OpenGaussStatementMemoryStrictlyFetchSizeSetter.java
new file mode 100644
index 0000000..0e9fbf1
--- /dev/null
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/statement/impl/OpenGaussStatementMemoryStrictlyFetchSizeSetter.java
@@ -0,0 +1,39 @@
+/*
+ * 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.proxy.backend.communication.jdbc.statement.impl;
+
+import org.apache.shardingsphere.proxy.backend.communication.jdbc.statement.StatementMemoryStrictlyFetchSizeSetter;
+
+import java.sql.SQLException;
+import java.sql.Statement;
+
+/**
+ * Statement memory strictly fetch size setter for OpenGauss.
+ */
+public final class OpenGaussStatementMemoryStrictlyFetchSizeSetter implements StatementMemoryStrictlyFetchSizeSetter {
+    
+    @Override
+    public void setFetchSize(final Statement statement) throws SQLException {
+        statement.setFetchSize(1);
+    }
+    
+    @Override
+    public String getType() {
+        return "OpenGauss";
+    }
+}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/resources/META-INF/services/org.apache.shardingsphere.proxy.backend.communication.jdbc.recognizer.spi.JDBCDriverURLRecognizer b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/resources/META-INF/services/org.apache.shardingsphere.proxy.backend.communication.jdbc.recognizer.spi.JDBCDriverURLRecognizer
index ef113f7..3a86eb7 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/resources/META-INF/services/org.apache.shardingsphere.proxy.backend.communication.jdbc.recognizer.spi.JDBCDriverURLRecognizer
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/resources/META-INF/services/org.apache.shardingsphere.proxy.backend.communication.jdbc.recognizer.spi.JDBCDriverURLRecognizer
@@ -17,6 +17,7 @@
 
 org.apache.shardingsphere.proxy.backend.communication.jdbc.recognizer.impl.MySQLRecognizer
 org.apache.shardingsphere.proxy.backend.communication.jdbc.recognizer.impl.PostgreSQLRecognizer
+org.apache.shardingsphere.proxy.backend.communication.jdbc.recognizer.impl.OpenGaussRecognizer
 org.apache.shardingsphere.proxy.backend.communication.jdbc.recognizer.impl.OracleRecognizer
 org.apache.shardingsphere.proxy.backend.communication.jdbc.recognizer.impl.SQLServerRecognizer
 org.apache.shardingsphere.proxy.backend.communication.jdbc.recognizer.impl.H2Recognizer
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/resources/META-INF/services/org.apache.shardingsphere.proxy.backend.communication.jdbc.statement.StatementMemoryStrictlyFetchSizeSetter b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/resources/META-INF/services/org.apache.shardingsphere.proxy.backend.communication.jdbc.statement.StatementMemoryStrictlyFetchSizeSetter
index 1992b53..077e29e 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/resources/META-INF/services/org.apache.shardingsphere.proxy.backend.communication.jdbc.statement.StatementMemoryStrictlyFetchSizeSetter
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/resources/META-INF/services/org.apache.shardingsphere.proxy.backend.communication.jdbc.statement.StatementMemoryStrictlyFetchSizeSetter
@@ -17,3 +17,4 @@
 
 org.apache.shardingsphere.proxy.backend.communication.jdbc.statement.impl.MySQLStatementMemoryStrictlyFetchSizeSetter
 org.apache.shardingsphere.proxy.backend.communication.jdbc.statement.impl.PostgreSQLStatementMemoryStrictlyFetchSizeSetter
+org.apache.shardingsphere.proxy.backend.communication.jdbc.statement.impl.OpenGaussStatementMemoryStrictlyFetchSizeSetter
diff --git a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/resources/conf/config-sharding.yaml b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/resources/conf/config-sharding.yaml
index 621efaa..f0de349 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/resources/conf/config-sharding.yaml
+++ b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/resources/conf/config-sharding.yaml
@@ -75,7 +75,7 @@
 #      shardingAlgorithmName: database_inline
 #  defaultTableStrategy:
 #    none:
-#  
+#
 #  shardingAlgorithms:
 #    database_inline:
 #      type: INLINE
@@ -89,7 +89,7 @@
 #      type: INLINE
 #      props:
 #        algorithm-expression: t_order_item_${order_id % 2}
-#  
+#
 #  keyGenerators:
 #    snowflake:
 #      type: SNOWFLAKE
diff --git a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/OpenGaussFrontendEngine.java b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/OpenGaussFrontendEngine.java
new file mode 100644
index 0000000..41090e1
--- /dev/null
+++ b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/OpenGaussFrontendEngine.java
@@ -0,0 +1,56 @@
+/*
+ * 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.proxy.frontend.postgresql;
+
+import lombok.Getter;
+import org.apache.shardingsphere.db.protocol.codec.DatabasePacketCodecEngine;
+import org.apache.shardingsphere.db.protocol.postgresql.codec.PostgreSQLPacketCodecEngine;
+import org.apache.shardingsphere.db.protocol.postgresql.packet.PostgreSQLPacket;
+import org.apache.shardingsphere.db.protocol.postgresql.packet.command.query.binary.PostgreSQLBinaryStatementRegistry;
+import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
+import org.apache.shardingsphere.proxy.frontend.authentication.AuthenticationEngine;
+import org.apache.shardingsphere.proxy.frontend.command.CommandExecuteEngine;
+import org.apache.shardingsphere.proxy.frontend.context.FrontendContext;
+import org.apache.shardingsphere.proxy.frontend.postgresql.authentication.PostgreSQLAuthenticationEngine;
+import org.apache.shardingsphere.proxy.frontend.postgresql.command.PostgreSQLCommandExecuteEngine;
+import org.apache.shardingsphere.proxy.frontend.spi.DatabaseProtocolFrontendEngine;
+
+/**
+ * Frontend engine for OpenGauss.
+ */
+@Getter
+public final class OpenGaussFrontendEngine implements DatabaseProtocolFrontendEngine {
+    
+    private final FrontendContext frontendContext = new FrontendContext(true, false);
+    
+    private final AuthenticationEngine authenticationEngine = new PostgreSQLAuthenticationEngine();
+    
+    private final CommandExecuteEngine commandExecuteEngine = new PostgreSQLCommandExecuteEngine();
+    
+    private final DatabasePacketCodecEngine<PostgreSQLPacket> codecEngine = new PostgreSQLPacketCodecEngine();
+    
+    @Override
+    public void release(final BackendConnection backendConnection) {
+        PostgreSQLBinaryStatementRegistry.getInstance().unregister(backendConnection.getConnectionId());
+    }
+    
+    @Override
+    public String getDatabaseType() {
+        return "OpenGauss";
+    }
+}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/resources/META-INF/services/org.apache.shardingsphere.proxy.frontend.spi.DatabaseProtocolFrontendEngine b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/resources/META-INF/services/org.apache.shardingsphere.proxy.frontend.spi.DatabaseProtocolFrontendEngine
index 05657ad..4f9324e 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/resources/META-INF/services/org.apache.shardingsphere.proxy.frontend.spi.DatabaseProtocolFrontendEngine
+++ b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/resources/META-INF/services/org.apache.shardingsphere.proxy.frontend.spi.DatabaseProtocolFrontendEngine
@@ -16,3 +16,4 @@
 #
 
 org.apache.shardingsphere.proxy.frontend.postgresql.PostgreSQLFrontendEngine
+org.apache.shardingsphere.proxy.frontend.postgresql.OpenGaussFrontendEngine
\ No newline at end of file
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/parser/OpenGaussParserFacade.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/parser/OpenGaussParserFacade.java
new file mode 100644
index 0000000..cce6487
--- /dev/null
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/parser/OpenGaussParserFacade.java
@@ -0,0 +1,43 @@
+/*
+ * 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.sql.parser.postgresql.parser;
+
+import org.apache.shardingsphere.sql.parser.api.parser.SQLLexer;
+import org.apache.shardingsphere.sql.parser.api.parser.SQLParser;
+import org.apache.shardingsphere.sql.parser.spi.SQLParserFacade;
+
+/**
+ * SQL parser facade for OpenGauss.
+ */
+public final class OpenGaussParserFacade implements SQLParserFacade {
+    
+    @Override
+    public String getDatabaseType() {
+        return "OpenGauss";
+    }
+    
+    @Override
+    public Class<? extends SQLLexer> getLexerClass() {
+        return PostgreSQLLexer.class;
+    }
+    
+    @Override
+    public Class<? extends SQLParser> getParserClass() {
+        return PostgreSQLParser.class;
+    }
+}
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/format/facade/OpenGaussFormatSQLVisitorFacade.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/format/facade/OpenGaussFormatSQLVisitorFacade.java
new file mode 100644
index 0000000..c28e787
--- /dev/null
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/format/facade/OpenGaussFormatSQLVisitorFacade.java
@@ -0,0 +1,72 @@
+/*
+ * 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.sql.parser.postgresql.visitor.format.facade;
+
+import org.apache.shardingsphere.sql.parser.api.visitor.type.DALSQLVisitor;
+import org.apache.shardingsphere.sql.parser.api.visitor.type.DCLSQLVisitor;
+import org.apache.shardingsphere.sql.parser.api.visitor.type.DDLSQLVisitor;
+import org.apache.shardingsphere.sql.parser.api.visitor.type.DMLSQLVisitor;
+import org.apache.shardingsphere.sql.parser.api.visitor.type.RLSQLVisitor;
+import org.apache.shardingsphere.sql.parser.api.visitor.type.TCLSQLVisitor;
+import org.apache.shardingsphere.sql.parser.spi.SQLVisitorFacade;
+
+/**
+ * Format SQL Visitor facade for OpenGauss.
+ */
+public final class OpenGaussFormatSQLVisitorFacade implements SQLVisitorFacade {
+    
+    @Override
+    public Class<? extends DMLSQLVisitor> getDMLVisitorClass() {
+        throw new UnsupportedOperationException();
+    }
+    
+    @Override
+    public Class<? extends DDLSQLVisitor> getDDLVisitorClass() {
+        throw new UnsupportedOperationException();
+    }
+    
+    @Override
+    public Class<? extends TCLSQLVisitor> getTCLVisitorClass() {
+        throw new UnsupportedOperationException();
+    }
+    
+    @Override
+    public Class<? extends DCLSQLVisitor> getDCLVisitorClass() {
+        throw new UnsupportedOperationException();
+    }
+    
+    @Override
+    public Class<? extends DALSQLVisitor> getDALVisitorClass() {
+        throw new UnsupportedOperationException();
+    }
+    
+    @Override
+    public Class<? extends RLSQLVisitor> getRLVisitorClass() {
+        throw new UnsupportedOperationException();
+    }
+    
+    @Override
+    public String getDatabaseType() {
+        return "OpenGauss";
+    }
+    
+    @Override
+    public String getVisitorType() {
+        return "FORMAT";
+    }
+}
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/facade/OpenGaussStatementSQLVisitorFacade.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/facade/OpenGaussStatementSQLVisitorFacade.java
new file mode 100644
index 0000000..a60356a
--- /dev/null
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/facade/OpenGaussStatementSQLVisitorFacade.java
@@ -0,0 +1,77 @@
+/*
+ * 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.sql.parser.postgresql.visitor.statement.facade;
+
+import org.apache.shardingsphere.sql.parser.api.visitor.type.DALSQLVisitor;
+import org.apache.shardingsphere.sql.parser.api.visitor.type.DCLSQLVisitor;
+import org.apache.shardingsphere.sql.parser.api.visitor.type.DDLSQLVisitor;
+import org.apache.shardingsphere.sql.parser.api.visitor.type.DMLSQLVisitor;
+import org.apache.shardingsphere.sql.parser.api.visitor.type.RLSQLVisitor;
+import org.apache.shardingsphere.sql.parser.api.visitor.type.TCLSQLVisitor;
+import org.apache.shardingsphere.sql.parser.postgresql.visitor.statement.impl.PostgreSQLDALStatementSQLVisitor;
+import org.apache.shardingsphere.sql.parser.postgresql.visitor.statement.impl.PostgreSQLDCLStatementSQLVisitor;
+import org.apache.shardingsphere.sql.parser.postgresql.visitor.statement.impl.PostgreSQLDDLStatementSQLVisitor;
+import org.apache.shardingsphere.sql.parser.postgresql.visitor.statement.impl.PostgreSQLDMLStatementSQLVisitor;
+import org.apache.shardingsphere.sql.parser.postgresql.visitor.statement.impl.PostgreSQLTCLStatementSQLVisitor;
+import org.apache.shardingsphere.sql.parser.spi.SQLVisitorFacade;
+
+/**
+ * Statement SQL Visitor facade for OpenGauss.
+ */
+public final class OpenGaussStatementSQLVisitorFacade implements SQLVisitorFacade {
+    
+    @Override
+    public Class<? extends DMLSQLVisitor> getDMLVisitorClass() {
+        return PostgreSQLDMLStatementSQLVisitor.class;
+    }
+    
+    @Override
+    public Class<? extends DDLSQLVisitor> getDDLVisitorClass() {
+        return PostgreSQLDDLStatementSQLVisitor.class;
+    }
+    
+    @Override
+    public Class<? extends TCLSQLVisitor> getTCLVisitorClass() {
+        return PostgreSQLTCLStatementSQLVisitor.class;
+    }
+    
+    @Override
+    public Class<? extends DCLSQLVisitor> getDCLVisitorClass() {
+        return PostgreSQLDCLStatementSQLVisitor.class;
+    }
+    
+    @Override
+    public Class<? extends DALSQLVisitor> getDALVisitorClass() {
+        return PostgreSQLDALStatementSQLVisitor.class;
+    }
+    
+    @Override
+    public Class<? extends RLSQLVisitor> getRLVisitorClass() {
+        return null;
+    }
+    
+    @Override
+    public String getDatabaseType() {
+        return "OpenGauss";
+    }
+    
+    @Override
+    public String getVisitorType() {
+        return "STATEMENT";
+    }
+}
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.DatabaseTypedSQLParserFacade b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.DatabaseTypedSQLParserFacade
index b5461a9..54ae70b 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.DatabaseTypedSQLParserFacade
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.DatabaseTypedSQLParserFacade
@@ -16,3 +16,4 @@
 #
 
 org.apache.shardingsphere.sql.parser.postgresql.parser.PostgreSQLParserFacade
+org.apache.shardingsphere.sql.parser.postgresql.parser.OpenGaussParserFacade
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLVisitorFacade b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLVisitorFacade
index b1fc497..611c2ec 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLVisitorFacade
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLVisitorFacade
@@ -16,4 +16,6 @@
 #
 
 org.apache.shardingsphere.sql.parser.postgresql.visitor.statement.facade.PostgreSQLStatementSQLVisitorFacade
+org.apache.shardingsphere.sql.parser.postgresql.visitor.statement.facade.OpenGaussStatementSQLVisitorFacade
 org.apache.shardingsphere.sql.parser.postgresql.visitor.format.facade.PostgreSQLFormatSQLVisitorFacade
+org.apache.shardingsphere.sql.parser.postgresql.visitor.format.facade.OpenGaussFormatSQLVisitorFacade
diff --git a/shardingsphere-transaction/shardingsphere-transaction-2pc/shardingsphere-transaction-xa/shardingsphere-transaction-xa-core/src/main/java/org/apache/shardingsphere/transaction/xa/jta/connection/XAConnectionFactory.java b/shardingsphere-transaction/shardingsphere-transaction-2pc/shardingsphere-transaction-xa/shardingsphere-transaction-xa-core/src/main/java/org/apache/shardingsphere/transaction/xa/jta/connection/XAConnectionFactory.java
index afad978..171a58e 100644
--- a/shardingsphere-transaction/shardingsphere-transaction-2pc/shardingsphere-transaction-xa/shardingsphere-transaction-xa-core/src/main/java/org/apache/shardingsphere/transaction/xa/jta/connection/XAConnectionFactory.java
+++ b/shardingsphere-transaction/shardingsphere-transaction-2pc/shardingsphere-transaction-xa/shardingsphere-transaction-xa-core/src/main/java/org/apache/shardingsphere/transaction/xa/jta/connection/XAConnectionFactory.java
@@ -51,6 +51,7 @@ public final class XAConnectionFactory {
             case "MariaDB":
                 return new MariaDBXAConnectionWrapper().wrap(xaDataSource, connection);
             case "PostgreSQL":
+            case "OpenGauss":
                 return new PostgreSQLXAConnectionWrapper().wrap(xaDataSource, connection);
             case "H2":
                 return new H2XAConnectionWrapper().wrap(xaDataSource, connection);
diff --git a/shardingsphere-transaction/shardingsphere-transaction-2pc/shardingsphere-transaction-xa/shardingsphere-transaction-xa-core/src/main/java/org/apache/shardingsphere/transaction/xa/jta/datasource/properties/dialect/OpenGaussXADataSourceDefinition.java b/shardingsphere-transaction/shardingsphere-transaction-2pc/shardingsphere-transaction-xa/shardingsphere-transaction-xa-core/src/main/java/org/apache/shardingsphere/transaction/xa/jta/datasource/properties/dialect/OpenGaussXADataSo [...]
new file mode 100644
index 0000000..9905384
--- /dev/null
+++ b/shardingsphere-transaction/shardingsphere-transaction-2pc/shardingsphere-transaction-xa/shardingsphere-transaction-xa-core/src/main/java/org/apache/shardingsphere/transaction/xa/jta/datasource/properties/dialect/OpenGaussXADataSourceDefinition.java
@@ -0,0 +1,39 @@
+/*
+ * 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.transaction.xa.jta.datasource.properties.dialect;
+
+import org.apache.shardingsphere.transaction.xa.jta.datasource.properties.XADataSourceDefinition;
+
+import java.util.Collection;
+import java.util.Collections;
+
+/**
+ * XA data source definition for PostgreSQL.
+ */
+public final class OpenGaussXADataSourceDefinition implements XADataSourceDefinition {
+    
+    @Override
+    public String getDatabaseType() {
+        return "OpenGauss";
+    }
+    
+    @Override
+    public Collection<String> getXADriverClassName() {
+        return Collections.singletonList("org.postgresql.xa.PGXADataSource");
+    }
+}
diff --git a/shardingsphere-transaction/shardingsphere-transaction-2pc/shardingsphere-transaction-xa/shardingsphere-transaction-xa-core/src/main/resources/META-INF/services/org.apache.shardingsphere.transaction.xa.jta.datasource.properties.XADataSourceDefinition b/shardingsphere-transaction/shardingsphere-transaction-2pc/shardingsphere-transaction-xa/shardingsphere-transaction-xa-core/src/main/resources/META-INF/services/org.apache.shardingsphere.transaction.xa.jta.datasource.properties.X [...]
index fc31195..6e707a8 100644
--- a/shardingsphere-transaction/shardingsphere-transaction-2pc/shardingsphere-transaction-xa/shardingsphere-transaction-xa-core/src/main/resources/META-INF/services/org.apache.shardingsphere.transaction.xa.jta.datasource.properties.XADataSourceDefinition
+++ b/shardingsphere-transaction/shardingsphere-transaction-2pc/shardingsphere-transaction-xa/shardingsphere-transaction-xa-core/src/main/resources/META-INF/services/org.apache.shardingsphere.transaction.xa.jta.datasource.properties.XADataSourceDefinition
@@ -18,6 +18,7 @@
 org.apache.shardingsphere.transaction.xa.jta.datasource.properties.dialect.MySQLXADataSourceDefinition
 org.apache.shardingsphere.transaction.xa.jta.datasource.properties.dialect.MariaDBXADataSourceDefinition
 org.apache.shardingsphere.transaction.xa.jta.datasource.properties.dialect.PostgreSQLXADataSourceDefinition
+org.apache.shardingsphere.transaction.xa.jta.datasource.properties.dialect.OpenGaussXADataSourceDefinition
 org.apache.shardingsphere.transaction.xa.jta.datasource.properties.dialect.OracleXADataSourceDefinition
 org.apache.shardingsphere.transaction.xa.jta.datasource.properties.dialect.SQLServerXADataSourceDefinition
 org.apache.shardingsphere.transaction.xa.jta.datasource.properties.dialect.H2XADataSourceDefinition

[shardingsphere] 02/03: Update OpenGaussDataSourceMetaData

Posted by wu...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

wuweijie pushed a commit to branch opengauss_adapt
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git

commit f06bf4c72d524d00eaffd212d7f2ee3b37ad96bb
Author: zhangliang <zh...@apache.org>
AuthorDate: Mon May 10 13:24:34 2021 +0800

    Update OpenGaussDataSourceMetaData
---
 .../infra/database/type/dialect/OpenGaussDatabaseType.java          | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/type/dialect/OpenGaussDatabaseType.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/type/dialect/OpenGaussDatabaseType.java
index 9b3d2e0..d41e53e 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/type/dialect/OpenGaussDatabaseType.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/type/dialect/OpenGaussDatabaseType.java
@@ -17,7 +17,7 @@
 
 package org.apache.shardingsphere.infra.database.type.dialect;
 
-import org.apache.shardingsphere.infra.database.metadata.dialect.MariaDBDataSourceMetaData;
+import org.apache.shardingsphere.infra.database.metadata.dialect.OpenGaussDataSourceMetaData;
 import org.apache.shardingsphere.infra.database.type.BranchDatabaseType;
 import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import org.apache.shardingsphere.infra.database.type.DatabaseTypeRegistry;
@@ -48,8 +48,8 @@ public final class OpenGaussDatabaseType implements BranchDatabaseType {
     }
     
     @Override
-    public MariaDBDataSourceMetaData getDataSourceMetaData(final String url, final String username) {
-        return new MariaDBDataSourceMetaData(url);
+    public OpenGaussDataSourceMetaData getDataSourceMetaData(final String url, final String username) {
+        return new OpenGaussDataSourceMetaData(url);
     }
     
     @Override

[shardingsphere] 01/03: Add OpenGauss Database type (#10292)

Posted by wu...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

wuweijie pushed a commit to branch opengauss_adapt
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git

commit 180f75a40af893b77dca28e708acb04b5f189279
Author: Liang Zhang <te...@163.com>
AuthorDate: Mon May 10 12:53:24 2021 +0800

    Add OpenGauss Database type (#10292)
---
 .../dialect/OpenGaussDataSourceMetaData.java       | 57 +++++++++++++++++++++
 .../type/dialect/OpenGaussDatabaseType.java        | 59 ++++++++++++++++++++++
 ...shardingsphere.infra.database.type.DatabaseType |  1 +
 3 files changed, 117 insertions(+)

diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/metadata/dialect/OpenGaussDataSourceMetaData.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/metadata/dialect/OpenGaussDataSourceMetaData.java
new file mode 100644
index 0000000..84974b3
--- /dev/null
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/metadata/dialect/OpenGaussDataSourceMetaData.java
@@ -0,0 +1,57 @@
+/*
+ * 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.infra.database.metadata.dialect;
+
+import com.google.common.base.Strings;
+import lombok.Getter;
+import org.apache.shardingsphere.infra.database.metadata.DataSourceMetaData;
+import org.apache.shardingsphere.infra.database.metadata.UnrecognizedDatabaseURLException;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * Data source meta data for OpenGauss.
+ */
+@Getter
+public final class OpenGaussDataSourceMetaData implements DataSourceMetaData {
+    
+    private static final int DEFAULT_PORT = 5432;
+    
+    private final String hostName;
+    
+    private final int port;
+    
+    private final String catalog;
+    
+    private final String schema;
+    
+    // TODO fix OpenGauss's url pattern
+    private final Pattern pattern = Pattern.compile("jdbc:openguass://([\\w\\-\\.]+):?([0-9]*),?.*?/([\\w\\-]+)?\\S*", Pattern.CASE_INSENSITIVE);
+    
+    public OpenGaussDataSourceMetaData(final String url) {
+        Matcher matcher = pattern.matcher(url);
+        if (!matcher.find()) {
+            throw new UnrecognizedDatabaseURLException(url, pattern.pattern());
+        }
+        hostName = matcher.group(1);
+        port = Strings.isNullOrEmpty(matcher.group(2)) ? DEFAULT_PORT : Integer.parseInt(matcher.group(2));
+        catalog = matcher.group(3);
+        schema = null;
+    }
+}
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/type/dialect/OpenGaussDatabaseType.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/type/dialect/OpenGaussDatabaseType.java
new file mode 100644
index 0000000..9b3d2e0
--- /dev/null
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/type/dialect/OpenGaussDatabaseType.java
@@ -0,0 +1,59 @@
+/*
+ * 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.infra.database.type.dialect;
+
+import org.apache.shardingsphere.infra.database.metadata.dialect.MariaDBDataSourceMetaData;
+import org.apache.shardingsphere.infra.database.type.BranchDatabaseType;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
+import org.apache.shardingsphere.infra.database.type.DatabaseTypeRegistry;
+import org.apache.shardingsphere.sql.parser.sql.common.constant.QuoteCharacter;
+
+import java.util.Collection;
+import java.util.Collections;
+
+/**
+ * Database type of OpenGauss.
+ */
+public final class OpenGaussDatabaseType implements BranchDatabaseType {
+    
+    @Override
+    public String getName() {
+        return "OpenGauss";
+    }
+    
+    @Override
+    public QuoteCharacter getQuoteCharacter() {
+        return QuoteCharacter.QUOTE;
+    }
+    
+    @Override
+    public Collection<String> getJdbcUrlPrefixes() {
+        // TODO fix OpenGauss's url pattern
+        return Collections.singleton(String.format("jdbc:%s:", getName().toLowerCase()));
+    }
+    
+    @Override
+    public MariaDBDataSourceMetaData getDataSourceMetaData(final String url, final String username) {
+        return new MariaDBDataSourceMetaData(url);
+    }
+    
+    @Override
+    public DatabaseType getTrunkDatabaseType() {
+        return DatabaseTypeRegistry.getActualDatabaseType("PostgreSQL");
+    }
+}
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.type.DatabaseType b/shardingsphere-infra/shardingsphere-infra-common/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.type.DatabaseType
index 3c34e38..8a86232 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.type.DatabaseType
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.type.DatabaseType
@@ -19,6 +19,7 @@ org.apache.shardingsphere.infra.database.type.dialect.SQL92DatabaseType
 org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType
 org.apache.shardingsphere.infra.database.type.dialect.MariaDBDatabaseType
 org.apache.shardingsphere.infra.database.type.dialect.PostgreSQLDatabaseType
+org.apache.shardingsphere.infra.database.type.dialect.OpenGaussDatabaseType
 org.apache.shardingsphere.infra.database.type.dialect.OracleDatabaseType
 org.apache.shardingsphere.infra.database.type.dialect.SQLServerDatabaseType
 org.apache.shardingsphere.infra.database.type.dialect.H2DatabaseType