[ 
https://issues.apache.org/jira/browse/SOLR-15799?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Timothy Potter updated SOLR-15799:
----------------------------------
    Labels: RobustSQL  (was: )

> Solr SQL should allow the schema name on table names if possible
> ----------------------------------------------------------------
>
>                 Key: SOLR-15799
>                 URL: https://issues.apache.org/jira/browse/SOLR-15799
>             Project: Solr
>          Issue Type: Improvement
>      Security Level: Public(Default Security Level. Issues are Public) 
>          Components: Parallel SQL
>            Reporter: Timothy Potter
>            Assignee: Timothy Potter
>            Priority: Major
>              Labels: RobustSQL
>
> 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:
> {code}
> 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
> {code}
> 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.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org

Reply via email to