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/04 02:44:27 UTC

[shardingsphere] branch opengauss_adapt updated (537c95d -> 5bae300)

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 537c95d  add jdbc:opengauss supoort (#10601)
    omit 4cc1ad5  Merge pull request #10572 from apache/master
    omit cc158d5  Merge pull request #10523 from apache/master
    omit 06fe196  Update OpenGaussDataSourceMetaData
    omit 05fe3d4  Add OpenGauss Database type (#10292)
     add e791532  fix governance example & SQL error (#10571)
     add 4f903e6  support mysql & pg tablespace statement (#10562)
     add ee59f10  fix sharding-raw-jdbc-example (#10573)
     add 0380988  Remove unused code (#10574)
     add cb6faae  complete alter table partition grammar (#10410)
     add 7793139  Update scaling integration test (#10560)
     add d378440  Clarify error message in JDBCBackendDataSource (#10579)
     add 8368e92  For code format (#10585)
     add e56ca26  add global rule changed listener factory,update governance doc (#10561)
     add b554be7  Minor refactor CreateShardingTableRuleBackendHandler (#10587)
     add 924abed  Use enum to refactor PostgreSQLCommand (#10588)
     add 80ea7d7  Fix unable to configure Integer type password for datasource in YAML (#10586)
     add 36a7325  Fix StackOverFlow may occur when SQL is too long (#10578)
     add 962f04a  fix proxy execute select sum npe (#10582)
     add 15c1132  fixed #10453 (#10576)
     add 7428cbe  Ignore ScalingIT for NPE reason (#10591)
     add 4186a0d  Fix test case error for #10588 (#10592)
     add fb81efb  Fix scaling-it (#10593)
     add 9ecd81a  Fix test case error for #10588
     add 6fb4127  Rename PostGovernanceRepositoryEventListenerTest
     add a52cc18  Refactor StatesNode
     add 95bd638  Move GovernanceListenerFactory
     add 75da68b  Refactor GovernanceListenerFactory
     add 22ab484  Rename GovernanceListenerBuilder
     add 656c14b  Rename AbstractGovernanceListener
     add d656ecd  Rename GovernanceListener
     add 45a818d  Refactor GovernanceListenerManager
     add 67bc8bc  Refactor GovernanceListenerManager
     add 48c791a  Refactor GovernanceListenerManager
     add 6e93a83  Refactor GovernanceListener
     add 6291f76  Refactor GovernanceListener
     add da0ad80  Refactor GovernanceListener.getWatchingKeys
     add 56b0f4a  Refactor GovernanceListenerBuilder
     add 845fe0d  Refactor GovernanceListenerBuilder
     add 50c6664  Refactor GovernanceListenerBuilder
     add b417323  Merge GovernanceListenerBuilder and GovernanceListener
     add 39ab839  Rename GovernanceListenerFactory
     add acc961e  Rename GovernanceWatcher
     add 7cd1c9e  Rename GovernanceWatcher.createGovernanceEvent
     add 7f14ff3  Rename test cases
     add f1b1b63  Merge pull request #10594 from terrymanu/dev
     add c725c08  Update doc for GovernanceWatcher SPI (#10595)
     add 759761d  delete duplicate code in createRDLBackendHandler method (#10602)
     add 0e5a4c6  optimize show index merge logic (#10596)
     add 7d6c812  Create new package federate execution (#10603)
     add 7fef4f0  Merge DataSourceChangedEvent and DataSourceAlteredEvent (#10608)
     add 7c5d7db  Rename ResourceState (#10609)
     add bf74c30  Improve the handling of FederateRowExecutor (#10611)
     add cf2c610  Minor refactor GlobalRuleChangedListener (#10610)
     add e41583d  Import ShardingSphereOptimizer (#10612)
     add 916f121  Rewrite constraints' name in logic SQL (#10606)
     add 822dd36  fix #10457 (#10598)
     add 91534e5  ## Fix [Issue10604](https://github.com/apache/shardingsphere/issues/10604) (#10613)
     add 4c091bf  Refactor governance.core.registry package (#10615)
     add 7cb8995  Fixes drop single rule exception (#10617)
     new 358c05a  Add OpenGauss Database type (#10292)
     new 69f7895  Update OpenGaussDataSourceMetaData
     new 5bae300  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   (537c95d)
            \
             N -- N -- N   refs/heads/opengauss_adapt (5bae300)

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:
 docs/document/content/dev-manual/governance.cn.md  |  37 +++---
 docs/document/content/dev-manual/governance.en.md  |  19 +--
 ...-local-zookeeper-readwrite-splitting.properties |   2 +-
 .../raw/jdbc/YamlConfigurationExampleMain.java     |   2 +-
 examples/src/resources/manual_schema.sql           |  44 +++----
 .../src/main/resources/bin/start.sh                |   2 +-
 .../src/main/antlr4/imports/RQLStatement.g4        |   8 +-
 .../distsql/parser/core/DistSQLVisitor.java        | 145 ++++++++++++---------
 .../api/DistSQLStatementParserEngineTest.java      |  38 ++++++
 .../segment/rdl/DatabaseDiscoveryRuleSegment.java  |   8 +-
 .../parser/segment/rdl/EncryptColumnSegment.java   |   8 +-
 .../parser/segment/rdl/EncryptRuleSegment.java     |   6 +-
 .../segment/rdl/ReadwriteSplittingRuleSegment.java |   4 +-
 .../statement/rdl/AlterShardingRuleStatement.java  |  48 -------
 .../rdl/alter/AlterEncryptRuleStatement.java       |   2 +-
 .../AlterReadwriteSplittingRuleStatement.java      |   2 +-
 .../create/impl/CreateEncryptRuleStatement.java    |   2 +-
 .../impl/CreateShardingTableRuleStatement.java     |   3 +-
 .../show/ShowDatabaseDiscoveryRulesStatement.java  |   2 +-
 .../rql/show/ShowEncryptRulesStatement.java        |   4 +-
 .../show/ShowReadwriteSplittingRulesStatement.java |   2 +-
 .../statement/rql/show/ShowRulesStatement.java     |   4 +-
 .../ShowShardingBindingTableRulesStatement.java    |   2 +-
 .../ShowShardingBroadcastTableRulesStatement.java  |   2 +-
 .../rql/show/ShowShardingTableRulesStatement.java  |   4 +-
 .../ShardingRuleStatementConverterTest.java        |   4 +-
 .../merge/dal/ShardingDALResultMerger.java         |  10 +-
 .../merge/dal/show/ShowIndexMergedResult.java      |  61 +++++++++
 .../merge/dal/ShardingDALResultMergerTest.java     |  18 ++-
 .../merge/dal/show/ShowIndexMergedResultTest.java  |  66 ++++++++++
 .../ShardingSQLRewriteContextDecorator.java        |   2 +-
 .../generator/impl/ConstraintTokenGenerator.java   |  61 +++++++++
 .../rewrite/token/pojo/ConstraintToken.java        |  77 +++++++++++
 .../token/pojo/ShardingTokenGenerateBuilder.java   |   2 +
 .../src/test/resources/sharding/alter.xml          |  72 +++++-----
 .../engine/type/ShardingRouteEngineFactory.java    |   6 +
 .../federated/ShardingFederatedRoutingEngine.java  |   2 +-
 .../type/single/SingleTablesRoutingEngine.java     |   2 +-
 .../type/single/SingleTablesRoutingEngineTest.java |   4 +-
 .../ShardingAlterTableStatementValidatorTest.java  |   5 +-
 ...tener.java => PrivilegeNodeChangedWatcher.java} |  23 ++--
 .../listener/event/AuthorityChangedEvent.java      |   2 +-
 .../PrivilegeNodeChangedListenerFactory.java       |  43 ------
 .../metadata/GovernanceMetaDataContexts.java       |  27 ++--
 .../process/GovernanceExecuteProcessReporter.java  |   6 +-
 .../transaction/GovernanceTransactionContexts.java |   2 +-
 ...ere.governance.core.registry.GovernanceWatcher} |   2 +-
 .../listener/PrivilegeNodeChangedListenerTest.java |   7 +-
 .../metadata/GovernanceMetaDataContextsTest.java   |  20 +--
 .../GovernanceTransactionContextsTest.java         |   2 +-
 .../governance/core/GovernanceFacade.java          |   8 +-
 .../core/lock/ShardingSphereDistributeLock.java    |   8 +-
 .../lock => lock/event}/LockNotificationEvent.java |   4 +-
 .../lock => lock/event}/LockReleasedEvent.java     |   4 +-
 .../core/lock/{impl => service}/LockAck.java       |   2 +-
 .../core/lock/{impl => service}/LockNode.java      |   2 +-
 .../{impl => service}/LockRegistryService.java     |   4 +-
 .../watcher/LockChangedWatcher.java}               |  31 +++--
 .../{listener/event => }/GovernanceEvent.java      |   2 +-
 ...ListenerFactory.java => GovernanceWatcher.java} |  32 +++--
 .../core/registry/GovernanceWatcherFactory.java    |  63 +++++++++
 .../governance/core/registry/RegistryCenter.java   |  18 +--
 .../registry/cache/ScalingRegistrySubscriber.java  |   9 +-
 .../event/scaling => cache}/StartScalingEvent.java |   2 +-
 .../event/datasource/DataSourceAddedEvent.java     |   5 +-
 .../event/datasource/DataSourceAlteredEvent.java   |   7 +-
 .../datasource/DataSourceChangeCompletedEvent.java |   4 +-
 .../event/props/PropertiesChangedEvent.java        |   4 +-
 .../rule/GlobalRuleConfigurationsChangedEvent.java |   6 +-
 .../event/rule/RuleConfigurationCachedEvent.java   |   4 +-
 .../event/rule/RuleConfigurationsAlteredEvent.java |   2 +-
 .../event/rule/RuleConfigurationsChangedEvent.java |   4 +-
 .../event/rule/SwitchRuleConfigurationEvent.java   |   2 +-
 .../event/schema/SchemaChangedEvent.java           |   4 +-
 .../service}/GlobalRegistryService.java            |   2 +-
 .../service}/SchemaBasedRegistryService.java       |   2 +-
 .../service}/impl/DataSourceRegistryService.java   |  10 +-
 .../service}/impl/GlobalRuleRegistryService.java   |   8 +-
 .../service}/impl/PropertiesRegistryService.java   |   6 +-
 .../service}/impl/SchemaRuleRegistryService.java   |   8 +-
 .../config => config/service}/node/GlobalNode.java |   2 +-
 .../service}/node/SchemaMetadataNode.java          |   2 +-
 .../watcher/GlobalRuleChangedWatcher.java}         |  29 +++--
 .../watcher/PropertiesChangedWatcher.java}         |  28 ++--
 .../listener/GovernanceListenerManager.java        |  55 --------
 .../PostGovernanceRepositoryEventListener.java     |  60 ---------
 .../DataSourceStateChangedListenerFactory.java     |  43 ------
 .../factory/LockChangedListenerFactory.java        |  43 ------
 .../factory/MetaDataChangedListenerFactory.java    |  43 ------
 .../factory/PropertiesChangedListenerFactory.java  |  43 ------
 .../TerminalStateChangedListenerFactory.java       |  43 ------
 .../event}/MetaDataChangedEvent.java               |   2 +-
 .../event}/MetaDataCreatedEvent.java               |   2 +-
 .../event}/MetaDataDroppedEvent.java               |   2 +-
 .../event}/SchemaAddedEvent.java                   |   4 +-
 .../event}/SchemaDeletedEvent.java                 |   4 +-
 .../service}/SchemaRegistryService.java            |   8 +-
 .../watcher/MetaDataChangedWatcher.java}           |  98 +++++++-------
 .../event}/ExecuteProcessReportEvent.java          |   2 +-
 .../event}/ExecuteProcessSummaryReportEvent.java   |   2 +-
 .../event}/ExecuteProcessUnitReportEvent.java      |   2 +-
 .../event}/ShowProcessListRequestEvent.java        |   2 +-
 .../event}/ShowProcessListResponseEvent.java       |   2 +-
 .../process => process/service}/ProcessNode.java   |   2 +-
 .../service}/ProcessRegistrySubscriber.java        |  12 +-
 .../ResourceState.java}                            |  13 +-
 .../event}/DisabledStateChangedEvent.java          |   4 +-
 .../event}/PrimaryStateChangedEvent.java           |   4 +-
 .../service}/DataSourceStatusRegistryService.java  |   8 +-
 .../state => state/service}/StatesNode.java        |  14 +-
 .../watcher/DataSourceStateChangedWatcher.java}    |  34 +++--
 .../watcher/TerminalStateChangedWatcher.java}      |  29 +++--
 .../core/registry/util/SchemaNameUtil.java         |  45 -------
 ...ere.governance.core.registry.GovernanceWatcher} |  11 +-
 .../governance/core/GovernanceFacadeTest.java      |  20 +--
 .../lock/ShardingSphereDistributeLockTest.java     |   2 +-
 .../core/lock/{impl => service}/LockNodeTest.java  |   2 +-
 .../{impl => service}/LockRegistryServiceTest.java |   2 +-
 .../watcher/LockChangedWatcherTest.java}           |  21 +--
 .../core/registry/RegistryCenterTest.java          |   8 +-
 .../cache/ScalingRegistrySubscriberTest.java       |   2 +-
 .../impl/DataSourceRegistryServiceTest.java        |   6 +-
 .../impl/GlobalRuleRegistryServiceTest.java        |   2 +-
 .../impl/PropertiesRegistryServiceTest.java        |   2 +-
 .../impl/SchemaRuleRegistryServiceTest.java        |   4 +-
 .../service}/node/GlobalNodeTest.java              |   2 +-
 .../service}/node/SchemaMetadataNodeTest.java      |   2 +-
 .../watcher/GlobalRuleChangedWatcherTest.java}     |  33 +++--
 .../watcher/PropertiesChangedWatcherTest.java}     |  13 +-
 ...tRegistryCenterRepositoryEventListenerTest.java |  83 ------------
 .../listener/impl/GovernanceListenerTest.java      |  41 ------
 .../service}/SchemaRegistryServiceTest.java        |   6 +-
 .../watcher/MetaDataChangedWatcherTest.java}       |  11 +-
 .../DataSourceStatusRegistryServiceTest.java       |   6 +-
 .../state => state/service}/StatesNodeTest.java    |   2 +-
 .../DataSourceStateChangedWatcherTest.java}        |  13 +-
 .../watcher/TerminalStateChangedWatcherTest.java}  |  14 +-
 .../governance/core/registry/util/FieldUtil.java   |  45 -------
 .../api/listener/DataChangedEventListener.java     |   2 +-
 .../statement/ddl/AlterTableStatementContext.java  |  39 +++++-
 .../statement/ddl/CreateTableStatementContext.java |   9 +-
 .../infra/binder/type/ConstraintAvailable.java     |  18 +--
 .../config/datasource/DataSourceConfiguration.java |   5 +-
 .../infra/config/DataSourceConfigurationTest.java  |  11 +-
 .../infra/context/metadata/MetaDataContexts.java   |   2 +-
 .../execute/FederateExecutor.java}                 |   6 +-
 .../execute/FederateJDBCExecutor.java}             |   8 +-
 .../execute/raw/FederateExecuteDataContext.java}   |   6 +-
 .../execute/raw/FederateRawExecutor.java}          |  45 +++----
 .../schema/FederateLogicSchema.java}               |  20 +--
 .../schema/row/FederateRowEnumerator.java}         |   8 +-
 .../schema/row/FederateRowExecutor.java}           |  27 ++--
 .../schema/table/AbstractFederateTable.java}       |  12 +-
 .../schema/table/FederateFilterableTable.java}     |  20 ++-
 .../FederateExecutionContextGenerator.java}        |  24 ++--
 .../generator/FederateExecutionSQLGenerator.java}  |  18 ++-
 .../execute/raw/plan/PlannerInitializer.java       |  47 -------
 .../optimize/schema/CalciteLogicSchemaFactory.java |  51 --------
 .../infra/optimize/ShardingSphereOptimizer.java    |   2 +
 .../optimize/context/OptimizeContextFactory.java   |   4 +-
 .../{ => core}/convert/SqlNodeConverter.java       |   2 +-
 .../{ => core}/plan/PlannerInitializer.java        |   2 +-
 .../{ => core}/schema/LogicSchemaMetadata.java     |   2 +-
 .../{ => core}/schema/LogicSchemaMetadatas.java    |   2 +-
 .../{ => core}/schema/LogicTableMetadata.java      |   2 +-
 .../infra/route/context/RouteContext.java          |   2 +-
 .../jdbc/adapter/AbstractStatementAdapter.java     |  10 +-
 .../statement/ShardingSpherePreparedStatement.java |  34 ++---
 .../core/statement/ShardingSphereStatement.java    |  34 ++---
 ...iteTest.java => AbstractSQLFederationTest.java} |  14 +-
 ...ctShardingSphereDataSourceForFederateTest.java} |  22 ++--
 ...Test.java => FederatePrepareStatementTest.java} |  50 +++----
 ...atementTest.java => FederateStatementTest.java} |  54 ++++----
 .../{config-calcite.yaml => config-federate.yaml}  |  28 ++--
 .../src/test/resources/sql/calcite_data_1.sql      |  47 -------
 .../src/test/resources/sql/calcite_data_2.sql      |  47 -------
 .../{calcite_data_0.sql => federate_data_0.sql}    |  18 +--
 .../src/test/resources/sql/federate_data_1.sql     |  47 +++++++
 .../src/test/resources/sql/federate_data_2.sql     |  47 +++++++
 .../src/test/resources/sql/jdbc_init_calcite_1.sql |  23 ----
 ...init_calcite_0.sql => jdbc_init_federate_0.sql} |   6 +-
 .../test/resources/sql/jdbc_init_federate_1.sql    |  23 ++++
 .../statement/CircuitBreakerPreparedStatement.java |   4 +-
 .../GovernanceShardingSphereDataSourceTest.java    |  12 +-
 .../backend/communication/ProxySQLExecutor.java    |  26 ++--
 .../jdbc/connection/BackendConnection.java         |  14 +-
 .../jdbc/datasource/JDBCBackendDataSource.java     |   3 +-
 .../header/query/impl/QueryHeaderBuilder.java      |   3 +-
 .../mysql/executor/ShowProcessListExecutor.java    |   4 +-
 .../text/distsql/rdl/RDLBackendHandlerFactory.java |   3 -
 .../rdl/impl/AddResourceBackendHandler.java        |   2 +-
 .../AlterDatabaseDiscoveryRuleBackendHandler.java  |  24 ++--
 .../rdl/impl/AlterEncryptRuleBackendHandler.java   |  20 +--
 .../AlterReadwriteSplittingRuleBackendHandler.java |  20 +--
 ...terShardingBindingTableRulesBackendHandler.java |   8 +-
 ...rShardingBroadcastTableRulesBackendHandler.java |   4 +-
 .../impl/AlterShardingTableRuleBackendHandler.java |  30 ++---
 .../rdl/impl/CreateDatabaseBackendHandler.java     |   2 +-
 .../CreateDatabaseDiscoveryRuleBackendHandler.java |  34 ++---
 .../rdl/impl/CreateEncryptRuleBackendHandler.java  |  24 ++--
 ...CreateReadwriteSplittingRuleBackendHandler.java |  26 ++--
 ...ateShardingBindingTableRulesBackendHandler.java |   6 +-
 ...eShardingBroadcastTableRulesBackendHandler.java |   2 +-
 .../CreateShardingTableRuleBackendHandler.java     |  46 ++++---
 .../rdl/impl/DropDatabaseBackendHandler.java       |   6 +-
 .../DropDatabaseDiscoveryRuleBackendHandler.java   |  10 +-
 .../rdl/impl/DropEncryptRuleBackendHandler.java    |   8 +-
 .../DropReadwriteSplittingRuleBackendHandler.java  |  10 +-
 .../rdl/impl/DropResourceBackendHandler.java       |  20 ++-
 ...ropShardingBindingTableRulesBackendHandler.java |   6 +-
 ...pShardingBroadcastTableRulesBackendHandler.java |   6 +-
 .../impl/DropShardingTableRuleBackendHandler.java  |  28 ++--
 .../jdbc/datasource/JDBCBackendDataSourceTest.java |   3 +-
 .../header/query/impl/QueryHeaderBuilderTest.java  |   8 ++
 .../impl/GovernanceBootstrapInitializerTest.java   |   4 +-
 .../frontend/command/CommandExecutorTask.java      |   2 +-
 .../netty/FrontendChannelInboundHandler.java       |   2 +-
 .../frontend/command/CommandExecutorTaskTest.java  |   8 +-
 .../command/query/PostgreSQLCommand.java           |  61 +++++----
 .../binary/bind/PostgreSQLComBindExecutor.java     |   2 +-
 .../query/text/PostgreSQLComQueryExecutor.java     |   2 +-
 .../command/query/PostgreSQLCommandTest.java       |  44 ++++---
 .../binary/bind/PostgreSQLComBindExecutorTest.java |   6 +-
 .../query/text/PostgreSQLComQueryExecutorTest.java |   4 +-
 .../scaling/core/api/ScalingWorker.java            |   4 +-
 .../scaling/core/job/FinishedCheckJob.java         |   2 +-
 .../src/main/antlr4/imports/mysql/BaseRule.g4      |   6 +-
 .../src/main/antlr4/imports/mysql/DDLStatement.g4  |  26 ++--
 .../sql/parser/autogen/MySQLStatement.g4           |   3 +
 .../impl/MySQLDDLStatementSQLVisitor.java          |  60 ++++++++-
 .../statement/impl/MySQLStatementSQLVisitor.java   |   7 +
 .../src/main/antlr4/imports/oracle/BaseRule.g4     |   5 +-
 .../src/main/antlr4/imports/oracle/DDLStatement.g4 | 142 ++++++++++++++++++--
 .../main/antlr4/imports/oracle/OracleKeyword.g4    |  16 +++
 .../impl/OracleDDLStatementSQLVisitor.java         |  70 +++++++++-
 .../statement/impl/OracleStatementSQLVisitor.java  |   7 +
 .../src/main/antlr4/imports/postgresql/BaseRule.g4 |   4 +
 .../main/antlr4/imports/postgresql/DDLStatement.g4 |  26 ++--
 .../sql/parser/autogen/PostgreSQLStatement.g4      |   3 +
 .../impl/PostgreSQLDDLStatementSQLVisitor.java     |  87 ++++++++++++-
 .../impl/PostgreSQLStatementSQLVisitor.java        |   7 +
 .../src/main/antlr4/imports/sql92/BaseRule.g4      |   6 +-
 .../src/main/antlr4/imports/sql92/DDLStatement.g4  |   3 +-
 .../impl/SQL92DDLStatementSQLVisitor.java          |  33 ++++-
 .../src/main/antlr4/imports/sqlserver/BaseRule.g4  |   4 +
 .../main/antlr4/imports/sqlserver/DDLStatement.g4  |  12 +-
 .../impl/SQLServerDDLStatementSQLVisitor.java      |  40 +++++-
 .../impl/SQLServerStatementSQLVisitor.java         |   7 +
 .../sql/parser/core/visitor/SQLVisitorRule.java    |   6 +
 .../constraint/ConstraintDefinitionSegment.java    |  22 +++-
 .../segment/ddl/constraint/ConstraintSegment.java  |  15 ++-
 .../alter/AddConstraintDefinitionSegment.java      |  19 ++-
 .../alter/DropConstraintDefinitionSegment.java     |  18 +--
 .../alter/ModifyConstraintDefinitionSegment.java   |  18 +--
 .../alter/ValidateConstraintDefinitionSegment.java |  18 +--
 .../common/statement/ddl/AlterTableStatement.java  |  13 +-
 .../statement/ddl/AlterTablespaceStatement.java    |  13 +-
 .../statement/ddl/CreateTablespaceStatement.java   |  13 +-
 .../statement/ddl/DropTablespaceStatement.java     |  13 +-
 .../mysql/ddl/MySQLAlterTablespaceStatement.java   |  15 +--
 .../mysql/ddl/MySQLCreateTablespaceStatement.java  |  15 +--
 .../mysql/ddl/MySQLDropTablespaceStatement.java    |  15 +--
 .../ddl/PostgreSQLAlterTablespaceStatement.java    |  15 +--
 .../ddl/PostgreSQLCreateTablespaceStatement.java   |  15 +--
 .../ddl/PostgreSQLDropTablespaceStatement.java     |  15 +--
 .../definition/ConstraintDefinitionAssert.java     |  19 +--
 .../ddl/impl/AlterTableStatementAssert.java        |   6 +-
 .../definition/ExpectedConstraintDefinition.java   |   3 +
 .../src/main/resources/case/ddl/alter-table.xml    |  57 ++++++--
 .../src/main/resources/case/ddl/create-table.xml   |  20 +--
 .../src/main/resources/sql/supported/ddl/alter.xml |   7 +
 shardingsphere-test/pom.xml                        |   1 +
 .../pom.xml                                        |   1 +
 .../integration/scaling/test/mysql/ScalingIT.java  |  47 ++++++-
 .../test/mysql/env/IntegrationTestEnvironment.java |  11 +-
 .../test/mysql/fixture/FixtureWriteThread.java     | 109 ++++++++++++++++
 .../scaling/test/mysql/util/ExecuteUtil.java       |  36 +++--
 .../scaling/test/mysql/util/Executor.java          |  13 +-
 .../scaling/test/mysql/util/ScalingUtil.java       |  65 ++++++---
 279 files changed, 2684 insertions(+), 2238 deletions(-)
 delete mode 100644 shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/AlterShardingRuleStatement.java
 create mode 100644 shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-merge/src/main/java/org/apache/shardingsphere/sharding/merge/dal/show/ShowIndexMergedResult.java
 create mode 100644 shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-merge/src/test/java/org/apache/shardingsphere/sharding/merge/dal/show/ShowIndexMergedResultTest.java
 create mode 100644 shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-rewrite/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/ConstraintTokenGenerator.java
 create mode 100644 shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-rewrite/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/ConstraintToken.java
 rename shardingsphere-governance/shardingsphere-governance-context/src/main/java/org/apache/shardingsphere/governance/context/authority/listener/{PrivilegeNodeChangedListener.java => PrivilegeNodeChangedWatcher.java} (65%)
 delete mode 100644 shardingsphere-governance/shardingsphere-governance-context/src/main/java/org/apache/shardingsphere/governance/context/authority/listener/factory/PrivilegeNodeChangedListenerFactory.java
 rename shardingsphere-governance/shardingsphere-governance-context/src/main/resources/META-INF/services/{org.apache.shardingsphere.governance.core.registry.listener.GovernanceListenerFactory => org.apache.shardingsphere.governance.core.registry.GovernanceWatcher} (95%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/{registry/listener/event/lock => lock/event}/LockNotificationEvent.java (85%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/{registry/listener/event/lock => lock/event}/LockReleasedEvent.java (85%)
 copy shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/lock/{impl => service}/LockAck.java (93%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/lock/{impl => service}/LockNode.java (97%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/lock/{impl => service}/LockRegistryService.java (97%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/{registry/listener/impl/LockChangedListener.java => lock/watcher/LockChangedWatcher.java} (60%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{listener/event => }/GovernanceEvent.java (92%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{listener/GovernanceListenerFactory.java => GovernanceWatcher.java} (59%)
 create mode 100644 shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/GovernanceWatcherFactory.java
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{listener/event/scaling => cache}/StartScalingEvent.java (94%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{listener => config}/event/datasource/DataSourceAddedEvent.java (83%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{listener => config}/event/datasource/DataSourceAlteredEvent.java (83%)
 copy shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{listener => config}/event/datasource/DataSourceChangeCompletedEvent.java (88%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{listener => config}/event/props/PropertiesChangedEvent.java (86%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{listener => config}/event/rule/GlobalRuleConfigurationsChangedEvent.java (84%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{listener => config}/event/rule/RuleConfigurationCachedEvent.java (86%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{listener => config}/event/rule/RuleConfigurationsAlteredEvent.java (93%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{listener => config}/event/rule/RuleConfigurationsChangedEvent.java (87%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{listener => config}/event/rule/SwitchRuleConfigurationEvent.java (93%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{listener => config}/event/schema/SchemaChangedEvent.java (87%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{service/config => config/service}/GlobalRegistryService.java (94%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{service/config => config/service}/SchemaBasedRegistryService.java (95%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{service/config => config/service}/impl/DataSourceRegistryService.java (90%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{service/config => config/service}/impl/GlobalRuleRegistryService.java (93%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{service/config => config/service}/impl/PropertiesRegistryService.java (87%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{service/config => config/service}/impl/SchemaRuleRegistryService.java (90%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{service/config => config/service}/node/GlobalNode.java (94%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{service/config => config/service}/node/SchemaMetadataNode.java (97%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{listener/impl/GlobalRuleChangedListener.java => config/watcher/GlobalRuleChangedWatcher.java} (64%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{listener/impl/PropertiesChangedListener.java => config/watcher/PropertiesChangedWatcher.java} (55%)
 delete mode 100644 shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/GovernanceListenerManager.java
 delete mode 100644 shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/PostGovernanceRepositoryEventListener.java
 delete mode 100644 shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/factory/DataSourceStateChangedListenerFactory.java
 delete mode 100644 shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/factory/LockChangedListenerFactory.java
 delete mode 100644 shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/factory/MetaDataChangedListenerFactory.java
 delete mode 100644 shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/factory/PropertiesChangedListenerFactory.java
 delete mode 100644 shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/factory/TerminalStateChangedListenerFactory.java
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{listener/event/metadata => metadata/event}/MetaDataChangedEvent.java (92%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{listener/event/metadata => metadata/event}/MetaDataCreatedEvent.java (92%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{listener/event/metadata => metadata/event}/MetaDataDroppedEvent.java (92%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{listener/event/metadata => metadata/event}/SchemaAddedEvent.java (85%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{listener/event/metadata => metadata/event}/SchemaDeletedEvent.java (85%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{service/schema => metadata/service}/SchemaRegistryService.java (91%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{listener/impl/MetaDataChangedListener.java => metadata/watcher/MetaDataChangedWatcher.java} (58%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{listener/event/invocation => process/event}/ExecuteProcessReportEvent.java (92%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{listener/event/invocation => process/event}/ExecuteProcessSummaryReportEvent.java (93%)
 copy shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{listener/event/invocation => process/event}/ExecuteProcessUnitReportEvent.java (93%)
 copy shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{listener/event/invocation => process/event}/ShowProcessListRequestEvent.java (92%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{listener/event/invocation => process/event}/ShowProcessListResponseEvent.java (92%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{service/process => process/service}/ProcessNode.java (95%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{service/process => process/service}/ProcessRegistrySubscriber.java (87%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{RegistryCenterNodeStatus.java => state/ResourceState.java} (82%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{listener/event/readwritesplitting => state/event}/DisabledStateChangedEvent.java (86%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{listener/event/readwritesplitting => state/event}/PrimaryStateChangedEvent.java (86%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{service/state => state/service}/DataSourceStatusRegistryService.java (88%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{service/state => state/service}/StatesNode.java (94%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{listener/impl/DataSourceStateChangedListener.java => state/watcher/DataSourceStateChangedWatcher.java} (52%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/{listener/impl/TerminalStateChangedListener.java => state/watcher/TerminalStateChangedWatcher.java} (54%)
 delete mode 100644 shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/util/SchemaNameUtil.java
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/resources/META-INF/services/{org.apache.shardingsphere.governance.core.registry.listener.GovernanceListenerFactory => org.apache.shardingsphere.governance.core.registry.GovernanceWatcher} (59%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/lock/{impl => service}/LockNodeTest.java (96%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/lock/{impl => service}/LockRegistryServiceTest.java (97%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/{registry/listener/impl/MetaDataChangedListenerTest.java => lock/watcher/LockChangedWatcherTest.java} (57%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/{service/config => config/service}/impl/DataSourceRegistryServiceTest.java (95%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/{service/config => config/service}/impl/GlobalRuleRegistryServiceTest.java (98%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/{service/config => config/service}/impl/PropertiesRegistryServiceTest.java (96%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/{service/config => config/service}/impl/SchemaRuleRegistryServiceTest.java (94%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/{service/config => config/service}/node/GlobalNodeTest.java (93%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/{service/config => config/service}/node/SchemaMetadataNodeTest.java (95%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/{listener/impl/GlobalRuleChangedListenerTest.java => config/watcher/GlobalRuleChangedWatcherTest.java} (59%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/{listener/impl/PropertiesChangedListenerTest.java => config/watcher/PropertiesChangedWatcherTest.java} (65%)
 delete mode 100644 shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/PostRegistryCenterRepositoryEventListenerTest.java
 delete mode 100644 shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/impl/GovernanceListenerTest.java
 rename shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/{service/schema => metadata/service}/SchemaRegistryServiceTest.java (95%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/{listener/impl/LockChangedListenerTest.java => metadata/watcher/MetaDataChangedWatcherTest.java} (71%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/{service/state => state/service}/DataSourceStatusRegistryServiceTest.java (93%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/{service/state => state/service}/StatesNodeTest.java (97%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/{listener/impl/DataSourceStateChangedListenerTest.java => state/watcher/DataSourceStateChangedWatcherTest.java} (73%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/{listener/impl/TerminalStateChangedListenerTest.java => state/watcher/TerminalStateChangedWatcherTest.java} (65%)
 delete mode 100644 shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/util/FieldUtil.java
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/GovernanceListener.java => shardingsphere-infra/shardingsphere-infra-binder/src/main/java/org/apache/shardingsphere/infra/binder/type/ConstraintAvailable.java (69%)
 rename shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/{optimize/execute/CalciteExecutor.java => federate/execute/FederateExecutor.java} (92%)
 rename shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/{optimize/execute/CalciteJDBCExecutor.java => federate/execute/FederateJDBCExecutor.java} (94%)
 rename shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/{optimize/execute/raw/context/CalciteDataContext.java => federate/execute/raw/FederateExecuteDataContext.java} (90%)
 rename shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/{optimize/execute/raw/CalciteRawExecutor.java => federate/execute/raw/FederateRawExecutor.java} (50%)
 rename shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/{optimize/schema/CalciteLogicSchema.java => federate/schema/FederateLogicSchema.java} (67%)
 rename shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/{optimize/schema/row/CalciteRowEnumerator.java => federate/schema/row/FederateRowEnumerator.java} (92%)
 rename shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/{optimize/schema/row/CalciteRowExecutor.java => federate/schema/row/FederateRowExecutor.java} (78%)
 rename shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/{optimize/schema/table/AbstractCalciteTable.java => federate/schema/table/AbstractFederateTable.java} (78%)
 rename shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/{optimize/schema/table/CalciteFilterableTable.java => federate/schema/table/FederateFilterableTable.java} (56%)
 rename shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/{optimize/schema/table/execute/CalciteExecutionContextGenerator.java => federate/schema/table/generator/FederateExecutionContextGenerator.java} (78%)
 rename shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/{optimize/schema/table/execute/CalciteExecutionSQLGenerator.java => federate/schema/table/generator/FederateExecutionSQLGenerator.java} (74%)
 delete mode 100644 shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/optimize/execute/raw/plan/PlannerInitializer.java
 delete mode 100644 shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/optimize/schema/CalciteLogicSchemaFactory.java
 rename shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/{ => core}/convert/SqlNodeConverter.java (95%)
 rename shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/{ => core}/plan/PlannerInitializer.java (96%)
 rename shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/{ => core}/schema/LogicSchemaMetadata.java (98%)
 rename shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/{ => core}/schema/LogicSchemaMetadatas.java (96%)
 rename shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/{ => core}/schema/LogicTableMetadata.java (98%)
 rename shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/base/{AbstractSQLCalciteTest.java => AbstractSQLFederationTest.java} (79%)
 rename shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/base/{AbstractShardingSphereDataSourceForCalciteTest.java => AbstractShardingSphereDataSourceForFederateTest.java} (81%)
 rename shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/statement/{CalcitePrepareStatementTest.java => FederatePrepareStatementTest.java} (77%)
 rename shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/statement/{CalciteStatementTest.java => FederateStatementTest.java} (79%)
 rename shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/resources/config/{config-calcite.yaml => config-federate.yaml} (74%)
 delete mode 100644 shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/resources/sql/calcite_data_1.sql
 delete mode 100644 shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/resources/sql/calcite_data_2.sql
 rename shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/resources/sql/{calcite_data_0.sql => federate_data_0.sql} (68%)
 create mode 100644 shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/resources/sql/federate_data_1.sql
 create mode 100644 shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/resources/sql/federate_data_2.sql
 delete mode 100644 shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/resources/sql/jdbc_init_calcite_1.sql
 rename shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/resources/sql/{jdbc_init_calcite_0.sql => jdbc_init_federate_0.sql} (65%)
 create mode 100644 shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/resources/sql/jdbc_init_federate_1.sql
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/event/invocation/ExecuteProcessUnitReportEvent.java => shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/ddl/constraint/ConstraintSegment.java (67%)
 copy shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/event/datasource/DataSourceChangeCompletedEvent.java => shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/ddl/constraint/alter/AddConstraintDefinitionSegment.java (62%)
 copy shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/event/datasource/DataSourceChangedEvent.java => shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/ddl/constraint/alter/DropConstraintDefinitionSegment.java (63%)
 copy shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/event/datasource/DataSourceChangedEvent.java => shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/ddl/constraint/alter/ModifyConstraintDefinitionSegment.java (63%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/event/datasource/DataSourceChangedEvent.java => shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/ddl/constraint/alter/ValidateConstraintDefinitionSegment.java (63%)
 copy shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/event/invocation/ShowProcessListRequestEvent.java => shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/ddl/AlterTablespaceStatement.java (71%)
 copy shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/event/invocation/ShowProcessListRequestEvent.java => shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/ddl/CreateTablespaceStatement.java (71%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/event/invocation/ShowProcessListRequestEvent.java => shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/ddl/DropTablespaceStatement.java (71%)
 copy shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowShardingBindingTableRulesStatement.java => shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/mysql/ddl/MySQLAlterTablespaceStatement.java (64%)
 copy shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowShardingBindingTableRulesStatement.java => shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/mysql/ddl/MySQLCreateTablespaceStatement.java (64%)
 copy shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowShardingBindingTableRulesStatement.java => shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/mysql/ddl/MySQLDropTablespaceStatement.java (65%)
 copy shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowShardingBindingTableRulesStatement.java => shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/postgresql/ddl/PostgreSQLAlterTablespaceStatement.java (63%)
 copy shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowShardingBindingTableRulesStatement.java => shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/postgresql/ddl/PostgreSQLCreateTablespaceStatement.java (63%)
 copy shardingsphere-distsql-parser/shardingsphere-distsql-parser-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowShardingBindingTableRulesStatement.java => shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/postgresql/ddl/PostgreSQLDropTablespaceStatement.java (63%)
 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/FixtureWriteThread.java
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/event/datasource/DataSourceChangeCompletedEvent.java => shardingsphere-test/shardingsphere-integration-scaling-test/shardingsphere-integration-scaling-test-mysql/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/util/ExecuteUtil.java (59%)
 rename shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/lock/impl/LockAck.java => shardingsphere-test/shardingsphere-integration-scaling-test/shardingsphere-integration-scaling-test-mysql/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/util/Executor.java (80%)

[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 358c05a942de8b8fb58d3299762712e09039843b
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

[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 5bae300010e74e6de5cd8b0d688b47f31949155e
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 +++++++++++
 ...e.shardingsphere.sql.parser.spi.SQLParserFacade |   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 c54cb94..372a258 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;
@@ -117,7 +118,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.MYSQL.name());
             properties.setProperty(CONFORMANCE_CAMEL_NAME, SqlConformanceEnum.DEFAULT.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.SQLParserFacade b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLParserFacade
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.SQLParserFacade
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.spi.SQLParserFacade
@@ -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 69f78958f412b15824762c2102be53deb0defe19
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