You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by li...@apache.org on 2018/02/04 00:51:09 UTC

[06/50] [abbrv] kylin git commit: minor, add array type test

minor, add array type test


Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/2ef3d490
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/2ef3d490
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/2ef3d490

Branch: refs/heads/sync
Commit: 2ef3d4906937ad1b00bc344f8cfcbb8900ce0998
Parents: a4acb4d
Author: Roger Shi <ro...@hotmail.com>
Authored: Thu Jan 4 16:52:23 2018 +0800
Committer: Li Yang <li...@apache.org>
Committed: Fri Jan 26 22:54:58 2018 +0800

----------------------------------------------------------------------
 .../apache/kylin/query/schema/OLAPTable.java    |  2 +-
 .../kylin/query/schema/OLAPTableTest.java       | 78 ++++++++++++++++++++
 2 files changed, 79 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/2ef3d490/query/src/main/java/org/apache/kylin/query/schema/OLAPTable.java
----------------------------------------------------------------------
diff --git a/query/src/main/java/org/apache/kylin/query/schema/OLAPTable.java b/query/src/main/java/org/apache/kylin/query/schema/OLAPTable.java
index ca8807e..b5313ed 100644
--- a/query/src/main/java/org/apache/kylin/query/schema/OLAPTable.java
+++ b/query/src/main/java/org/apache/kylin/query/schema/OLAPTable.java
@@ -88,7 +88,7 @@ public class OLAPTable extends AbstractQueryableTable implements TranslatableTab
         SQLTYPE_MAPPING.put("timestamp", SqlTypeName.TIMESTAMP);
         SQLTYPE_MAPPING.put("any", SqlTypeName.ANY);
 
-        REGEX_SQLTYPE_MAPPING.put("array\\<.*\\>", SqlTypeName.ARRAY);
+        REGEX_SQLTYPE_MAPPING.put("array\\<.+\\>", SqlTypeName.ARRAY);
     }
 
     private final boolean exposeMore;

http://git-wip-us.apache.org/repos/asf/kylin/blob/2ef3d490/query/src/test/java/org/apache/kylin/query/schema/OLAPTableTest.java
----------------------------------------------------------------------
diff --git a/query/src/test/java/org/apache/kylin/query/schema/OLAPTableTest.java b/query/src/test/java/org/apache/kylin/query/schema/OLAPTableTest.java
new file mode 100644
index 0000000..00440de
--- /dev/null
+++ b/query/src/test/java/org/apache/kylin/query/schema/OLAPTableTest.java
@@ -0,0 +1,78 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.kylin.query.schema;
+
+import org.apache.calcite.rel.type.RelDataType;
+import org.apache.calcite.rel.type.RelDataTypeFactory;
+import org.apache.calcite.rel.type.RelDataTypeSystem;
+import org.apache.calcite.sql.type.ArraySqlType;
+import org.apache.calcite.sql.type.BasicSqlType;
+import org.apache.calcite.sql.type.SqlTypeFactoryImpl;
+import org.apache.calcite.sql.type.SqlTypeName;
+import org.apache.kylin.common.util.LocalFileMetadataTestCase;
+import org.apache.kylin.metadata.datatype.DataType;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+public class OLAPTableTest extends LocalFileMetadataTestCase {
+    @Before
+    public void setUp() throws Exception {
+        this.createTestMetadata();
+    }
+
+    @After
+    public void after() throws Exception {
+        this.cleanupTestMetadata();
+    }
+
+    @Test
+    public void testCreateSqlType() {
+        RelDataTypeFactory typeFactory = new SqlTypeFactoryImpl(RelDataTypeSystem.DEFAULT);
+        DataType kylinDataType = DataType.getType("array<string>");
+
+        RelDataType relDataType = OLAPTable.createSqlType(typeFactory, kylinDataType, true);
+        Assert.assertTrue(relDataType instanceof ArraySqlType);
+        Assert.assertEquals(SqlTypeName.ARRAY, relDataType.getSqlTypeName());
+        Assert.assertTrue(relDataType.getComponentType() instanceof BasicSqlType);
+        Assert.assertEquals(SqlTypeName.VARCHAR, relDataType.getComponentType().getSqlTypeName());
+        Assert.assertTrue(relDataType.isNullable());
+
+        kylinDataType = DataType.getType("array<>");
+        boolean catchedEx = false;
+        try {
+            OLAPTable.createSqlType(typeFactory, kylinDataType, true);
+        } catch (IllegalArgumentException ex) {
+            Assert.assertEquals("Unrecognized data type array<>", ex.getMessage());
+            catchedEx = true;
+        }
+        Assert.assertTrue(catchedEx);
+
+        kylinDataType = DataType.getType("array<AAA>");
+        catchedEx = false;
+        try {
+            OLAPTable.createSqlType(typeFactory, kylinDataType, true);
+        } catch (IllegalArgumentException ex) {
+            Assert.assertTrue(ex.getMessage().startsWith("bad data type -- aaa"));
+            catchedEx = true;
+        }
+        Assert.assertTrue(catchedEx);
+    }
+}