This is an automated email from the ASF dual-hosted git repository.
zhonghongsheng 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 9860470ba55 Add openGauss create index with metadata test case (#37806)
9860470ba55 is described below
commit 9860470ba550b0b6d8d0a2bc2f30db5235bf80d2
Author: ZhangCheng <[email protected]>
AuthorDate: Thu Jan 22 13:36:22 2026 +0800
Add openGauss create index with metadata test case (#37806)
* Add openGauss create index with metadata test case
* Add openGauss create index with metadata test case
---
.../opengauss/OpenGaussSQLParserEngineTest.java | 44 +++++++++++++++++++++-
1 file changed, 42 insertions(+), 2 deletions(-)
diff --git
a/proxy/frontend/dialect/opengauss/src/test/java/org/apache/shardingsphere/sql/parser/engine/opengauss/OpenGaussSQLParserEngineTest.java
b/proxy/frontend/dialect/opengauss/src/test/java/org/apache/shardingsphere/sql/parser/engine/opengauss/OpenGaussSQLParserEngineTest.java
index 462860f6375..b3d7b6ba551 100644
---
a/proxy/frontend/dialect/opengauss/src/test/java/org/apache/shardingsphere/sql/parser/engine/opengauss/OpenGaussSQLParserEngineTest.java
+++
b/proxy/frontend/dialect/opengauss/src/test/java/org/apache/shardingsphere/sql/parser/engine/opengauss/OpenGaussSQLParserEngineTest.java
@@ -21,13 +21,30 @@ import
org.apache.shardingsphere.database.connector.core.type.DatabaseType;
import
org.apache.shardingsphere.infra.binder.context.SQLStatementContextFactory;
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.engine.SQLBindEngine;
+import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
+import org.apache.shardingsphere.infra.hint.HintValueContext;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
+import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
+import
org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaData;
+import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
+import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereColumn;
+import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
+import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
import org.apache.shardingsphere.infra.parser.ShardingSphereSQLParserEngine;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.engine.api.CacheOption;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.SQLStatement;
import org.junit.jupiter.api.Test;
+import java.util.Collections;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
class OpenGaussSQLParserEngineTest {
@@ -36,12 +53,35 @@ class OpenGaussSQLParserEngineTest {
private final ShardingSphereSQLParserEngine parserEngine = new
ShardingSphereSQLParserEngine(databaseType, new CacheOption(2000, 65535L), new
CacheOption(128, 1024L));
@Test
- void assertParseCreateIndexSQL() {
+ void assertParseCreateIndexSQLWithoutMetadata() {
String sql = "CREATE INDEX idx_user_id ON test.t_order USING btree
(user_id) TABLESPACE pg_default";
SQLStatement sqlStatement = parserEngine.parse(sql, false);
SQLStatementContext sqlStatementContext =
SQLStatementContextFactory.newInstance(null, sqlStatement, "logic_db");
TablesContext tablesContext = sqlStatementContext.getTablesContext();
- // TODO schema name should be present after supporting schema parsing
assertFalse(tablesContext.getSchemaName().isPresent());
}
+
+ @Test
+ void assertParseCreateIndexSQLWithMetadata() {
+ String sql = "CREATE INDEX idx_user_id ON test.t_order USING btree
(user_id) TABLESPACE pg_default";
+ SQLStatement sqlStatement = parserEngine.parse(sql, false);
+ SQLStatementContext sqlStatementContext = new
SQLBindEngine(mockMetaData(), "logic_db", new
HintValueContext()).bind(sqlStatement);
+ TablesContext tablesContext = sqlStatementContext.getTablesContext();
+ assertThat(tablesContext.getTableNames().iterator().next(),
is("t_order"));
+ assertThat(tablesContext.getSchemaName().isPresent(), is(true));
+ assertThat(tablesContext.getSchemaName().get(), is("test"));
+ assertThat(tablesContext.getDatabaseName().isPresent(), is(true));
+ assertThat(tablesContext.getDatabaseName().get(), is("logic_db"));
+ }
+
+ private ShardingSphereMetaData mockMetaData() {
+ ShardingSphereColumn userIdColumn = new
ShardingSphereColumn("user_id", 0, false, false, false, true, false, false);
+ ShardingSphereTable orderTable = new ShardingSphereTable("t_order",
Collections.singletonList(userIdColumn), Collections.emptyList(),
Collections.emptyList());
+ ShardingSphereSchema testSchema = new ShardingSphereSchema("test",
Collections.singleton(orderTable), Collections.emptyList(), databaseType);
+ ShardingSphereDatabase database = mock(ShardingSphereDatabase.class,
RETURNS_DEEP_STUBS);
+ when(database.getName()).thenReturn("logic_db");
+ when(database.containsSchema("test")).thenReturn(true);
+ when(database.getSchema("test")).thenReturn(testSchema);
+ return new ShardingSphereMetaData(Collections.singleton(database),
mock(ResourceMetaData.class), mock(RuleMetaData.class),
mock(ConfigurationProperties.class));
+ }
}