You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@calcite.apache.org by Enrico Olivelli <eo...@gmail.com> on 2017/11/18 10:47:29 UTC

Another error on using unbounded dynamic parameters

I found another query sent to my DBMS which causes troubles to Calcite

SELECT ? as foo, k1, n1 FROM mytable

The result is the usual: "Illegal use of dynamic parameter"

This time it is impossible to infer the type of the parameter.
I wonder if it would be possible to implement a configuration flag to make
the validator more "lenient" and allow unknowntype for dyn parameters

I think I am near the end of my transition to Calcite, this is the major
obstacle, I am seeing this fo updates, some kind of inserts and for this
kind of queries


Thoughts ?

Thank you very much, I like Calcite and I hope to be in production soon

Enrico


stacktrace:

org.apache.calcite.runtime.CalciteContextException: At line 1, column 8:
Illegal use of dynamic parameter
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at
org.apache.calcite.runtime.Resources$ExInstWithCause.ex(Resources.java:463)
    at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:803)
    at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:788)
    at
org.apache.calcite.sql.validate.SqlValidatorImpl.newValidationError(SqlValidatorImpl.java:4655)
    at
org.apache.calcite.sql.validate.SqlValidatorImpl.inferUnknownTypes(SqlValidatorImpl.java:1698)
    at
org.apache.calcite.sql.validate.SqlValidatorImpl.inferUnknownTypes(SqlValidatorImpl.java:1773)
    at
org.apache.calcite.sql.validate.SqlValidatorImpl.expandSelectItem(SqlValidatorImpl.java:461)
    at
org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelectList(SqlValidatorImpl.java:3958)
    at
org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelect(SqlValidatorImpl.java:3219)
    at
org.apache.calcite.sql.validate.SelectNamespace.validateImpl(SelectNamespace.java:60)
    at
org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:84)
    at
org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:949)
    at
org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:930)
    at org.apache.calcite.sql.SqlSelect.validate(SqlSelect.java:226)
    at
org.apache.calcite.sql.validate.SqlValidatorImpl.validateScopedExpression(SqlValidatorImpl.java:905)
    at
org.apache.calcite.sql.validate.SqlValidatorImpl.validate(SqlValidatorImpl.java:615)
    at org.apa

Re: Another error on using unbounded dynamic parameters

Posted by Julian Hyde <jh...@apache.org>.
See my comment https://issues.apache.org/jira/browse/CALCITE-2054?focusedCommentId=16259687&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-16259687 <https://issues.apache.org/jira/browse/CALCITE-2054?focusedCommentId=16259687&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-16259687>.

> On Nov 18, 2017, at 2:47 AM, Enrico Olivelli <eo...@gmail.com> wrote:
> 
> I found another query sent to my DBMS which causes troubles to Calcite
> 
> SELECT ? as foo, k1, n1 FROM mytable
> 
> The result is the usual: "Illegal use of dynamic parameter"
> 
> This time it is impossible to infer the type of the parameter.
> I wonder if it would be possible to implement a configuration flag to make
> the validator more "lenient" and allow unknowntype for dyn parameters
> 
> I think I am near the end of my transition to Calcite, this is the major
> obstacle, I am seeing this fo updates, some kind of inserts and for this
> kind of queries
> 
> 
> Thoughts ?
> 
> Thank you very much, I like Calcite and I hope to be in production soon
> 
> Enrico
> 
> 
> stacktrace:
> 
> org.apache.calcite.runtime.CalciteContextException: At line 1, column 8:
> Illegal use of dynamic parameter
>    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
>    at
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
>    at
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
>    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
>    at
> org.apache.calcite.runtime.Resources$ExInstWithCause.ex(Resources.java:463)
>    at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:803)
>    at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:788)
>    at
> org.apache.calcite.sql.validate.SqlValidatorImpl.newValidationError(SqlValidatorImpl.java:4655)
>    at
> org.apache.calcite.sql.validate.SqlValidatorImpl.inferUnknownTypes(SqlValidatorImpl.java:1698)
>    at
> org.apache.calcite.sql.validate.SqlValidatorImpl.inferUnknownTypes(SqlValidatorImpl.java:1773)
>    at
> org.apache.calcite.sql.validate.SqlValidatorImpl.expandSelectItem(SqlValidatorImpl.java:461)
>    at
> org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelectList(SqlValidatorImpl.java:3958)
>    at
> org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelect(SqlValidatorImpl.java:3219)
>    at
> org.apache.calcite.sql.validate.SelectNamespace.validateImpl(SelectNamespace.java:60)
>    at
> org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:84)
>    at
> org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:949)
>    at
> org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:930)
>    at org.apache.calcite.sql.SqlSelect.validate(SqlSelect.java:226)
>    at
> org.apache.calcite.sql.validate.SqlValidatorImpl.validateScopedExpression(SqlValidatorImpl.java:905)
>    at
> org.apache.calcite.sql.validate.SqlValidatorImpl.validate(SqlValidatorImpl.java:615)
>    at org.apa