Hi devs,
First, a short disclaimer, I am cross-posting this question on the calcite and on the SQuirrelSQL mailing list as I’m not really sure where the problem comes from.
I am using Apache Calcite [1] as custom driver in SQuirrelSQL.
Internally, Calcite uses Code generation and the Janino Compiler [2] to generate dynamic classes.
Sadly, the Calcite Queries fail at this stage with the following Stacktrace:
2018-08-13 13:06:15,471 [Thread-3] DEBUG net.sourceforge.squirrel_sql.fw.util.DefaultExceptionFormatter - Error
593 java.sql.SQLException: Error while executing SQL "SELECT * FROM metadata.TABLES": Unable to instantiate java compiler
594 at org.apache.calcite.avatica.Helper.createException(Helper.java:56)
595 at org.apache.calcite.avatica.Helper.createException(Helper.java:41)
596 at org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:156)
597 at org.apache.calcite.avatica.AvaticaStatement.execute(AvaticaStatement.java:209)
598 at net.sourceforge.squirrel_sql.client.session.StatementWrapper.execute(StatementWrapper.java:165)
599 at net.sourceforge.squirrel_sql.client.session.SQLExecuterTask.processQuery(SQLExecuterTask.java:369)
600 at net.sourceforge.squirrel_sql.client.session.SQLExecuterTask.run(SQLExecuterTask.java:212)
601 at net.sourceforge.squirrel_sql.fw.util.TaskExecuter.run(TaskExecuter.java:82)
602 at java.lang.Thread.run(Thread.java:745)
603 Caused by: java.lang.IllegalStateException: Unable to instantiate java compiler
604 at org.apache.calcite.rel.metadata.JaninoRelMetadataProvider.compile(JaninoRelMetadataProvider.java:433)
605 at org.apache.calcite.rel.metadata.JaninoRelMetadataProvider.load3(JaninoRelMetadataProvider.java:374)
606 at org.apache.calcite.rel.metadata.JaninoRelMetadataProvider.access$000(JaninoRelMetadataProvider.java:94)
607 at org.apache.calcite.rel.metadata.JaninoRelMetadataProvider$1.load(JaninoRelMetadataProvider.java:113)
608 at org.apache.calcite.rel.metadata.JaninoRelMetadataProvider$1.load(JaninoRelMetadataProvider.java:110)
609 at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3542)
610 at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2323)
611 at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2286)
612 at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2201)
613 at com.google.common.cache.LocalCache.get(LocalCache.java:3953)
614 at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3957)
615 at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4875)
616 at org.apache.calcite.rel.metadata.JaninoRelMetadataProvider.create(JaninoRelMetadataProvider.java:464)
617 at org.apache.calcite.rel.metadata.JaninoRelMetadataProvider.revise(JaninoRelMetadataProvider.java:477)
618 at org.apache.calcite.rel.metadata.RelMetadataQuery.revise(RelMetadataQuery.java:203)
619 at org.apache.calcite.rel.metadata.RelMetadataQuery.collations(RelMetadataQuery.java:565)
620 at org.apache.calcite.rel.metadata.RelMdCollation.project(RelMdCollation.java:207)
621 at org.apache.calcite.rel.logical.LogicalProject$1.get(LogicalProject.java:117)
622 at org.apache.calcite.rel.logical.LogicalProject$1.get(LogicalProject.java:115)
623 at org.apache.calcite.plan.RelTraitSet.replaceIfs(RelTraitSet.java:238)
624 at org.apache.calcite.rel.logical.LogicalProject.create(LogicalProject.java:113)
625 at org.apache.calcite.rel.logical.LogicalProject.create(LogicalProject.java:103)
626 at org.apache.calcite.rel.core.RelFactories$ProjectFactoryImpl.createProject(RelFactories.java:127)
627 at org.apache.calcite.tools.RelBuilder.project(RelBuilder.java:956)
628 at org.apache.calcite.plan.RelOptUtil.createProject(RelOptUtil.java:2952)
629 at org.apache.calcite.plan.RelOptUtil.createProject(RelOptUtil.java:2910)
630 at org.apache.calcite.plan.RelOptUtil.createProject(RelOptUtil.java:2854)
631 at org.apache.calcite.sql2rel.SqlToRelConverter.convertSelectList(SqlToRelConverter.java:3734)
632 at org.apache.calcite.sql2rel.SqlToRelConverter.convertSelectImpl(SqlToRelConverter.java:662)
633 at org.apache.calcite.sql2rel.SqlToRelConverter.convertSelect(SqlToRelConverter.java:619)
634 at org.apache.calcite.sql2rel.SqlToRelConverter.convertQueryRecursive(SqlToRelConverter.java:3028)
635 at org.apache.calcite.sql2rel.SqlToRelConverter.convertQuery(SqlToRelConverter.java:555)
636 at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:266)
637 at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:230)
638 at org.apache.calcite.prepare.CalcitePrepareImpl.prepare2_(CalcitePrepareImpl.java:786)
639 at org.apache.calcite.prepare.CalcitePrepareImpl.prepare_(CalcitePrepareImpl.java:640)
640 at org.apache.calcite.prepare.CalcitePrepareImpl.prepareSql(CalcitePrepareImpl.java:610)
641 at org.apache.calcite.jdbc.CalciteConnectionImpl.parseQuery(CalciteConnectionImpl.java:221)
642 at org.apache.calcite.jdbc.CalciteMetaImpl.prepareAndExecute(CalciteMetaImpl.java:603)
643 at org.apache.calcite.avatica.AvaticaConnection.prepareAndExecuteInternal(AvaticaConnection.java:638)
644 at org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:149)
645 ... 6 more
646 Caused by: java.lang.ClassNotFoundException: No implementation of org.codehaus.commons.compiler is on the class path. Typically, you'd have 'janino.jar', or 'commons-compiler-jdk.jar', or both on the classpath.
647 at org.codehaus.commons.compiler.CompilerFactoryFactory.getDefaultCompilerFactory(CompilerFactoryFactory.java:59)
648 at org.apache.calcite.rel.metadata.JaninoRelMetadataProvider.compile(JaninoRelMetadataProvider.java:431)
649 ... 46 more
I also added janino-2.76.jar as well as commons-compiler-2.7.6.jar to the classpath but the Exception does not go away.
Is there any usage of these packages in SQuirrelSQL or a possibility that these are shaded or a version incompatibility exists?
Thanks!
Julian
[1] https://calcite.apache.org/
[2] https://janino-compiler.github.io/janino/
|