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

w41ter pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-2.1 by this push:
     new 1a2a91a03a4 [fix](index) Fix CREATE/DROP INDEX stmt toSql #44494 
(#44661)
1a2a91a03a4 is described below

commit 1a2a91a03a409a10e41f38686f586f3df903bc2d
Author: walter <maoch...@selectdb.com>
AuthorDate: Thu Nov 28 10:10:12 2024 +0800

    [fix](index) Fix CREATE/DROP INDEX stmt toSql #44494 (#44661)
    
    cherry pick from #44494
---
 .../org/apache/doris/analysis/AlterTableStmt.java  |  4 +++
 .../apache/doris/analysis/CreateIndexClause.java   |  4 +++
 .../org/apache/doris/analysis/DropIndexClause.java |  4 +++
 .../apache/doris/analysis/AlterTableStmtTest.java  | 32 ++++++++++++++++++++++
 4 files changed, 44 insertions(+)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterTableStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterTableStmt.java
index d939bb0c3fb..957fee0325f 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterTableStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterTableStmt.java
@@ -198,6 +198,10 @@ public class AlterTableStmt extends DdlStmt {
                     sb.append("DROP ROLLUP ");
                 }
                 sb.append(((AddRollupClause) op).getRollupName());
+            } else if (op instanceof CreateIndexClause) {
+                sb.append(((CreateIndexClause) op).toSql(true));
+            } else if (op instanceof DropIndexClause) {
+                sb.append(((DropIndexClause) op).toSql(true));
             } else {
                 sb.append(op.toSql());
             }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateIndexClause.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateIndexClause.java
index 16f90432e7b..62d051ca318 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateIndexClause.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateIndexClause.java
@@ -88,6 +88,10 @@ public class CreateIndexClause extends AlterTableClause {
 
     @Override
     public String toSql() {
+        return toSql(alter);
+    }
+
+    public String toSql(boolean alter) {
         if (alter) {
             return "ADD " + indexDef.toSql();
         } else {
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropIndexClause.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropIndexClause.java
index 783bed775be..25b4db9d16f 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropIndexClause.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropIndexClause.java
@@ -80,6 +80,10 @@ public class DropIndexClause extends AlterTableClause {
 
     @Override
     public String toSql() {
+        return toSql(alter);
+    }
+
+    public String toSql(boolean alter) {
         StringBuilder stringBuilder = new StringBuilder();
         stringBuilder.append("DROP INDEX ").append("`" + indexName + "`");
         if (!alter) {
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/analysis/AlterTableStmtTest.java 
b/fe/fe-core/src/test/java/org/apache/doris/analysis/AlterTableStmtTest.java
index 9476df59cd1..c968f21d670 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/analysis/AlterTableStmtTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/AlterTableStmtTest.java
@@ -126,6 +126,7 @@ public class AlterTableStmtTest {
 
     @Test
     public void testCreateIndex() throws UserException {
+        // ALTER TABLE `db`.`table` ADD INDEX `index1` (`col1`) USING INVERTED 
COMMENT 'balabala'
         List<AlterClause> ops = Lists.newArrayList();
         ops.add(new CreateIndexClause(
                 new TableName(InternalCatalog.INTERNAL_CATALOG_NAME, "db", 
"table"),
@@ -137,8 +138,26 @@ public class AlterTableStmtTest {
                 stmt.toSql());
     }
 
+    @Test
+    public void testCreateIndexStmt() throws UserException {
+        // CREATE INDEX `index1` ON `db`.`table` (`col1`) USING INVERTED 
COMMENT 'balabala'
+        CreateIndexClause createIndexClause = new CreateIndexClause(
+                new TableName(InternalCatalog.INTERNAL_CATALOG_NAME, "db", 
"table"),
+                new IndexDef("index1", false, Lists.newArrayList("col1"), 
IndexDef.IndexType.INVERTED, null, "balabala"),
+                false);
+        List<AlterClause> ops = Lists.newArrayList();
+        ops.add(createIndexClause);
+        AlterTableStmt stmt = new AlterTableStmt(new TableName(internalCtl, 
"testDb", "testTbl"), ops);
+        stmt.analyze(analyzer);
+        Assert.assertEquals("CREATE INDEX `index1` ON `db`.`table` (`col1`) 
USING INVERTED COMMENT 'balabala'",
+                createIndexClause.toSql());
+        Assert.assertEquals("ALTER TABLE `testDb`.`testTbl` ADD INDEX `index1` 
(`col1`) USING INVERTED COMMENT 'balabala'",
+                stmt.toSql());
+    }
+
     @Test
     public void testDropIndex() throws UserException {
+        // ALTER TABLE `db`.`table` DROP INDEX `index1`
         List<AlterClause> ops = Lists.newArrayList();
         ops.add(new DropIndexClause("index1", false,
                 new TableName(InternalCatalog.INTERNAL_CATALOG_NAME, "db", 
"table"), true));
@@ -146,4 +165,17 @@ public class AlterTableStmtTest {
         stmt.analyze(analyzer);
         Assert.assertEquals("ALTER TABLE `testDb`.`testTbl` DROP INDEX 
`index1`", stmt.toSql());
     }
+
+    @Test
+    public void testDropIndexStmt() throws UserException {
+        // DROP INDEX `index1` ON `db`.`table`
+        DropIndexClause dropIndexClause = new DropIndexClause("index1", false,
+                new TableName(InternalCatalog.INTERNAL_CATALOG_NAME, "db", 
"table"), false);
+        List<AlterClause> ops = Lists.newArrayList();
+        ops.add(dropIndexClause);
+        AlterTableStmt stmt = new AlterTableStmt(new TableName(internalCtl, 
"testDb", "testTbl"), ops);
+        stmt.analyze(analyzer);
+        Assert.assertEquals("DROP INDEX `index1` ON `db`.`table`", 
dropIndexClause.toSql());
+        Assert.assertEquals("ALTER TABLE `testDb`.`testTbl` DROP INDEX 
`index1`", stmt.toSql());
+    }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to