From 1a2a91a03a409a10e41f38686f586f3df903bc2d Mon Sep 17 00:00:00 2001 From: walter Date: Thu, 28 Nov 2024 10:10:12 +0800 Subject: [PATCH] [fix](index) Fix CREATE/DROP INDEX stmt toSql #44494 (#44661) cherry pick from #44494 --- .../apache/doris/analysis/AlterTableStmt.java | 4 +++ .../doris/analysis/CreateIndexClause.java | 4 +++ .../doris/analysis/DropIndexClause.java | 4 +++ .../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 d939bb0c3f..957fee0325 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 16f90432e7..62d051ca31 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 783bed775b..25b4db9d16 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 9476df59cd..c968f21d67 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 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 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 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 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()); + } }