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 <rogershijich...@hotmail.com> Authored: Thu Jan 4 16:52:23 2018 +0800 Committer: Li Yang <liy...@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); + } +}