[jira] [Created] (KYLIN-4331) Follow compliant rules in Sonar
Kaige Liu created KYLIN-4331: - Summary: Follow compliant rules in Sonar Key: KYLIN-4331 URL: https://issues.apache.org/jira/browse/KYLIN-4331 Project: Kylin Issue Type: Improvement Reporter: Kaige Liu Assignee: Kaige Liu When a method in a child class has the same signature as a method in a parent class, it is assumed to be an override. However, that's not the case when: * the parent class method is {{static}} and the child class method is not. * the arguments or return types of the child method are in different packages than those of the parent method. * the parent class method is {{private}}. Typically, these things are done unintentionally; the private parent class method is overlooked, the {{static}} keyword in the parent declaration is overlooked, or the wrong class is imported in the child. But if the intent is truly for the child class method to be different, then the method should be renamed to prevent confusion. [https://sonarcloud.io/project/issues?id=org.apache.kylin%3Akylin=AWP9sMDe3e-qcckjAB5V=AWP9sMDe3e-qcckjAB5V] [https://sonarcloud.io/project/issues?id=org.apache.kylin%3Akylin=AWcaThjuH5xombRgErVV=AWcaThjuH5xombRgErVV] [https://sonarcloud.io/project/issues?id=org.apache.kylin%3Akylin=AWxmA253_Xcr_PhA6-Br=AWxmA253_Xcr_PhA6-Br] [https://sonarcloud.io/project/issues?id=org.apache.kylin%3Akylin=AWxmA253_Xcr_PhA6-Bw=AWxmA253_Xcr_PhA6-Bw] [https://sonarcloud.io/project/issues?id=org.apache.kylin%3Akylin=AWxmA253_Xcr_PhA6-By=AWxmA253_Xcr_PhA6-By] [https://sonarcloud.io/project/issues?id=org.apache.kylin%3Akylin=AWxmA253_Xcr_PhA6-B1=AWxmA253_Xcr_PhA6-B1] -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (KYLIN-4311) Fix bugs in Sonar to be compliant
Kaige Liu created KYLIN-4311: - Summary: Fix bugs in Sonar to be compliant Key: KYLIN-4311 URL: https://issues.apache.org/jira/browse/KYLIN-4311 Project: Kylin Issue Type: Improvement Reporter: Kaige Liu Assignee: Kaige Liu By contract, any implementation of the {{java.util.Iterator.next()}} method should throw a {{NoSuchElementException}} exception when the iteration has no more elements. Any other behavior when the iteration is done could lead to unexpected behavior for users of this {{Iterator}}. [https://sonarcloud.io/project/issues?id=org.apache.kylin%3Akylin=AWExwNw9ikuHJGLsvan_=AWExwNw9ikuHJGLsvan_] [https://sonarcloud.io/project/issues?id=org.apache.kylin%3Akylin=AWExwNxOikuHJGLsvaoZ=AWExwNxOikuHJGLsvaoZ] [https://sonarcloud.io/project/issues?id=org.apache.kylin%3Akylin=AWExwOHQikuHJGLsvbDO=AWExwOHQikuHJGLsvbDO] -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (KYLIN-3344) Add GUI to support RDBMS data source
Kaige Liu created KYLIN-3344: - Summary: Add GUI to support RDBMS data source Key: KYLIN-3344 URL: https://issues.apache.org/jira/browse/KYLIN-3344 Project: Kylin Issue Type: Bug Components: Web Reporter: Kaige Liu Assignee: Zhixiong Chen Since Kylin has already supported RDBMS as data source, it should add web GUI to load RDBMS tables. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Created] (KYLIN-3196) Replace StringUtils.containsOnly with Regex
Kaige Liu created KYLIN-3196: - Summary: Replace StringUtils.containsOnly with Regex Key: KYLIN-3196 URL: https://issues.apache.org/jira/browse/KYLIN-3196 Project: Kylin Issue Type: Bug Components: REST Service Reporter: Kaige Liu Assignee: Kaige Liu Fix For: v2.3.0 Notice that we use StringUtils.contains to validate project/cube/model names. It's not high efficiency and elegant. I did a small test: {code:java} public class TempTest { Pattern r = Pattern.compile("^[a-zA-Z0-9_]*$"); @Test public void test() { final char[] VALID_MODELNAME = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_".toCharArray(); String s1 = "abc@"; System.out.println("Call StringUtils.containsOnly 100 times"); long start = System.nanoTime(); for(int i =0; i<100; ++i) { StringUtils.containsOnly(s1); } long end = System.nanoTime(); System.out.println(end - start); System.out.println("Call Regex match 100 times"); start = System.nanoTime(); for(int i =0; i<100; ++i) { containsByRegex(s1); } end = System.nanoTime(); System.out.println(end - start); } private boolean containsByRegex(final String s) { Matcher matcher = r.matcher(s); return matcher.find(); } }{code} The result shows: {code:java} Call StringUtils.containsOnly 100 times 4740997 Call Regex match 100 times 753182 {code} Conclusion: Regex is better than StringUtils.containsOnly -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Created] (KYLIN-3193) Prevent users cloning models across projects
Kaige Liu created KYLIN-3193: - Summary: Prevent users cloning models across projects Key: KYLIN-3193 URL: https://issues.apache.org/jira/browse/KYLIN-3193 Project: Kylin Issue Type: Bug Affects Versions: v2.2.0 Reporter: Kaige Liu Assignee: Kaige Liu Fix For: v2.3.0 Nowadays, data sources and tables are separated by projects in Kylin. So cloning models across projects will leads to tables not found. Should prevent users performing the action. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Created] (KYLIN-3146) Response code and exception should be standardised for cube checking
Kaige Liu created KYLIN-3146: - Summary: Response code and exception should be standardised for cube checking Key: KYLIN-3146 URL: https://issues.apache.org/jira/browse/KYLIN-3146 Project: Kylin Issue Type: Improvement Reporter: Kaige Liu Assignee: Kaige Liu Priority: Minor Checking if cubes exist or not is a common behaviour in some APIs. But we have lots of different responses for the same behaviour. Let's take CubeController as an example. When can not find a cube with its name, someone gives a *400* as response code, someone returns *404*, and others send back a *500*. Not only HTTP response code is not standard, which kind of exception should be thrown is not unified as well. Still using the above example, we can find *IllegalArgumentException*, *BadRequestException*, *InternalErrorException*. -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Created] (KYLIN-3147) Response code and exception should be standardised for cube checking
Kaige Liu created KYLIN-3147: - Summary: Response code and exception should be standardised for cube checking Key: KYLIN-3147 URL: https://issues.apache.org/jira/browse/KYLIN-3147 Project: Kylin Issue Type: Improvement Reporter: Kaige Liu Assignee: Kaige Liu Priority: Minor Checking if cubes exist or not is a common behaviour in some APIs. But we have lots of different responses for the same behaviour. Let's take CubeController as an example. When can not find a cube with its name, someone gives a *400* as response code, someone returns *404*, and others send back a *500*. Not only HTTP response code is not standard, which kind of exception should be thrown is not unified as well. Still using the above example, we can find *IllegalArgumentException*, *BadRequestException*, *InternalErrorException*. -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Created] (KYLIN-3044) Support SQL Server as data source
Kaige Liu created KYLIN-3044: - Summary: Support SQL Server as data source Key: KYLIN-3044 URL: https://issues.apache.org/jira/browse/KYLIN-3044 Project: Kylin Issue Type: Task Reporter: Kaige Liu Assignee: Kaige Liu [KYLIN-1351|https://issues.apache.org/jira/browse/KYLIN-1351] has added Vertica as data source. Base on the work of KYLIN-1351, I'd like to enable SQL Server as data source of kylin. -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Created] (KYLIN-2747) Fail to start kylin if current work directory contains file or directory named "hadoop"
Kaige Liu created KYLIN-2747: - Summary: Fail to start kylin if current work directory contains file or directory named "hadoop" Key: KYLIN-2747 URL: https://issues.apache.org/jira/browse/KYLIN-2747 Project: Kylin Issue Type: Bug Reporter: Kaige Liu OS: ubuntu 14.04 Reproduce steps: 1. touch hadoop 2. bin/kylin.sh start root@hn0-ambari:~/kap-2.4.0-GA-hbase1.x# touch hadoop root@hn0-ambari:~/kap-2.4.0-GA-hbase1.x# bin/kylin.sh start Retrieving hive dependency... Retrieving Spark dependency... Retrieving hbase dependency... Exception in thread "main" java.io.FileNotFoundException: /tmp/kylin-env-diff-7420732488608534086.sh.props (No such file or directory) at java.io.FileInputStream.open0(Native Method) at java.io.FileInputStream.open(FileInputStream.java:195) at java.io.FileInputStream.(FileInputStream.java:138) at java.io.FileInputStream.(FileInputStream.java:93) at io.kyligence.kap.engine.mr.tool.DumpHadoopSystemProps.readAndDelete(SourceFile:131) at io.kyligence.kap.engine.mr.tool.DumpHadoopSystemProps.diffSystemProps(SourceFile:109) at io.kyligence.kap.engine.mr.tool.DumpHadoopSystemProps.main(SourceFile:69) Faild to run io.kyligence.kap.engine.mr.tool.DumpHadoopSystemProps -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Created] (KYLIN-2449) Rewrite should not run on OLAPAggregateRel if has no OLAPTable
Kaige Liu created KYLIN-2449: - Summary: Rewrite should not run on OLAPAggregateRel if has no OLAPTable Key: KYLIN-2449 URL: https://issues.apache.org/jira/browse/KYLIN-2449 Project: Kylin Issue Type: Bug Reporter: Kaige Liu Assignee: Kaige Liu If a OLAPAggregateRel's context does not contain any OLAPTable, it's no need to rewrite column. Otherwise a NPE will be threw, for example: {code} Caused by: java.lang.NullPointerException at org.apache.kylin.query.relnode.OLAPAggregateRel.buildRewriteColumn(OLAPAggregateRel.java:217) at org.apache.kylin.query.relnode.OLAPAggregateRel.buildRewriteFieldsAndMetricsColumns(OLAPAggregateRel.java:340) at org.apache.kylin.query.relnode.OLAPAggregateRel.implementRewrite(OLAPAggregateRel.java:259) at org.apache.kylin.query.relnode.OLAPRel$RewriteImplementor.visitChild(OLAPRel.java:158) at org.apache.kylin.query.relnode.OLAPSortRel.implementRewrite(OLAPSortRel.java:83) at org.apache.kylin.query.relnode.OLAPRel$RewriteImplementor.visitChild(OLAPRel.java:158) at org.apache.kylin.query.relnode.OLAPLimitRel.implementRewrite(OLAPLimitRel.java:105) at org.apache.kylin.query.relnode.OLAPRel$RewriteImplementor.visitChild(OLAPRel.java:158) at org.apache.kylin.query.relnode.OLAPToEnumerableConverter.implement(OLAPToEnumerableConverter.java:94) at org.apache.calcite.adapter.enumerable.EnumerableRelImplementor.implementRoot(EnumerableRelImplementor.java:108) at org.apache.calcite.adapter.enumerable.EnumerableInterpretable.toBindable(EnumerableInterpretable.java:92) at org.apache.calcite.prepare.CalcitePrepareImpl$CalcitePreparingStmt.implement(CalcitePrepareImpl.java:1233) at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:303) at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:200) at org.apache.calcite.prepare.CalcitePrepareImpl.prepare2_(CalcitePrepareImpl.java:761) at org.apache.calcite.prepare.CalcitePrepareImpl.prepare_(CalcitePrepareImpl.java:617) at org.apache.calcite.prepare.CalcitePrepareImpl.prepareSql(CalcitePrepareImpl.java:587) at org.apache.calcite.jdbc.CalciteConnectionImpl.parseQuery(CalciteConnectionImpl.java:215) at org.apache.calcite.jdbc.CalciteMetaImpl.prepareAndExecute(CalciteMetaImpl.java:594) at org.apache.calcite.avatica.AvaticaConnection.prepareAndExecuteInternal(AvaticaConnection.java:615) at org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:148) ... 35 more {code} Test case: {code} SELECT t1.leaf_categ_id, COUNT(*) AS nums FROM (SELECT leaf_categ_id FROM test_kylin_fact WHERE lstg_format_name = 'ABIN') t1 JOIN (SELECT leaf_categ_id FROM test_kylin_fact f INNER JOIN test_order o ON f.order_id = o.order_id WHERE buyer_id > 100) t2 ON t1.leaf_categ_id = t2.leaf_categ_id GROUP BY t1.leaf_categ_id ORDER BY t1.leaf_categ_id LIMIT 10 {code} -- This message was sent by Atlassian JIRA (v6.3.15#6346)
[jira] [Created] (KYLIN-2427) Auto adjust join order to make query executable
Kaige Liu created KYLIN-2427: - Summary: Auto adjust join order to make query executable Key: KYLIN-2427 URL: https://issues.apache.org/jira/browse/KYLIN-2427 Project: Kylin Issue Type: Bug Reporter: Kaige Liu KYLIN-2406 reports an issue: The order of joins will affect the result of query. For example, below query leads to "No model found" Below query triggers NPE {code} with tmp3 as ( select l_partkey, 0.5 * sum(l_quantity) as sum_quantity, l_suppkey from v_lineitem inner join supplier on l_suppkey = s_suppkey inner join nation on s_nationkey = n_nationkey inner join part on l_partkey = p_partkey where l_shipdate >= '1992-01-01' and l_shipdate <= '1995-01-01' and n_name = 'CANADA' and p_name like 'forest%' group by l_partkey, l_suppkey ) select s_name, s_address from v_partsupp inner join tmp3 on ps_partkey = l_partkey and ps_suppkey = l_suppkey inner join supplier on ps_suppkey = s_suppkey where ps_availqty > sum_quantity group by s_name, s_address order by s_name {code} While below query is OK. Only difference being the order of "inner join tmp3" and "inner join supplier" {code} with tmp3 as ( select l_partkey, 0.5 * sum(l_quantity) as sum_quantity, l_suppkey from v_lineitem inner join supplier on l_suppkey = s_suppkey inner join nation on s_nationkey = n_nationkey inner join part on l_partkey = p_partkey where l_shipdate >= '1992-01-01' and l_shipdate <= '1995-01-01' and n_name = 'CANADA' and p_name like 'forest%' group by l_partkey, l_suppkey ) select s_name, s_address from v_partsupp inner join supplier on ps_suppkey = s_suppkey inner join tmp3 on ps_partkey = l_partkey and ps_suppkey = l_suppkey where ps_availqty > sum_quantity group by s_name, s_address order by s_name {code} But below query is OK. {code} with tmp3 as ( select l_partkey, 0.5 * sum(l_quantity) as sum_quantity, l_suppkey from v_lineitem inner join supplier on l_suppkey = s_suppkey inner join nation on s_nationkey = n_nationkey inner join part on l_partkey = p_partkey where l_shipdate >= '1992-01-01' and l_shipdate <= '1995-01-01' and n_name = 'CANADA' and p_name like 'forest%' group by l_partkey, l_suppkey ) select s_name, s_address from v_partsupp inner join supplier on ps_suppkey = s_suppkey inner join tmp3 on ps_partkey = l_partkey and ps_suppkey = l_suppkey where ps_availqty > sum_quantity group by s_name, s_address order by s_name {code} -- This message was sent by Atlassian JIRA (v6.3.15#6346)
[jira] [Created] (KYLIN-2426) Tests will fail if env not satisfy hardcoded path in ITHDFSResourceStoreTest
Kaige Liu created KYLIN-2426: - Summary: Tests will fail if env not satisfy hardcoded path in ITHDFSResourceStoreTest Key: KYLIN-2426 URL: https://issues.apache.org/jira/browse/KYLIN-2426 Project: Kylin Issue Type: Bug Reporter: Kaige Liu There are some hardcodes in ITHDFSResourcesStoreTest which will fail if we are not running IT in a sandbox. {code} public void testFullQalifiedName() throws Exception { String oldUrl = kylinConfig.getMetadataUrl(); String path = "hdfs://sandbox.hortonworks.com:8020/kylin/kylin_metadata/metadata_test2"; kylinConfig.setProperty("kylin.metadata.url", path + "@hdfs"); HDFSResourceStore store = new HDFSResourceStore(kylinConfig); ResourceStoreTest.testAStore(store); kylinConfig.setProperty("kylin.metadata.url", oldUrl); assertTrue(fs.exists(new Path(path))); } {code} -- This message was sent by Atlassian JIRA (v6.3.15#6346)
[jira] [Created] (KYLIN-2395) Lots of warning messages about failing to scan jars in kylin.out
Kaige Liu created KYLIN-2395: - Summary: Lots of warning messages about failing to scan jars in kylin.out Key: KYLIN-2395 URL: https://issues.apache.org/jira/browse/KYLIN-2395 Project: Kylin Issue Type: Bug Reporter: Kaige Liu When starting kylin, tomcat will scan jars under classpath by default. It's trivial and annoying. I thinks it's better to disable scanning jars. Jan 16, 2017 3:49:08 AM org.apache.tomcat.util.scan.StandardJarScanner scan WARNING: Failed to scan [file:/usr/hdp/2.2.4.2-2/phoenix/hsqldb-1.8.0.10.jar] from classloader hierarchy java.io.FileNotFoundException: /usr/hdp/2.2.4.2-2/phoenix/hsqldb-1.8.0.10.jar (No such file or directory) at java.util.zip.ZipFile.open(Native Method) at java.util.zip.ZipFile.(ZipFile.java:215) at java.util.zip.ZipFile.(ZipFile.java:145) at java.util.jar.JarFile.(JarFile.java:154) at java.util.jar.JarFile.(JarFile.java:118) at org.apache.tomcat.util.scan.JarFileUrlJar.(JarFileUrlJar.java:60) at org.apache.tomcat.util.scan.JarFactory.newInstance(JarFactory.java:48) at org.apache.tomcat.util.scan.StandardJarScanner.process(StandardJarScanner.java:338) at org.apache.tomcat.util.scan.StandardJarScanner.scan(StandardJarScanner.java:288) at org.apache.catalina.startup.ContextConfig.processJarsForWebFragments(ContextConfig.java:1898) at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1126) at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:775) at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:299) at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:94) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5087) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:752) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734) at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:952) at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1823) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745) Jan 16, 2017 3:49:08 AM org.apache.tomcat.util.scan.StandardJarScanner scan WARNING: Failed to scan [file:/usr/hdp/2.2.4.2-2/phoenix/automaton-1.11-8.jar] from classloader hierarchy java.io.FileNotFoundException: /usr/hdp/2.2.4.2-2/phoenix/automaton-1.11-8.jar (No such file or directory) at java.util.zip.ZipFile.open(Native Method) at java.util.zip.ZipFile.(ZipFile.java:215) at java.util.zip.ZipFile.(ZipFile.java:145) at java.util.jar.JarFile.(JarFile.java:154) at java.util.jar.JarFile.(JarFile.java:118) at org.apache.tomcat.util.scan.JarFileUrlJar.(JarFileUrlJar.java:60) at org.apache.tomcat.util.scan.JarFactory.newInstance(JarFactory.java:48) at org.apache.tomcat.util.scan.StandardJarScanner.process(StandardJarScanner.java:338) at org.apache.tomcat.util.scan.StandardJarScanner.scan(StandardJarScanner.java:288) at org.apache.catalina.startup.ContextConfig.processJarsForWebFragments(ContextConfig.java:1898) at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1126) at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:775) at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:299) at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:94) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5087) -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (KYLIN-2376) Upgrade checkstyle plugin
Kaige Liu created KYLIN-2376: - Summary: Upgrade checkstyle plugin Key: KYLIN-2376 URL: https://issues.apache.org/jira/browse/KYLIN-2376 Project: Kylin Issue Type: Bug Reporter: Kaige Liu Assignee: Kaige Liu By default maven-checkstyle-plugin use checkstyle-6.12 which will cause a NPE in some cases. We'd better upgrade it to avoid this. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (KYLIN-2301) ERROR when executing query with subquery in "NOT IN" clause.
Kaige Liu created KYLIN-2301: - Summary: ERROR when executing query with subquery in "NOT IN" clause. Key: KYLIN-2301 URL: https://issues.apache.org/jira/browse/KYLIN-2301 Project: Kylin Issue Type: Bug Components: Query Engine Affects Versions: v1.6.0 Environment: CentOS 6.5 Reporter: Kaige Liu Assignee: liyang Priority: Minor Error returned when executing below query: select * from v_partsupp where ps_suppkey not in ( select s_suppkey from supplier where s_comment like '%Customer%Complaints%' ) v_partsupp is a fact table and supplier is a lookup table here. === StackTrace: Caused by: java.lang.ClassCastException: org.apache.calcite.rex.RexLiteral cannot be cast to org.apache.calcite.rex.RexCall at org.apache.kylin.query.relnode.OLAPJoinRel.implementOLAP(OLAPJoinRel.java:167) at org.apache.kylin.query.relnode.OLAPRel$OLAPImplementor.visitChild(OLAPRel.java:83) at org.apache.kylin.query.relnode.OLAPJoinRel.implementOLAP(OLAPJoinRel.java:126) at org.apache.kylin.query.relnode.OLAPRel$OLAPImplementor.visitChild(OLAPRel.java:83) at org.apache.kylin.query.relnode.OLAPFilterRel.implementOLAP(OLAPFilterRel.java:300) at org.apache.kylin.query.relnode.OLAPRel$OLAPImplementor.visitChild(OLAPRel.java:83) at org.apache.kylin.query.relnode.OLAPLimitRel.implementOLAP(OLAPLimitRel.java:75) at org.apache.kylin.query.relnode.OLAPRel$OLAPImplementor.visitChild(OLAPRel.java:83) at org.apache.kylin.query.relnode.OLAPProjectRel.implementOLAP(OLAPProjectRel.java:111) at org.apache.kylin.query.relnode.OLAPRel$OLAPImplementor.visitChild(OLAPRel.java:83) at org.apache.kylin.query.relnode.OLAPToEnumerableConverter.implement(OLAPToEnumerableConverter.java:80) at org.apache.calcite.adapter.enumerable.EnumerableRelImplementor.implementRoot(EnumerableRelImplementor.java:102) at org.apache.calcite.adapter.enumerable.EnumerableInterpretable.toBindable(EnumerableInterpretable.java:92) at org.apache.calcite.prepare.CalcitePrepareImpl$CalcitePreparingStmt.implement(CalcitePrepareImpl.java:1178) at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:294) at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:193) at org.apache.calcite.prepare.CalcitePrepareImpl.prepare2_(CalcitePrepareImpl.java:724) at org.apache.calcite.prepare.CalcitePrepareImpl.prepare_(CalcitePrepareImpl.java:591) at org.apache.calcite.prepare.CalcitePrepareImpl.prepareSql(CalcitePrepareImpl.java:561) at org.apache.calcite.jdbc.CalciteConnectionImpl.parseQuery(CalciteConnectionImpl.java:215) at org.apache.calcite.jdbc.CalciteMetaImpl.prepareAndExecute(CalciteMetaImpl.java:594) at org.apache.calcite.avatica.AvaticaConnection.prepareAndExecuteInternal(AvaticaConnection.java:613) at org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:139) -- This message was sent by Atlassian JIRA (v6.3.4#6332)