This is an automated email from the ASF dual-hosted git repository.
zhangliang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 07b187e9e41 Refactor OpenGauss admin executor creation to use factory
pattern for system function and table query executors (#36891)
07b187e9e41 is described below
commit 07b187e9e41f7a0ef000fe7aa23bc38af0dd381f
Author: Liang Zhang <[email protected]>
AuthorDate: Fri Oct 17 21:24:57 2025 +0800
Refactor OpenGauss admin executor creation to use factory pattern for
system function and table query executors (#36891)
* Refactor OpenGauss admin executor creation to use factory pattern for
system function and table query executors
* Refactor OpenGauss admin executor creation to use factory pattern for
system function and table query executors
---
.../admin/OpenGaussAdminExecutorCreator.java | 19 +++++++++------
...enGaussSystemFunctionQueryExecutorFactory.java} | 21 ++++++++---------
.../OpenGaussSystemTableQueryExecutorFactory.java} | 27 ++++++++--------------
.../admin/OpenGaussAdminExecutorCreatorTest.java | 4 +---
.../OpenGaussAdminExecutorFactoryTest.java | 5 ++--
...ussSystemFunctionQueryExecutorFactoryTest.java} | 25 ++++++++++----------
...nGaussSystemTableQueryExecutorFactoryTest.java} | 21 ++++++++---------
7 files changed, 56 insertions(+), 66 deletions(-)
diff --git
a/proxy/backend/dialect/opengauss/src/main/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussAdminExecutorCreator.java
b/proxy/backend/dialect/opengauss/src/main/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussAdminExecutorCreator.java
index 5f58f37796a..886ff2a23ae 100644
---
a/proxy/backend/dialect/opengauss/src/main/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussAdminExecutorCreator.java
+++
b/proxy/backend/dialect/opengauss/src/main/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussAdminExecutorCreator.java
@@ -18,9 +18,12 @@
package org.apache.shardingsphere.proxy.backend.opengauss.handler.admin;
import
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
+import
org.apache.shardingsphere.infra.binder.context.statement.type.dml.SelectStatementContext;
import
org.apache.shardingsphere.proxy.backend.handler.admin.executor.DatabaseAdminExecutor;
import
org.apache.shardingsphere.proxy.backend.handler.admin.executor.DatabaseAdminExecutorCreator;
import
org.apache.shardingsphere.proxy.backend.opengauss.handler.admin.executor.OpenGaussShowVariableExecutor;
+import
org.apache.shardingsphere.proxy.backend.opengauss.handler.admin.factory.OpenGaussSystemFunctionQueryExecutorFactory;
+import
org.apache.shardingsphere.proxy.backend.opengauss.handler.admin.factory.OpenGaussSystemTableQueryExecutorFactory;
import
org.apache.shardingsphere.proxy.backend.postgresql.handler.admin.PostgreSQLAdminExecutorCreator;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dal.ShowStatement;
@@ -36,13 +39,15 @@ public final class OpenGaussAdminExecutorCreator implements
DatabaseAdminExecuto
@Override
public Optional<DatabaseAdminExecutor> create(final SQLStatementContext
sqlStatementContext, final String sql, final String databaseName, final
List<Object> parameters) {
- OpenGaussSystemTableQueryExecutorCreator
systemTableQueryExecutorCreator = new
OpenGaussSystemTableQueryExecutorCreator(sqlStatementContext, sql, parameters);
- if (systemTableQueryExecutorCreator.accept()) {
- return systemTableQueryExecutorCreator.create();
- }
- OpenGaussSystemFunctionQueryExecutorCreator
functionQueryExecutorCreator = new
OpenGaussSystemFunctionQueryExecutorCreator(sqlStatementContext);
- if (functionQueryExecutorCreator.accept()) {
- return functionQueryExecutorCreator.create();
+ if (sqlStatementContext instanceof SelectStatementContext) {
+ OpenGaussSystemTableQueryExecutorFactory
systemTableQueryExecutorCreator = new
OpenGaussSystemTableQueryExecutorFactory((SelectStatementContext)
sqlStatementContext, sql, parameters);
+ if (systemTableQueryExecutorCreator.accept()) {
+ return systemTableQueryExecutorCreator.newInstance();
+ }
+ OpenGaussSystemFunctionQueryExecutorFactory
functionQueryExecutorCreator = new
OpenGaussSystemFunctionQueryExecutorFactory((SelectStatementContext)
sqlStatementContext);
+ if (functionQueryExecutorCreator.accept()) {
+ return functionQueryExecutorCreator.newInstance();
+ }
}
if (sqlStatementContext.getSqlStatement() instanceof ShowStatement) {
return Optional.of(new
OpenGaussShowVariableExecutor((ShowStatement)
sqlStatementContext.getSqlStatement()));
diff --git
a/proxy/backend/dialect/opengauss/src/main/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussSystemFunctionQueryExecutorCreator.java
b/proxy/backend/dialect/opengauss/src/main/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/factory/OpenGaussSystemFunctionQueryExecutorFactory.java
similarity index 85%
rename from
proxy/backend/dialect/opengauss/src/main/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussSystemFunctionQueryExecutorCreator.java
rename to
proxy/backend/dialect/opengauss/src/main/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/factory/OpenGaussSystemFunctionQueryExecutorFactory.java
index e532e5b5392..8b68b4a974a 100644
---
a/proxy/backend/dialect/opengauss/src/main/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussSystemFunctionQueryExecutorCreator.java
+++
b/proxy/backend/dialect/opengauss/src/main/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/factory/OpenGaussSystemFunctionQueryExecutorFactory.java
@@ -15,10 +15,10 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.opengauss.handler.admin;
+package
org.apache.shardingsphere.proxy.backend.opengauss.handler.admin.factory;
import lombok.RequiredArgsConstructor;
-import
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
+import
org.apache.shardingsphere.infra.binder.context.statement.type.dml.SelectStatementContext;
import
org.apache.shardingsphere.proxy.backend.handler.admin.executor.DatabaseAdminExecutor;
import
org.apache.shardingsphere.proxy.backend.opengauss.handler.admin.executor.OpenGaussSelectPasswordDeadlineExecutor;
import
org.apache.shardingsphere.proxy.backend.opengauss.handler.admin.executor.OpenGaussSelectPasswordNotifyTimeExecutor;
@@ -31,12 +31,12 @@ import java.util.Collection;
import java.util.Optional;
/**
- * OpenGauss system function query executor creator.
+ * System function query executor factory for openGauss.
*/
@RequiredArgsConstructor
-public final class OpenGaussSystemFunctionQueryExecutorCreator {
+public final class OpenGaussSystemFunctionQueryExecutorFactory {
- private final SQLStatementContext sqlStatementContext;
+ private final SelectStatementContext sqlStatementContext;
private String functionName;
@@ -46,10 +46,7 @@ public final class
OpenGaussSystemFunctionQueryExecutorCreator {
* @return true or false
*/
public boolean accept() {
- if (!(sqlStatementContext.getSqlStatement() instanceof
SelectStatement)) {
- return false;
- }
- SelectStatement selectStatement = (SelectStatement)
sqlStatementContext.getSqlStatement();
+ SelectStatement selectStatement =
sqlStatementContext.getSqlStatement();
Collection<ProjectionSegment> projections =
selectStatement.getProjections().getProjections();
if (1 == projections.size() && projections.iterator().next()
instanceof ExpressionProjectionSegment) {
functionName = ((ExpressionProjectionSegment)
projections.iterator().next()).getText();
@@ -61,11 +58,11 @@ public final class
OpenGaussSystemFunctionQueryExecutorCreator {
}
/**
- * Create.
+ * Create new instance of system function query executor.
*
- * @return database admin executor
+ * @return created instance
*/
- public Optional<DatabaseAdminExecutor> create() {
+ public Optional<DatabaseAdminExecutor> newInstance() {
if (OpenGaussSelectVersionExecutor.accept(functionName)) {
return Optional.of(new OpenGaussSelectVersionExecutor());
}
diff --git
a/proxy/backend/dialect/opengauss/src/main/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussSystemTableQueryExecutorCreator.java
b/proxy/backend/dialect/opengauss/src/main/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/factory/OpenGaussSystemTableQueryExecutorFactory.java
similarity index 87%
rename from
proxy/backend/dialect/opengauss/src/main/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussSystemTableQueryExecutorCreator.java
rename to
proxy/backend/dialect/opengauss/src/main/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/factory/OpenGaussSystemTableQueryExecutorFactory.java
index 09f257545a7..d1cd16ac6ad 100644
---
a/proxy/backend/dialect/opengauss/src/main/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussSystemTableQueryExecutorCreator.java
+++
b/proxy/backend/dialect/opengauss/src/main/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/factory/OpenGaussSystemTableQueryExecutorFactory.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.opengauss.handler.admin;
+package
org.apache.shardingsphere.proxy.backend.opengauss.handler.admin.factory;
import com.cedarsoftware.util.CaseInsensitiveMap;
import com.cedarsoftware.util.CaseInsensitiveSet;
@@ -25,7 +25,6 @@ import
org.apache.shardingsphere.database.connector.core.type.DatabaseType;
import
org.apache.shardingsphere.infra.binder.context.segment.select.projection.Projection;
import
org.apache.shardingsphere.infra.binder.context.segment.select.projection.impl.ColumnProjection;
import
org.apache.shardingsphere.infra.binder.context.segment.table.TablesContext;
-import
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
import
org.apache.shardingsphere.infra.binder.context.statement.type.dml.SelectStatementContext;
import
org.apache.shardingsphere.infra.metadata.database.schema.manager.SystemSchemaManager;
import
org.apache.shardingsphere.infra.metadata.statistics.collector.DialectDatabaseStatisticsCollector;
@@ -37,8 +36,6 @@ import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.bound
import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.bound.TableSegmentBoundInfo;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.TableNameSegment;
-import
org.apache.shardingsphere.sql.parser.statement.core.statement.SQLStatement;
-import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dml.SelectStatement;
import
org.apache.shardingsphere.sql.parser.statement.core.value.identifier.IdentifierValue;
import java.util.Collection;
@@ -49,10 +46,10 @@ import java.util.Map.Entry;
import java.util.Optional;
/**
- * OpenGauss system table query executor creator.
+ * System table query executor factory for openGauss.
*/
@RequiredArgsConstructor
-public final class OpenGaussSystemTableQueryExecutorCreator {
+public final class OpenGaussSystemTableQueryExecutorFactory {
private static final Map<String, Collection<String>> SCHEMA_TABLES = new
CaseInsensitiveMap<>();
@@ -60,7 +57,7 @@ public final class OpenGaussSystemTableQueryExecutorCreator {
SCHEMA_TABLES.put("shardingsphere", new
CaseInsensitiveSet<>(Collections.singletonList("cluster_information")));
}
- private final SQLStatementContext sqlStatementContext;
+ private final SelectStatementContext sqlStatementContext;
private final String sql;
@@ -69,12 +66,12 @@ public final class OpenGaussSystemTableQueryExecutorCreator
{
private Map<String, Collection<String>> selectedSchemaTables = new
CaseInsensitiveMap<>();
/**
- * Create.
+ * Create new instance of system table query executor.
*
- * @return database admin executor
+ * @return created instance
*/
- public Optional<DatabaseAdminExecutor> create() {
- if (isSelectSystemTable(selectedSchemaTables) &&
isSelectDatCompatibility((SelectStatementContext) sqlStatementContext)) {
+ public Optional<DatabaseAdminExecutor> newInstance() {
+ if (isSelectSystemTable(selectedSchemaTables) &&
isSelectDatCompatibility(sqlStatementContext)) {
return Optional.of(new OpenGaussSelectDatCompatibilityExecutor());
}
if (isSelectedStatisticsSystemTable(selectedSchemaTables) ||
isSelectedShardingSphereSystemTable(selectedSchemaTables)) {
@@ -107,12 +104,8 @@ public final class
OpenGaussSystemTableQueryExecutorCreator {
* @return true or false
*/
public boolean accept() {
- SQLStatement sqlStatement = sqlStatementContext.getSqlStatement();
- if (!(sqlStatement instanceof SelectStatement)) {
- return false;
- }
- selectedSchemaTables =
getSelectedSchemaTables((SelectStatementContext) sqlStatementContext);
- return isSelectedStatisticsSystemTable(selectedSchemaTables) ||
isSelectedShardingSphereSystemTable(selectedSchemaTables) ||
isSelectSystemTable(selectedSchemaTables);
+ selectedSchemaTables = getSelectedSchemaTables(sqlStatementContext);
+ return isSelectSystemTable(selectedSchemaTables);
}
private Map<String, Collection<String>> getSelectedSchemaTables(final
SelectStatementContext selectStatementContext) {
diff --git
a/proxy/backend/dialect/opengauss/src/test/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussAdminExecutorCreatorTest.java
b/proxy/backend/dialect/opengauss/src/test/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussAdminExecutorCreatorTest.java
index 4a027fb2999..070c9ef09d0 100644
---
a/proxy/backend/dialect/opengauss/src/test/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussAdminExecutorCreatorTest.java
+++
b/proxy/backend/dialect/opengauss/src/test/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussAdminExecutorCreatorTest.java
@@ -24,8 +24,8 @@ import
org.apache.shardingsphere.infra.binder.context.segment.table.TablesContex
import
org.apache.shardingsphere.infra.binder.context.statement.type.dml.SelectStatementContext;
import
org.apache.shardingsphere.infra.metadata.statistics.collector.DialectDatabaseStatisticsCollector;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
-import
org.apache.shardingsphere.proxy.backend.handler.admin.executor.DatabaseMetaDataExecutor;
import
org.apache.shardingsphere.proxy.backend.handler.admin.executor.DatabaseAdminExecutor;
+import
org.apache.shardingsphere.proxy.backend.handler.admin.executor.DatabaseMetaDataExecutor;
import
org.apache.shardingsphere.proxy.backend.opengauss.handler.admin.executor.OpenGaussSelectDatCompatibilityExecutor;
import
org.apache.shardingsphere.proxy.backend.opengauss.handler.admin.executor.OpenGaussSelectPasswordDeadlineExecutor;
import
org.apache.shardingsphere.proxy.backend.opengauss.handler.admin.executor.OpenGaussSelectPasswordNotifyTimeExecutor;
@@ -59,7 +59,6 @@ class OpenGaussAdminExecutorCreatorTest {
@Test
void assertCreateExecutorForSelectDatCompatibilityFromPgDatabase() {
- initDialectDatabaseStatisticsCollector(false);
String sql = "SELECT datcompatibility FROM pg_database WHERE
datname='sharding_db'";
String databaseName = "postgres";
SelectStatementContext selectStatementContext =
mockSelectStatementContext("pg_catalog", "pg_database", "datcompatibility");
@@ -116,7 +115,6 @@ class OpenGaussAdminExecutorCreatorTest {
}
private void assertCreateExecutorForFunction(final String sql, final
String expression, final Class<?> type) {
- initDialectDatabaseStatisticsCollector(false);
SelectStatementContext selectStatementContext =
mock(SelectStatementContext.class, RETURNS_DEEP_STUBS);
when(selectStatementContext.getSqlStatement().getProjections().getProjections())
.thenReturn(Collections.singletonList(new
ExpressionProjectionSegment(-1, -1, expression)));
diff --git
a/proxy/backend/dialect/opengauss/src/test/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussAdminExecutorFactoryTest.java
b/proxy/backend/dialect/opengauss/src/test/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/factory/OpenGaussAdminExecutorFactoryTest.java
similarity index 97%
rename from
proxy/backend/dialect/opengauss/src/test/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussAdminExecutorFactoryTest.java
rename to
proxy/backend/dialect/opengauss/src/test/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/factory/OpenGaussAdminExecutorFactoryTest.java
index fe1d697f53f..8031dc7c37a 100644
---
a/proxy/backend/dialect/opengauss/src/test/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussAdminExecutorFactoryTest.java
+++
b/proxy/backend/dialect/opengauss/src/test/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/factory/OpenGaussAdminExecutorFactoryTest.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.opengauss.handler.admin;
+package
org.apache.shardingsphere.proxy.backend.opengauss.handler.admin.factory;
import
org.apache.shardingsphere.database.connector.core.spi.DatabaseTypedSPILoader;
import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
@@ -25,6 +25,7 @@ import
org.apache.shardingsphere.infra.binder.context.statement.type.dml.SelectS
import
org.apache.shardingsphere.infra.metadata.statistics.collector.DialectDatabaseStatisticsCollector;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import
org.apache.shardingsphere.proxy.backend.handler.admin.executor.DatabaseAdminExecutor;
+import
org.apache.shardingsphere.proxy.backend.opengauss.handler.admin.OpenGaussAdminExecutorCreator;
import
org.apache.shardingsphere.proxy.backend.postgresql.handler.admin.PostgreSQLAdminExecutorCreator;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dal.ShowStatement;
import org.apache.shardingsphere.test.infra.framework.mock.AutoMockExtension;
@@ -41,7 +42,6 @@ import java.util.Optional;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.mockito.ArgumentMatchers.anyMap;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -73,7 +73,6 @@ class OpenGaussAdminExecutorFactoryTest {
@Test
void assertNewInstanceWithOtherSQL() {
DialectDatabaseStatisticsCollector statisticsCollector =
mock(DialectDatabaseStatisticsCollector.class);
-
when(statisticsCollector.isStatisticsTables(anyMap())).thenReturn(false);
when(DatabaseTypedSPILoader.findService(DialectDatabaseStatisticsCollector.class,
TypedSPILoader.getService(DatabaseType.class,
"openGauss"))).thenReturn(Optional.of(statisticsCollector));
SelectStatementContext sqlStatementContext =
mock(SelectStatementContext.class, RETURNS_DEEP_STUBS);
when(sqlStatementContext.getTablesContext().getTableNames()).thenReturn(Collections.emptyList());
diff --git
a/proxy/backend/dialect/opengauss/src/test/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussSystemFunctionQueryExecutorCreatorTest.java
b/proxy/backend/dialect/opengauss/src/test/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/factory/OpenGaussSystemFunctionQueryExecutorFactoryTest.java
similarity index 76%
rename from
proxy/backend/dialect/opengauss/src/test/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussSystemFunctionQueryExecutorCreatorTest.java
rename to
proxy/backend/dialect/opengauss/src/test/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/factory/OpenGaussSystemFunctionQueryExecutorFactoryTest.java
index dbe33914e23..c3e2190ae56 100644
---
a/proxy/backend/dialect/opengauss/src/test/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussSystemFunctionQueryExecutorCreatorTest.java
+++
b/proxy/backend/dialect/opengauss/src/test/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/factory/OpenGaussSystemFunctionQueryExecutorFactoryTest.java
@@ -15,9 +15,8 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.opengauss.handler.admin;
+package
org.apache.shardingsphere.proxy.backend.opengauss.handler.admin.factory;
-import
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
import
org.apache.shardingsphere.infra.binder.context.statement.type.dml.SelectStatementContext;
import
org.apache.shardingsphere.proxy.backend.handler.admin.executor.DatabaseAdminExecutor;
import
org.apache.shardingsphere.proxy.backend.opengauss.handler.admin.executor.OpenGaussSelectPasswordDeadlineExecutor;
@@ -37,39 +36,39 @@ import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-class OpenGaussSystemFunctionQueryExecutorCreatorTest {
+class OpenGaussSystemFunctionQueryExecutorFactoryTest {
@Test
void assertVersion() {
- SQLStatementContext sqlStatementContext =
mockSQLStatementContext("VERSION()");
- OpenGaussSystemFunctionQueryExecutorCreator creator = new
OpenGaussSystemFunctionQueryExecutorCreator(sqlStatementContext);
+ SelectStatementContext sqlStatementContext =
mockSQLStatementContext("VERSION()");
+ OpenGaussSystemFunctionQueryExecutorFactory creator = new
OpenGaussSystemFunctionQueryExecutorFactory(sqlStatementContext);
assertTrue(creator.accept());
- Optional<DatabaseAdminExecutor> actual = creator.create();
+ Optional<DatabaseAdminExecutor> actual = creator.newInstance();
assertTrue(actual.isPresent());
assertThat(actual.get(), isA(OpenGaussSelectVersionExecutor.class));
}
@Test
void assertGsPasswordDeadline() {
- SQLStatementContext sqlStatementContext =
mockSQLStatementContext("gs_password_deadline()");
- OpenGaussSystemFunctionQueryExecutorCreator creator = new
OpenGaussSystemFunctionQueryExecutorCreator(sqlStatementContext);
+ SelectStatementContext sqlStatementContext =
mockSQLStatementContext("gs_password_deadline()");
+ OpenGaussSystemFunctionQueryExecutorFactory creator = new
OpenGaussSystemFunctionQueryExecutorFactory(sqlStatementContext);
assertTrue(creator.accept());
- Optional<DatabaseAdminExecutor> actual = creator.create();
+ Optional<DatabaseAdminExecutor> actual = creator.newInstance();
assertTrue(actual.isPresent());
assertThat(actual.get(),
isA(OpenGaussSelectPasswordDeadlineExecutor.class));
}
@Test
void assertGsPasswordNotifyTime() {
- SQLStatementContext sqlStatementContext =
mockSQLStatementContext("gs_password_notifytime()");
- OpenGaussSystemFunctionQueryExecutorCreator creator = new
OpenGaussSystemFunctionQueryExecutorCreator(sqlStatementContext);
+ SelectStatementContext sqlStatementContext =
mockSQLStatementContext("gs_password_notifytime()");
+ OpenGaussSystemFunctionQueryExecutorFactory creator = new
OpenGaussSystemFunctionQueryExecutorFactory(sqlStatementContext);
assertTrue(creator.accept());
- Optional<DatabaseAdminExecutor> actual = creator.create();
+ Optional<DatabaseAdminExecutor> actual = creator.newInstance();
assertTrue(actual.isPresent());
assertThat(actual.get(),
isA(OpenGaussSelectPasswordNotifyTimeExecutor.class));
}
- private SQLStatementContext mockSQLStatementContext(final String
functionName) {
+ private SelectStatementContext mockSQLStatementContext(final String
functionName) {
ExpressionProjectionSegment expressionProjection =
mock(ExpressionProjectionSegment.class, RETURNS_DEEP_STUBS);
when(expressionProjection.getText()).thenReturn(functionName);
ProjectionsSegment projections = mock(ProjectionsSegment.class,
RETURNS_DEEP_STUBS);
diff --git
a/proxy/backend/dialect/opengauss/src/test/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussSystemTableQueryExecutorCreatorTest.java
b/proxy/backend/dialect/opengauss/src/test/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/factory/OpenGaussSystemTableQueryExecutorFactoryTest.java
similarity index 83%
rename from
proxy/backend/dialect/opengauss/src/test/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussSystemTableQueryExecutorCreatorTest.java
rename to
proxy/backend/dialect/opengauss/src/test/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/factory/OpenGaussSystemTableQueryExecutorFactoryTest.java
index 6377a2f87fc..395fae7a159 100644
---
a/proxy/backend/dialect/opengauss/src/test/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussSystemTableQueryExecutorCreatorTest.java
+++
b/proxy/backend/dialect/opengauss/src/test/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/factory/OpenGaussSystemTableQueryExecutorFactoryTest.java
@@ -15,14 +15,13 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.opengauss.handler.admin;
+package
org.apache.shardingsphere.proxy.backend.opengauss.handler.admin.factory;
import
org.apache.shardingsphere.infra.binder.context.segment.select.projection.impl.ColumnProjection;
import
org.apache.shardingsphere.infra.binder.context.segment.table.TablesContext;
-import
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
import
org.apache.shardingsphere.infra.binder.context.statement.type.dml.SelectStatementContext;
-import
org.apache.shardingsphere.proxy.backend.handler.admin.executor.DatabaseMetaDataExecutor;
import
org.apache.shardingsphere.proxy.backend.handler.admin.executor.DatabaseAdminExecutor;
+import
org.apache.shardingsphere.proxy.backend.handler.admin.executor.DatabaseMetaDataExecutor;
import
org.apache.shardingsphere.proxy.backend.opengauss.handler.admin.executor.OpenGaussSelectDatCompatibilityExecutor;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.bound.ColumnSegmentBoundInfo;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.bound.TableSegmentBoundInfo;
@@ -41,15 +40,15 @@ import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-class OpenGaussSystemTableQueryExecutorCreatorTest {
+class OpenGaussSystemTableQueryExecutorFactoryTest {
@Test
void assertSelectDatCompatibilityFromPgDatabase() {
String sql = "SELECT datcompatibility FROM pg_database WHERE
datname='sharding_db'";
- SQLStatementContext sqlStatementContext =
mockSelectStatementContext("pg_catalog", "pg_database", "datcompatibility");
- OpenGaussSystemTableQueryExecutorCreator creator = new
OpenGaussSystemTableQueryExecutorCreator(sqlStatementContext, sql,
Collections.emptyList());
+ SelectStatementContext sqlStatementContext =
mockSelectStatementContext("pg_catalog", "pg_database", "datcompatibility");
+ OpenGaussSystemTableQueryExecutorFactory creator = new
OpenGaussSystemTableQueryExecutorFactory(sqlStatementContext, sql,
Collections.emptyList());
assertTrue(creator.accept());
- Optional<DatabaseAdminExecutor> actual = creator.create();
+ Optional<DatabaseAdminExecutor> actual = creator.newInstance();
assertTrue(actual.isPresent());
assertThat(actual.get(),
isA(OpenGaussSelectDatCompatibilityExecutor.class));
}
@@ -57,15 +56,15 @@ class OpenGaussSystemTableQueryExecutorCreatorTest {
@Test
void assertSelectFromNotCollectedTable() {
String sql = "SELECT name FROM pg_type'";
- SQLStatementContext sqlStatementContext =
mockSelectStatementContext("pg_catalog", "pg_type", "name");
- OpenGaussSystemTableQueryExecutorCreator creator = new
OpenGaussSystemTableQueryExecutorCreator(sqlStatementContext, sql,
Collections.emptyList());
+ SelectStatementContext sqlStatementContext =
mockSelectStatementContext("pg_catalog", "pg_type", "name");
+ OpenGaussSystemTableQueryExecutorFactory creator = new
OpenGaussSystemTableQueryExecutorFactory(sqlStatementContext, sql,
Collections.emptyList());
assertTrue(creator.accept());
- Optional<DatabaseAdminExecutor> actual = creator.create();
+ Optional<DatabaseAdminExecutor> actual = creator.newInstance();
assertTrue(actual.isPresent());
assertThat(actual.get(), isA(DatabaseMetaDataExecutor.class));
}
- private SQLStatementContext mockSelectStatementContext(final String
schemaName, final String tableName, final String columnName) {
+ private SelectStatementContext mockSelectStatementContext(final String
schemaName, final String tableName, final String columnName) {
TableSegmentBoundInfo tableSegmentBoundInfo =
mock(TableSegmentBoundInfo.class, RETURNS_DEEP_STUBS);
when(tableSegmentBoundInfo.getOriginalSchema().getValue()).thenReturn(schemaName);
TableNameSegment tableNameSegment = mock(TableNameSegment.class,
RETURNS_DEEP_STUBS);