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