You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Enrico Olivelli (JIRA)" <ji...@apache.org> on 2017/11/18 08:27:00 UTC

[jira] [Comment Edited] (CALCITE-2054) Parser error on trivial UPDATE with dynamic parameters

    [ https://issues.apache.org/jira/browse/CALCITE-2054?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16257982#comment-16257982 ] 

Enrico Olivelli edited comment on CALCITE-2054 at 11/18/17 8:26 AM:
--------------------------------------------------------------------

[~julianhyde] I found  simpler approach, that is to use setValidatedNodeType in convertUpdate to instrct the validator of inferred type of additional SqlNodes in the selectlist for the update.

This way the change is minimal: no changes to signatures of methods.
but I did not change the code according to your suggestion "You might need to change the tree-walk so that inferUnknownTypes gets called everywhere"

https://github.com/apache/calcite/pull/568/files

I appreciate your help


was (Author: eolivelli):
[~julianhyde] I found  simpler approach, that is to use setValidatedNodeType in convertUpdate to instrct the validator of inferred type of additional SqlNodes in the selectlist for the update.

This way the change is minimal: no changes to signatures of methods.
but I did not change the code according to your suggestion "You might need to change the tree-walk so that inferUnknownTypes gets called everywhere"

https://github.com/apache/calcite/pull/568

I appreciate your help

> Parser error on trivial UPDATE with dynamic parameters
> ------------------------------------------------------
>
>                 Key: CALCITE-2054
>                 URL: https://issues.apache.org/jira/browse/CALCITE-2054
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.15.0
>            Reporter: Enrico Olivelli
>            Assignee: Julian Hyde
>
> with a simple UPDATE like:
> UPDATE mytable set a=? where b=1
> I get the error below.
> The "Table" is a ModifiableTable + ScannableTable, with "a" of type INTEGER and "b" of type VARCHAR
> Any hint ?
> Thank you
> Enrico
> {code}
> org.apache.calcite.runtime.CalciteContextException: At line 1, column 30: 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:4651)
>     at org.apache.calcite.sql.validate.SqlValidatorImpl.inferUnknownTypes(SqlValidatorImpl.java:1694)
>     at org.apache.calcite.sql.validate.SqlValidatorImpl.inferUnknownTypes(SqlValidatorImpl.java:1769)
>     at org.apache.calcite.sql.validate.SqlValidatorImpl.expandSelectItem(SqlValidatorImpl.java:457)
>     at org.apache.calcite.sql.validate.SqlValidatorImpl.expandStar(SqlValidatorImpl.java:347)
>     at org.apache.calcite.sql2rel.SqlToRelConverter.convertSelectList(SqlToRelConverter.java:3709)
>     at org.apache.calcite.sql2rel.SqlToRelConverter.convertSelectImpl(SqlToRelConverter.java:663)
>     at org.apache.calcite.sql2rel.SqlToRelConverter.convertSelect(SqlToRelConverter.java:620)
>     at org.apache.calcite.sql2rel.SqlToRelConverter.convertUpdate(SqlToRelConverter.java:3398)
>     at org.apache.calcite.sql2rel.SqlToRelConverter.convertQueryRecursive(SqlToRelConverter.java:3048)
>     at org.apache.calcite.sql2rel.SqlToRelConverter.convertQuery(SqlToRelConverter.java:556)
>     at org.apache.calcite.prepare.PlannerImpl.rel(PlannerImpl.java:240)
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)