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));
+    }
 }

Reply via email to