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

Julian Hyde commented on CALCITE-2054:
--------------------------------------

Reviewing 
https://github.com/apache/calcite/pull/568/commits/f7ada9cd493d05100cce9e2791012919656ca4eb.
 I'm surprised you needed to add a parameter to expandStar. The validator 
should be able to deduce the type of every column. If it can't, the expression 
is not valid SQL. (That sounds strict but it's easier this way.) In 
SqlToRelConverter you should be able to ask the validator what the validated 
type of a particular expression was. You might need to change the tree-walk so 
that inferUnknownTypes gets called everywhere (that's probably why this fails 
for UPDATE but works for SELECT).

> 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)

Reply via email to