[ https://issues.apache.org/jira/browse/CALCITE-2748?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Alexander Shilov updated CALCITE-2748: -------------------------------------- Description: I tried to use UPDATE DML statements, but got exception: {code:java} java.lang.AssertionError: UPDATE at org.apache.calcite.adapter.enumerable.EnumerableTableModify.implement(EnumerableTableModify.java:137) at org.apache.calcite.adapter.enumerable.EnumerableRelImplementor.implementRoot(EnumerableRelImplementor.java:100) at org.apache.calcite.adapter.enumerable.EnumerableInterpretable.toBindable(EnumerableInterpretable.java:92) at org.apache.calcite.prepare.CalcitePrepareImpl$CalcitePreparingStmt.implement(CalcitePrepareImpl.java:1238) at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:332) at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:231) at org.apache.calcite.prepare.CalcitePrepareImpl.prepare2_(CalcitePrepareImpl.java:772) at org.apache.calcite.prepare.CalcitePrepareImpl.prepare_(CalcitePrepareImpl.java:636) at org.apache.calcite.prepare.CalcitePrepareImpl.prepareSql(CalcitePrepareImpl.java:606) at org.apache.calcite.jdbc.CalciteConnectionImpl.parseQuery(CalciteConnectionImpl.java:229) at org.apache.calcite.jdbc.CalciteConnectionImpl.prepareStatement_(CalciteConnectionImpl.java:211) at org.apache.calcite.jdbc.CalciteConnectionImpl.prepareStatement(CalciteConnectionImpl.java:200) at org.apache.calcite.jdbc.CalciteConnectionImpl.prepareStatement(CalciteConnectionImpl.java:91) at org.apache.calcite.avatica.AvaticaConnection.prepareStatement(AvaticaConnection.java:175) ...{code} The reason is that EnumerableTableModify.implement doesn't support UPDATE. I've tried to implement it, but it's difficult with [Collection API|https://github.com/apache/calcite/blob/02752fe78f817ed317b8873d2f4c7b79bfe8b9b5/core/src/main/java/org/apache/calcite/schema/ModifiableTable.java#L40]. There is no method in Collection, that can handle it, and if you use remove/add methods to simulate update, then updated rows count will be equals to zero. was: I tried to use UPDATE DML statements, but got exception: {code:java} java.lang.AssertionError: UPDATE at org.apache.calcite.adapter.enumerable.EnumerableTableModify.implement(EnumerableTableModify.java:137) at org.apache.calcite.adapter.enumerable.EnumerableRelImplementor.implementRoot(EnumerableRelImplementor.java:100) at org.apache.calcite.adapter.enumerable.EnumerableInterpretable.toBindable(EnumerableInterpretable.java:92) at org.apache.calcite.prepare.CalcitePrepareImpl$CalcitePreparingStmt.implement(CalcitePrepareImpl.java:1238) at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:332) at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:231) at org.apache.calcite.prepare.CalcitePrepareImpl.prepare2_(CalcitePrepareImpl.java:772) at org.apache.calcite.prepare.CalcitePrepareImpl.prepare_(CalcitePrepareImpl.java:636) at org.apache.calcite.prepare.CalcitePrepareImpl.prepareSql(CalcitePrepareImpl.java:606) at org.apache.calcite.jdbc.CalciteConnectionImpl.parseQuery(CalciteConnectionImpl.java:229) at org.apache.calcite.jdbc.CalciteConnectionImpl.prepareStatement_(CalciteConnectionImpl.java:211) at org.apache.calcite.jdbc.CalciteConnectionImpl.prepareStatement(CalciteConnectionImpl.java:200) at org.apache.calcite.jdbc.CalciteConnectionImpl.prepareStatement(CalciteConnectionImpl.java:91) at org.apache.calcite.avatica.AvaticaConnection.prepareStatement(AvaticaConnection.java:175) ...{code} The reason is that EnumerableTableModify.implement doesn't support UPDATE. I've tried to implement it, but it's difficult with ([Collection API|[https://github.com/apache/calcite/blob/02752fe78f817ed317b8873d2f4c7b79bfe8b9b5/core/src/main/java/org/apache/calcite/schema/ModifiableTable.java#L40].] There is no method in Collection, that can handle it, and if you use remove/add methods to simulate update, then updated rows count will be equals to zero. > UPDATE doesn't work > ------------------- > > Key: CALCITE-2748 > URL: https://issues.apache.org/jira/browse/CALCITE-2748 > Project: Calcite > Issue Type: Bug > Components: avatica, core, jdbc-adapter > Affects Versions: 1.17.0 > Reporter: Alexander Shilov > Priority: Major > > I tried to use UPDATE DML statements, but got exception: > {code:java} > java.lang.AssertionError: UPDATE > at > org.apache.calcite.adapter.enumerable.EnumerableTableModify.implement(EnumerableTableModify.java:137) > at > org.apache.calcite.adapter.enumerable.EnumerableRelImplementor.implementRoot(EnumerableRelImplementor.java:100) > at > org.apache.calcite.adapter.enumerable.EnumerableInterpretable.toBindable(EnumerableInterpretable.java:92) > at > org.apache.calcite.prepare.CalcitePrepareImpl$CalcitePreparingStmt.implement(CalcitePrepareImpl.java:1238) > at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:332) > at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:231) > at > org.apache.calcite.prepare.CalcitePrepareImpl.prepare2_(CalcitePrepareImpl.java:772) > at > org.apache.calcite.prepare.CalcitePrepareImpl.prepare_(CalcitePrepareImpl.java:636) > at > org.apache.calcite.prepare.CalcitePrepareImpl.prepareSql(CalcitePrepareImpl.java:606) > at > org.apache.calcite.jdbc.CalciteConnectionImpl.parseQuery(CalciteConnectionImpl.java:229) > at > org.apache.calcite.jdbc.CalciteConnectionImpl.prepareStatement_(CalciteConnectionImpl.java:211) > at > org.apache.calcite.jdbc.CalciteConnectionImpl.prepareStatement(CalciteConnectionImpl.java:200) > at > org.apache.calcite.jdbc.CalciteConnectionImpl.prepareStatement(CalciteConnectionImpl.java:91) > at > org.apache.calcite.avatica.AvaticaConnection.prepareStatement(AvaticaConnection.java:175) > ...{code} > The reason is that EnumerableTableModify.implement doesn't support UPDATE. > I've tried to implement it, but it's difficult with [Collection > API|https://github.com/apache/calcite/blob/02752fe78f817ed317b8873d2f4c7b79bfe8b9b5/core/src/main/java/org/apache/calcite/schema/ModifiableTable.java#L40]. > There is no method in Collection, that can handle it, and if you use > remove/add methods to simulate update, then updated rows count will be equals > to zero. -- This message was sent by Atlassian JIRA (v7.6.3#76005)