You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by mo...@apache.org on 2020/07/22 14:39:05 UTC

[incubator-doris] branch master updated: [Bug][Alter] Fix boolean support (#4123)

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 31a6c43  [Bug][Alter] Fix boolean support (#4123)
31a6c43 is described below

commit 31a6c43a69bb312cf96e2c467468b08507c0db5c
Author: Zhengguo Yang <78...@qq.com>
AuthorDate: Wed Jul 22 22:38:55 2020 +0800

    [Bug][Alter] Fix boolean support (#4123)
    
    Fixes #4122
     *  add type check when add bloom filter index on boolean column.
     *  support add boolean column.
---
 .../java/org/apache/doris/analysis/ColumnDef.java  |  3 +++
 .../apache/doris/common/util/PropertyAnalyzer.java |  2 +-
 .../org/apache/doris/analysis/ColumnDefTest.java   | 22 ++++++++++++++++++++++
 .../apache/doris/common/PropertyAnalyzerTest.java  | 17 +++++++++++++----
 4 files changed, 39 insertions(+), 5 deletions(-)

diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/ColumnDef.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/ColumnDef.java
index cc9c579..b86d4ac 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ColumnDef.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ColumnDef.java
@@ -239,6 +239,9 @@ public class ColumnDef {
                 break;
             case BITMAP:
                 break;
+            case BOOLEAN:
+                BoolLiteral boolLiteral = new BoolLiteral(defaultValue);
+                break;
             default:
                 throw new AnalysisException("Unsupported type: " + type);
         }
diff --git a/fe/fe-core/src/main/java/org/apache/doris/common/util/PropertyAnalyzer.java b/fe/fe-core/src/main/java/org/apache/doris/common/util/PropertyAnalyzer.java
index 49f28dc..88448ca 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/common/util/PropertyAnalyzer.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/common/util/PropertyAnalyzer.java
@@ -314,7 +314,7 @@ public class PropertyAnalyzer {
                         // tinyint/float/double columns don't support
                         // key columns and none/replace aggregate non-key columns support
                         if (type == PrimitiveType.TINYINT || type == PrimitiveType.FLOAT
-                                || type == PrimitiveType.DOUBLE) {
+                                || type == PrimitiveType.DOUBLE || type == PrimitiveType.BOOLEAN) {
                             throw new AnalysisException(type + " is not supported in bloom filter index. "
                                     + "invalid column: " + bfColumn);
                         } else if (column.isKey()
diff --git a/fe/fe-core/src/test/java/org/apache/doris/analysis/ColumnDefTest.java b/fe/fe-core/src/test/java/org/apache/doris/analysis/ColumnDefTest.java
index 0bf7046..6aa19f9 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/analysis/ColumnDefTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/ColumnDefTest.java
@@ -31,12 +31,15 @@ public class ColumnDefTest {
     private TypeDef intCol;
     private TypeDef stringCol;
     private TypeDef floatCol;
+    private TypeDef booleanCol;
 
     @Before
     public void setUp() {
         intCol = new TypeDef(ScalarType.createType(PrimitiveType.INT));
         stringCol = new TypeDef(ScalarType.createChar(10));
         floatCol = new TypeDef(ScalarType.createType(PrimitiveType.FLOAT));
+        booleanCol = new TypeDef(ScalarType.createType(PrimitiveType.BOOLEAN));
+
     }
 
     @Test
@@ -96,4 +99,23 @@ public class ColumnDefTest {
         column.analyze(true);
     }
 
+    @Test
+    public void testBooleanDefaultValue() throws AnalysisException{
+        ColumnDef column1 = new ColumnDef("col", booleanCol, true, null, true, new DefaultValue(true, "1"), "");
+        column1.analyze(true);
+        Assert.assertEquals("1", column1.getDefaultValue());
+
+        ColumnDef column2 = new ColumnDef("col", booleanCol, true, null, true, new DefaultValue(true, "true"), "");
+        column2.analyze(true);
+        Assert.assertEquals("true", column2.getDefaultValue());
+
+        ColumnDef column3 = new ColumnDef("col", booleanCol, true, null, true, new DefaultValue(true, "10"), "");
+        try {
+            column3.analyze(true);
+        } catch (AnalysisException e) {
+            Assert.assertEquals("errCode = 2, detailMessage = Invalid BOOLEAN literal: 10", e.getMessage());
+        }
+    }
+
+
 }
diff --git a/fe/fe-core/src/test/java/org/apache/doris/common/PropertyAnalyzerTest.java b/fe/fe-core/src/test/java/org/apache/doris/common/PropertyAnalyzerTest.java
index 2f88ecd..ddbf6c1 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/common/PropertyAnalyzerTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/common/PropertyAnalyzerTest.java
@@ -47,7 +47,7 @@ public class PropertyAnalyzerTest {
         List<Column> columns = Lists.newArrayList();
         columns.add(new Column("k1", PrimitiveType.INT));
         columns.add(new Column("k2", PrimitiveType.TINYINT));
-        columns.add(new Column("v1", 
+        columns.add(new Column("v1",
                         ScalarType.createType(PrimitiveType.VARCHAR), false, AggregateType.REPLACE, "", ""));
         columns.add(new Column("v2", 
                         ScalarType.createType(PrimitiveType.BIGINT), false, AggregateType.SUM, "0", ""));
@@ -66,7 +66,8 @@ public class PropertyAnalyzerTest {
         List<Column> columns = Lists.newArrayList();
         columns.add(new Column("k1", PrimitiveType.INT));
         columns.add(new Column("k2", PrimitiveType.TINYINT));
-        columns.add(new Column("v1", 
+        columns.add(new Column("k3", PrimitiveType.BOOLEAN));
+        columns.add(new Column("v1",
                         ScalarType.createType(PrimitiveType.VARCHAR), false, AggregateType.REPLACE, "", ""));
         columns.add(new Column("v2", ScalarType.createType(PrimitiveType.BIGINT), false, AggregateType.SUM, "0", ""));
         columns.get(0).setIsKey(true);
@@ -82,8 +83,8 @@ public class PropertyAnalyzerTest {
             Assert.fail();
         }
 
-        // k3 not exist
-        properties.put(PropertyAnalyzer.PROPERTIES_BF_COLUMNS, "k3");
+        // k4 not exist
+        properties.put(PropertyAnalyzer.PROPERTIES_BF_COLUMNS, "k4");
         try {
             PropertyAnalyzer.analyzeBloomFilterColumns(properties, columns);
         } catch (AnalysisException e) {
@@ -98,6 +99,14 @@ public class PropertyAnalyzerTest {
             Assert.assertTrue(e.getMessage().contains("TINYINT is not supported"));
         }
 
+        // bool not supported
+        properties.put(PropertyAnalyzer.PROPERTIES_BF_COLUMNS, "k3");
+        try {
+            PropertyAnalyzer.analyzeBloomFilterColumns(properties, columns);
+        } catch (AnalysisException e) {
+            Assert.assertTrue(e.getMessage().contains("BOOLEAN is not supported"));
+        }
+
         // not replace value
         properties.put(PropertyAnalyzer.PROPERTIES_BF_COLUMNS, "v2");
         try {


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