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);
+ }
+}