You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by xu...@apache.org on 2022/10/13 14:59:22 UTC

[doris] branch master updated: [Fix](array-type) Disable schema change between array type columns (#13261)

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

xuyang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new 87e5e2b48b [Fix](array-type) Disable schema change between array type columns (#13261)
87e5e2b48b is described below

commit 87e5e2b48b1812a330c6bad096df6f666a554cb3
Author: xy720 <22...@users.noreply.github.com>
AuthorDate: Thu Oct 13 22:59:09 2022 +0800

    [Fix](array-type) Disable schema change between array type columns (#13261)
    
    Currently, we do not support schema change between array type columns.
    We should forbid users from doing this operation.
---
 fe/fe-core/src/main/java/org/apache/doris/catalog/ColumnType.java | 5 +++++
 fe/fe-core/src/test/java/org/apache/doris/catalog/ColumnTest.java | 8 ++++++++
 2 files changed, 13 insertions(+)

diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/ColumnType.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/ColumnType.java
index 7b63796548..eab1da07dd 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/ColumnType.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/ColumnType.java
@@ -153,6 +153,11 @@ public abstract class ColumnType {
 
         // we should support schema change between different precision
         schemaChangeMatrix[PrimitiveType.DATETIMEV2.ordinal()][PrimitiveType.DATETIMEV2.ordinal()] = true;
+
+        // Currently, we do not support schema change between complex types with subtypes.
+        schemaChangeMatrix[PrimitiveType.ARRAY.ordinal()][PrimitiveType.ARRAY.ordinal()] = false;
+        schemaChangeMatrix[PrimitiveType.STRUCT.ordinal()][PrimitiveType.STRUCT.ordinal()] = false;
+        schemaChangeMatrix[PrimitiveType.MAP.ordinal()][PrimitiveType.MAP.ordinal()] = false;
     }
 
     static boolean isSchemaChangeAllowed(Type lhs, Type rhs) {
diff --git a/fe/fe-core/src/test/java/org/apache/doris/catalog/ColumnTest.java b/fe/fe-core/src/test/java/org/apache/doris/catalog/ColumnTest.java
index d3b80bbc90..45e4df0658 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/catalog/ColumnTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/catalog/ColumnTest.java
@@ -142,4 +142,12 @@ public class ColumnTest {
         oldColumn.checkSchemaChangeAllowed(newColumn);
         Assert.fail("No exception throws.");
     }
+
+    @Test(expected = DdlException.class)
+    public void testSchemaChangeArrayToArray() throws DdlException {
+        Column oldColumn = new Column("a", ArrayType.create(Type.TINYINT, true), false, null, true, "0", "");
+        Column newColumn = new Column("a", ArrayType.create(Type.INT, true), false, null, true, "0", "");
+        oldColumn.checkSchemaChangeAllowed(newColumn);
+        Assert.fail("No exception throws.");
+    }
 }


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