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

morningman pushed a commit to branch branch-0.15
in repository https://gitbox.apache.org/repos/asf/incubator-doris.git

commit dce0a1e0e0285078c1abce0ec45a5584847549be
Author: pengxiangyu <[email protected]>
AuthorDate: Sun Oct 17 22:53:28 2021 +0800

    [BUG] fix bug for schema schange (#6839)
    
    This commit has an error:
    #6791
    when you only change the order of column, error will apear.
---
 .../org/apache/doris/alter/SchemaChangeHandler.java  |  4 ++--
 .../test/java/org/apache/doris/alter/AlterTest.java  | 20 ++++++++++++++++++++
 2 files changed, 22 insertions(+), 2 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 313ad47..2e6ba17 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
@@ -1221,7 +1221,7 @@ public class SchemaChangeHandler extends AlterHandler {
                     for (Column alterColumn : alterSchema) {
                         if (alterColumn.nameEquals(partitionCol.getName(), 
true)) {
                             // 2.1 partition column cannot be modified
-                            if (needAlterColumns.contains(alterColumn)) {
+                            if (needAlterColumns.contains(alterColumn) && 
!alterColumn.equals(partitionCol)) {
                                 throw new DdlException("Can not modify 
partition column["
                                         + partitionCol.getName() + "]. index["
                                         + 
olapTable.getIndexNameById(alterIndexId) + "]");
@@ -1250,7 +1250,7 @@ public class SchemaChangeHandler extends AlterHandler {
                     for (Column alterColumn : alterSchema) {
                         if (alterColumn.nameEquals(distributionCol.getName(), 
true)) {
                             // 3.1 distribution column cannot be modified
-                            if (needAlterColumns.contains(alterColumn)) {
+                            if (needAlterColumns.contains(alterColumn) && 
!alterColumn.equals(distributionCol)) {
                                 throw new DdlException("Can not modify 
distribution column["
                                         + distributionCol.getName() + "]. 
index["
                                         + 
olapTable.getIndexNameById(alterIndexId) + "]");
diff --git a/fe/fe-core/src/test/java/org/apache/doris/alter/AlterTest.java 
b/fe/fe-core/src/test/java/org/apache/doris/alter/AlterTest.java
index a2a0667..92a05d9 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/alter/AlterTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/alter/AlterTest.java
@@ -704,6 +704,26 @@ public class AlterTest {
 
     }
 
+    @Test
+    public void testChangeOrder() throws Exception {
+        createTable("CREATE TABLE test.change_order\n" +
+                "(\n" +
+                "    k1 date,\n" +
+                "    k2 int,\n" +
+                "    v1 int sum\n" +
+                ")\n" +
+                "PARTITION BY RANGE(k1)\n" +
+                "(\n" +
+                "    PARTITION p1 values less than('2020-02-01'),\n" +
+                "    PARTITION p2 values less than('2020-03-01')\n" +
+                ")\n" +
+                "DISTRIBUTED BY HASH(k2) BUCKETS 3\n" +
+                "PROPERTIES('replication_num' = '1');");
+
+        String changeOrderStmt = "ALTER TABLE test.change_order ORDER BY (k2, 
k1, v1);;";
+        alterTable(changeOrderStmt, false);
+    }
+
     private boolean checkAllTabletsExists(List<Long> tabletIds) {
         TabletInvertedIndex invertedIndex = 
Catalog.getCurrentCatalog().getTabletInvertedIndex();
         for (long tabletId : tabletIds) {

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to