Details
-
Improvement
-
Status: Open
-
Major
-
Resolution: Unresolved
-
None
-
None
Description
Started kicking the tires on Solr SQL with Superset and the first issue I encountered is Calcite's parsing doesn't like the schema name (Solr uses default) on table names, such as:
Caused by: java.sql.SQLException: Error while executing SQL "SELECT genre_s AS genre_s, COUNT(*) AS `count` FROM `default`.books GROUP BY genre_s ORDER BY `count` DESC LIMIT 100": From line 3, column 6 to line 3, column 20: Object 'default' not found at org.apache.calcite.avatica.Helper.createException(Helper.java:56) ~[?:?] at org.apache.calcite.avatica.Helper.createException(Helper.java:41) ~[?:?] at org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:163) ~[?:?] at org.apache.calcite.avatica.AvaticaStatement.executeQuery(AvaticaStatement.java:227) ~[?:?] at org.apache.solr.client.solrj.io.stream.JDBCStream.open(JDBCStream.java:283) ~[?:?] ... 55 more Caused by: org.apache.calcite.runtime.CalciteContextException: From line 3, column 6 to line 3, column 20: Object 'default' not found at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?] at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:?] at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?] at java.lang.reflect.Constructor.newInstance(Constructor.java:490) ~[?:?] at org.apache.calcite.runtime.Resources$ExInstWithCause.ex(Resources.java:506) ~[?:?] at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:917) ~[?:?] at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:902) ~[?:?] at org.apache.calcite.sql.validate.SqlValidatorImpl.newValidationError(SqlValidatorImpl.java:5271) ~[?:?] at org.apache.calcite.sql.validate.IdentifierNamespace.resolveImpl(IdentifierNamespace.java:183) ~[?:?] at org.apache.calcite.sql.validate.IdentifierNamespace.validateImpl(IdentifierNamespace.java:188) ~[?:?] at org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:89) ~[?:?] at org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1098) ~[?:?] at org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:1069) ~[?:?] at org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:3380) ~[?:?] at org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:3362) ~[?:?] at org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelect(SqlValidatorImpl.java:3644) ~[?:?] at org.apache.calcite.sql.validate.SelectNamespace.validateImpl(SelectNamespace.java:64) ~[?:?] at org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:89) ~[?:?] at org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1098) ~[?:?] at org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:1069) ~[?:?] at org.apache.calcite.sql.SqlSelect.validate(SqlSelect.java:247) ~[?:?] at org.apache.calcite.sql.validate.SqlValidatorImpl.validateScopedExpression(SqlValidatorImpl.java:1044) ~[?:?] at org.apache.calcite.sql.validate.SqlValidatorImpl.validate(SqlValidatorImpl.java:750) ~[?:?] at org.apache.calcite.sql2rel.SqlToRelConverter.convertQuery(SqlToRelConverter.java:585) ~[?:?] at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:251) ~[?:?] at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:215) ~[?:?] at org.apache.calcite.prepare.CalcitePrepareImpl.prepare2_(CalcitePrepareImpl.java:647) ~[?:?] at org.apache.calcite.prepare.CalcitePrepareImpl.prepare_(CalcitePrepareImpl.java:513) ~[?:?] at org.apache.calcite.prepare.CalcitePrepareImpl.prepareSql(CalcitePrepareImpl.java:483) ~[?:?] at org.apache.calcite.jdbc.CalciteConnectionImpl.parseQuery(CalciteConnectionImpl.java:249) ~[?:?] at org.apache.calcite.jdbc.CalciteMetaImpl.prepareAndExecute(CalciteMetaImpl.java:623) ~[?:?] at org.apache.calcite.avatica.AvaticaConnection.prepareAndExecuteInternal(AvaticaConnection.java:675) ~[?:?] at org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:156) ~[?:?] at org.apache.calcite.avatica.AvaticaStatement.executeQuery(AvaticaStatement.java:227) ~[?:?] at org.apache.solr.client.solrj.io.stream.JDBCStream.open(JDBCStream.java:283) ~[?:?] ... 55 more Caused by: org.apache.calcite.sql.validate.SqlValidatorException: Object 'default' not found at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?] at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:?] at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?] at java.lang.reflect.Constructor.newInstance(Constructor.java:490) ~[?:?] at org.apache.calcite.runtime.Resources$ExInstWithCause.ex(Resources.java:506) ~[?:?] at org.apache.calcite.runtime.Resources$ExInst.ex(Resources.java:600) ~[?:?] at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:917) ~[?:?] at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:902) ~[?:?] at org.apache.calcite.sql.validate.SqlValidatorImpl.newValidationError(SqlValidatorImpl.java:5271) ~[?:?] at org.apache.calcite.sql.validate.IdentifierNamespace.resolveImpl(IdentifierNamespace.java:183) ~[?:?] at org.apache.calcite.sql.validate.IdentifierNamespace.validateImpl(IdentifierNamespace.java:188) ~[?:?] at org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:89) ~[?:?] at org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1098) ~[?:?] at org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:1069) ~[?:?] at org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:3380) ~[?:?] at org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:3362) ~[?:?] at org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelect(SqlValidatorImpl.java:3644) ~[?:?] at org.apache.calcite.sql.validate.SelectNamespace.validateImpl(SelectNamespace.java:64) ~[?:?] at org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:89) ~[?:?] at org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1098) ~[?:?] at org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:1069) ~[?:?] at org.apache.calcite.sql.SqlSelect.validate(SqlSelect.java:247) ~[?:?] at org.apache.calcite.sql.validate.SqlValidatorImpl.validateScopedExpression(SqlValidatorImpl.java:1044) ~[?:?] at org.apache.calcite.sql.validate.SqlValidatorImpl.validate(SqlValidatorImpl.java:750) ~[?:?] at org.apache.calcite.sql2rel.SqlToRelConverter.convertQuery(SqlToRelConverter.java:585) ~[?:?] at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:251) ~[?:?] at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:215) ~[?:?] at org.apache.calcite.prepare.CalcitePrepareImpl.prepare2_(CalcitePrepareImpl.java:647) ~[?:?] at org.apache.calcite.prepare.CalcitePrepareImpl.prepare_(CalcitePrepareImpl.java:513) ~[?:?] at org.apache.calcite.prepare.CalcitePrepareImpl.prepareSql(CalcitePrepareImpl.java:483) ~[?:?] at org.apache.calcite.jdbc.CalciteConnectionImpl.parseQuery(CalciteConnectionImpl.java:249) ~[?:?] at org.apache.calcite.jdbc.CalciteMetaImpl.prepareAndExecute(CalciteMetaImpl.java:623) ~[?:?] at org.apache.calcite.avatica.AvaticaConnection.prepareAndExecuteInternal(AvaticaConnection.java:675) ~[?:?] at org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:156) ~[?:?] at org.apache.calcite.avatica.AvaticaStatement.executeQuery(AvaticaStatement.java:227) ~[?:?] at org.apache.solr.client.solrj.io.stream.JDBCStream.open(JDBCStream.java:283) ~[?:?] ... 55 more
Seems like `default`.TABLE should work but not sure if this is a Calcite setting or something we're not doing correctly in the Solr code. See screenshot ... need to figure out where the default schema name is even coming from??