I tried to solve the problem
this is my proposal
https://github.com/apache/calcite/pull/568

I think this partly resolves CALCITE-1708or at least one test case marked
with that issue now is working. But I did not drop the @Ignore annotation

2017-11-17 8:59 GMT+01:00 Enrico Olivelli <eolive...@gmail.com>:

> OK
> I would like to pick up this issue and provide a fix.
>
> This is the test, working
> @Test public void testUpdateBind() {
>     final String sql = "update emp"
>         + " set sal = sal + ? where slacker = false";
>     sql(sql).ok();
>   }
>
> This is a new, simpler test, which is not working, same error as expected
>   @Test public void testUpdateBind2() {
>     final String sql = "update emp"
>         + " set sal = ? where slacker = false";
>     sql(sql).ok();
>   }
>
> Below this test there is a test marked as @Ignore due to CALCITE-1708,
> which is the same problem, but the test case was more complex.
>
> Can you give me some hint ?
> I am still a newbie in Calcite.
> How is it supposed to be bound the type for a dynamic parameter?
> In this case I think we could derive the type from the column which is
> going to be updated/filtered.
> Another approach would be to drop the assertion in this special case. I
> don't think it is bad to have a unknown type in this case, but maybe I am
> missing something.
>
>
> 2017-11-15 14:06 GMT+01:00 Enrico Olivelli <eolive...@gmail.com>:
>
>> here it is
>> https://issues.apache.org/jira/browse/CALCITE-2054
>>
>> 2017-11-15 14:02 GMT+01:00 Enrico Olivelli <eolive...@gmail.com>:
>>
>>> I will do,
>>> It crashes even if I switch to ProjectableFilterableTable I fall into
>>> this,
>>>
>>> For updates without parameters and using ProjectableFilterableTable I
>>> fall into this
>>> https://issues.apache.org/jira/browse/CALCITE-2039
>>> I have attached a reproducer.
>>>
>>> The same is for this email, I will create a JIRA now
>>>
>>> Can you please take into account of addressing the two for 1.15 ? They
>>> are realy blocker.
>>> At least CALCITE-2039
>>> In fact I went away from ProjectableFilterableTable because of
>>> CALCITE-2039
>>>
>>> I will do my best to support triage and testing,
>>> Thanks
>>> I hope to be able to leverage Calcite power soon
>>>
>>> Enrico
>>>
>>> 2017-11-14 23:55 GMT+01:00 Julian Hyde <jh...@apache.org>:
>>>
>>>> I see we have SqlValidatorTest.testUpdateBind(), which seems very
>>>> similar to your query, and it succeeds validation. But I don’t recall us
>>>> testing dynamic parameters in the SET clause end-to-end, and your query is
>>>> failing in sql-to-rel translation, just after validation. Can you log a
>>>> JIRA case please?
>>>>
>>>> Julian
>>>>
>>>>
>>>> > On Nov 14, 2017, at 12:45 PM, Enrico Olivelli <eolive...@gmail.com>
>>>> wrote:
>>>> >
>>>> > Hi,
>>>> > with a simple UPDATE like:
>>>> > UPDATE mytable set a=? where b=?
>>>> >
>>>> > 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
>>>> >
>>>> >
>>>> > 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(Native
>>>> ConstructorAccessorImpl.java:62)
>>>> >    at
>>>> > sun.reflect.DelegatingConstructorAccessorImpl.newInstance(De
>>>> legatingConstructorAccessorImpl.java:45)
>>>> >    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
>>>> >    at
>>>> > org.apache.calcite.runtime.Resources$ExInstWithCause.ex(Reso
>>>> urces.java:463)
>>>> >    at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.j
>>>> ava:803)
>>>> >    at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.j
>>>> ava:788)
>>>> >    at
>>>> > org.apache.calcite.sql.validate.SqlValidatorImpl.newValidati
>>>> onError(SqlValidatorImpl.java:4651)
>>>> >    at
>>>> > org.apache.calcite.sql.validate.SqlValidatorImpl.inferUnknow
>>>> nTypes(SqlValidatorImpl.java:1694)
>>>> >    at
>>>> > org.apache.calcite.sql.validate.SqlValidatorImpl.inferUnknow
>>>> nTypes(SqlValidatorImpl.java:1769)
>>>> >    at
>>>> > org.apache.calcite.sql.validate.SqlValidatorImpl.expandSelec
>>>> tItem(SqlValidatorImpl.java:457)
>>>> >    at
>>>> > org.apache.calcite.sql.validate.SqlValidatorImpl.expandStar(
>>>> SqlValidatorImpl.java:347)
>>>> >    at
>>>> > org.apache.calcite.sql2rel.SqlToRelConverter.convertSelectLi
>>>> st(SqlToRelConverter.java:3709)
>>>> >    at
>>>> > org.apache.calcite.sql2rel.SqlToRelConverter.convertSelectIm
>>>> pl(SqlToRelConverter.java:663)
>>>> >    at
>>>> > org.apache.calcite.sql2rel.SqlToRelConverter.convertSelect(S
>>>> qlToRelConverter.java:620)
>>>> >    at
>>>> > org.apache.calcite.sql2rel.SqlToRelConverter.convertUpdate(S
>>>> qlToRelConverter.java:3398)
>>>> >    at
>>>> > org.apache.calcite.sql2rel.SqlToRelConverter.convertQueryRec
>>>> ursive(SqlToRelConverter.java:3048)
>>>> >    at
>>>> > org.apache.calcite.sql2rel.SqlToRelConverter.convertQuery(Sq
>>>> lToRelConverter.java:556)
>>>> >    at org.apache.calcite.prepare.PlannerImpl.rel(PlannerImpl.java:
>>>> 240)
>>>>
>>>>
>>>
>>
>

Reply via email to