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 688ef8fe230 [fix](index) Fix create index/index def to sql #44392
(#44581)
688ef8fe230 is described below
commit 688ef8fe230409bdc5a56ae0059b5e5e9f9e2ac5
Author: walter <[email protected]>
AuthorDate: Tue Nov 26 17:44:53 2024 +0800
[fix](index) Fix create index/index def to sql #44392 (#44581)
cherry pick from #44392
---
.../apache/doris/alter/SchemaChangeHandler.java | 4 ++--
.../apache/doris/analysis/CreateIndexClause.java | 2 +-
.../org/apache/doris/analysis/DropIndexClause.java | 2 +-
.../java/org/apache/doris/analysis/IndexDef.java | 2 +-
.../apache/doris/analysis/AlterTableStmtTest.java | 23 ++++++++++++++++++++++
.../doris/analysis/CreateIndexClauseTest.java | 12 ++++++++++-
.../apache/doris/analysis/DropIndexClauseTest.java | 10 +++++++++-
.../org/apache/doris/analysis/IndexDefTest.java | 4 ++--
8 files changed, 50 insertions(+), 9 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/alter/SchemaChangeHandler.java
b/fe/fe-core/src/main/java/org/apache/doris/alter/SchemaChangeHandler.java
index 879034d06dc..72148a5c282 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/alter/SchemaChangeHandler.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/alter/SchemaChangeHandler.java
@@ -1833,7 +1833,7 @@ public class SchemaChangeHandler extends AlterHandler {
// index id -> index schema
Map<Long, LinkedList<Column>> indexSchemaMap = new HashMap<>();
- //for multi add colmuns clauses
+ //for multi add columns clauses
//index id -> index col_unique_id supplier
Map<Long, IntSupplier> colUniqueIdSupplierMap = new HashMap<>();
for (Map.Entry<Long, List<Column>> entry :
olapTable.getIndexIdToSchema(true).entrySet()) {
@@ -2601,7 +2601,7 @@ public class SchemaChangeHandler extends AlterHandler {
// the column name in CreateIndexClause is not check case sensitivity,
// when send index description to BE, there maybe cannot find column
by name,
// so here update column name in CreateIndexClause after checkColumn
for indexDef,
- // there will use the column name in olapTable insead of the column
name in CreateIndexClause.
+ // there will use the column name in olapTable instead of the column
name in CreateIndexClause.
alterIndex.setColumns(indexDef.getColumns());
alterIndex.setColumnUniqueIds(indexDef.getColumnUniqueIds());
newIndexes.add(alterIndex);
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 86df87453ad..16f90432e7b 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
@@ -89,7 +89,7 @@ public class CreateIndexClause extends AlterTableClause {
@Override
public String toSql() {
if (alter) {
- return indexDef.toSql();
+ return "ADD " + indexDef.toSql();
} else {
return "CREATE " + indexDef.toSql(tableName.toSql());
}
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 f72136ee2b3..783bed775be 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
@@ -81,7 +81,7 @@ public class DropIndexClause extends AlterTableClause {
@Override
public String toSql() {
StringBuilder stringBuilder = new StringBuilder();
- stringBuilder.append("DROP INDEX ").append(indexName);
+ stringBuilder.append("DROP INDEX ").append("`" + indexName + "`");
if (!alter) {
stringBuilder.append(" ON ").append(tableName.toSql());
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/IndexDef.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/IndexDef.java
index d57ca506786..d19fdb37919 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/IndexDef.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/IndexDef.java
@@ -119,7 +119,7 @@ public class IndexDef {
public String toSql(String tableName) {
StringBuilder sb = new StringBuilder("INDEX ");
- sb.append(indexName);
+ sb.append("`" + indexName + "`");
if (tableName != null && !tableName.isEmpty()) {
sb.append(" ON ").append(tableName);
}
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 9f32556ce9c..9476df59cd1 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
@@ -123,4 +123,27 @@ public class AlterTableStmtTest {
stmt.toSql());
Assert.assertEquals("testDb", stmt.getTbl().getDb());
}
+
+ @Test
+ public void testCreateIndex() throws UserException {
+ List<AlterClause> ops = Lists.newArrayList();
+ ops.add(new CreateIndexClause(
+ new TableName(InternalCatalog.INTERNAL_CATALOG_NAME, "db",
"table"),
+ new IndexDef("index1", false, Lists.newArrayList("col1"),
IndexDef.IndexType.INVERTED, null, "balabala"),
+ true));
+ AlterTableStmt stmt = new AlterTableStmt(new TableName(internalCtl,
"testDb", "testTbl"), ops);
+ stmt.analyze(analyzer);
+ Assert.assertEquals("ALTER TABLE `testDb`.`testTbl` ADD INDEX `index1`
(`col1`) USING INVERTED COMMENT 'balabala'",
+ stmt.toSql());
+ }
+
+ @Test
+ public void testDropIndex() throws UserException {
+ List<AlterClause> ops = Lists.newArrayList();
+ ops.add(new DropIndexClause("index1", false,
+ new TableName(InternalCatalog.INTERNAL_CATALOG_NAME, "db",
"table"), true));
+ AlterTableStmt stmt = new AlterTableStmt(new TableName(internalCtl,
"testDb", "testTbl"), ops);
+ stmt.analyze(analyzer);
+ Assert.assertEquals("ALTER TABLE `testDb`.`testTbl` DROP INDEX
`index1`", stmt.toSql());
+ }
}
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/analysis/CreateIndexClauseTest.java
b/fe/fe-core/src/test/java/org/apache/doris/analysis/CreateIndexClauseTest.java
index 7341b8e7bcf..86e633d2dfe 100644
---
a/fe/fe-core/src/test/java/org/apache/doris/analysis/CreateIndexClauseTest.java
+++
b/fe/fe-core/src/test/java/org/apache/doris/analysis/CreateIndexClauseTest.java
@@ -40,11 +40,21 @@ public class CreateIndexClauseTest {
new IndexDef("index1", false, Lists.newArrayList("col1"),
IndexDef.IndexType.INVERTED, null, "balabala"),
false);
clause.analyze(analyzer);
- Assert.assertEquals("CREATE INDEX index1 ON `db`.`table` (`col1`)
USING INVERTED COMMENT 'balabala'",
+ Assert.assertEquals("CREATE INDEX `index1` ON `db`.`table` (`col1`)
USING INVERTED COMMENT 'balabala'",
clause.toSql());
}
+ @Test
+ public void testAlter() throws AnalysisException {
+ CreateIndexClause clause = new CreateIndexClause(
+ new TableName(InternalCatalog.INTERNAL_CATALOG_NAME, "db",
"table"),
+ new IndexDef("index1", false, Lists.newArrayList("col1"),
IndexDef.IndexType.INVERTED, null, "balabala"),
+ true);
+ clause.analyze(analyzer);
+ Assert.assertEquals("ADD INDEX `index1` (`col1`) USING INVERTED
COMMENT 'balabala'", clause.toSql());
+ }
+
@Test(expected = AnalysisException.class)
public void testDuplIndex() throws AnalysisException {
CreateIndexClause clause = new CreateIndexClause(
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/analysis/DropIndexClauseTest.java
b/fe/fe-core/src/test/java/org/apache/doris/analysis/DropIndexClauseTest.java
index da43a1fe563..e1659cd03cf 100644
---
a/fe/fe-core/src/test/java/org/apache/doris/analysis/DropIndexClauseTest.java
+++
b/fe/fe-core/src/test/java/org/apache/doris/analysis/DropIndexClauseTest.java
@@ -39,7 +39,15 @@ public class DropIndexClauseTest {
DropIndexClause clause = new DropIndexClause("index1", false,
new TableName(InternalCatalog.INTERNAL_CATALOG_NAME, "db",
"table"), false);
clause.analyze(analyzer);
- Assert.assertEquals("DROP INDEX index1 ON `db`.`table`",
clause.toSql());
+ Assert.assertEquals("DROP INDEX `index1` ON `db`.`table`",
clause.toSql());
+ }
+
+ @Test
+ public void testAlter() throws UserException {
+ DropIndexClause clause = new DropIndexClause("index1", false,
+ new TableName(InternalCatalog.INTERNAL_CATALOG_NAME, "db",
"table"), true);
+ clause.analyze(analyzer);
+ Assert.assertEquals("DROP INDEX `index1`", clause.toSql());
}
@Test(expected = AnalysisException.class)
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/analysis/IndexDefTest.java
b/fe/fe-core/src/test/java/org/apache/doris/analysis/IndexDefTest.java
index a4eeec679b2..deccb435b71 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/analysis/IndexDefTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/IndexDefTest.java
@@ -64,8 +64,8 @@ public class IndexDefTest {
@Test
public void toSql() {
- Assert.assertEquals("INDEX index1 (`col1`) USING INVERTED COMMENT
'balabala'", def.toSql());
- Assert.assertEquals("INDEX index1 ON table1 (`col1`) USING INVERTED
COMMENT 'balabala'",
+ Assert.assertEquals("INDEX `index1` (`col1`) USING INVERTED COMMENT
'balabala'", def.toSql());
+ Assert.assertEquals("INDEX `index1` ON table1 (`col1`) USING INVERTED
COMMENT 'balabala'",
def.toSql("table1"));
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]