Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
1.30.0
-
None
Description
code:
String sqlUpdate="update mysql2.user_info_2 a set name = (select account_name from mysql2.account_info b where b.account_id=a.id )";
RelToSqlConverter relToSqlConverter = new RelToSqlConverter(AnsiSqlDialect.DEFAULT);
SqlImplementor.Result visit;
SqlNode sqlNodeTarget;
String targetSql;
sqlNode = planner.parse(sqlUpdate);
planner.validate(sqlNode);
relRoot = planner.rel(sqlNode);
visit = relToSqlConverter.visitRoot(relRoot.rel);
sqlNodeTarget = visit.asStatement();
targetSql=sqlNodeTarget.toSqlString(MysqlSqlDialect.DEFAULT).getSql();
error: (in public Result visit(TableModify modify) )
Exception in thread "main" java.lang.AssertionError: field ordinal 0 out of range {}
at org.apache.calcite.rel.rel2sql.SqlImplementor$AliasContext.field(SqlImplementor.java:1531)
at org.apache.calcite.rel.rel2sql.SqlImplementor$Context.toSql(SqlImplementor.java:630)
at org.apache.calcite.rel.rel2sql.RelToSqlConverter.lambda$12(RelToSqlConverter.java:1066)
at org.apache.calcite.util.Util$TransformingList.get(Util.java:2783)
at java.util.AbstractList$Itr.next(AbstractList.java:358)
at java.util.AbstractCollection.toArray(AbstractCollection.java:141)
at java.util.ArrayList.<init>(ArrayList.java:178)
at org.apache.calcite.sql.SqlNodeList.<init>(SqlNodeList.java:98)
at org.apache.calcite.rel.rel2sql.RelToSqlConverter.exprList(RelToSqlConverter.java:1065)
at org.apache.calcite.rel.rel2sql.RelToSqlConverter.visit(RelToSqlConverter.java:1038)
Attachments
Issue Links
- is related to
-
CALCITE-3658 TableModify of Update contains correlated variable by mistake.
- Closed
- links to