Details
-
Wish
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
Description
This exception can be reproduced as below:
SqlParserTest:
@Test void test() throws Exception { final String sql = "insert into emps select * from emps"; final SqlNode sqlNode = getSqlParser(sql).parseStmt(); final SqlNode sqlNodeVisited = sqlNode.accept(new SqlShuttle() { @Override public SqlNode visit(SqlIdentifier identifier) { return new SqlIdentifier(identifier.names, identifier.getParserPosition()); } }); System.out.println(sqlNodeVisited.toString()); }
Method threw 'java.lang.UnsupportedOperationException' exception. Cannot evaluate org.apache.calcite.sql.SqlBasicCall.toString()
SqlInsert is a SqlSpecialOperator, when `toString` method is called, this problem is shown.We can see that `SqlSyntax#SPECIAL#unparse()` hasn't been implemented yet.
exception :
java.lang.UnsupportedOperationException: class org.apache.calcite.sql.SqlSyntax$6: SPECIAL
at org.apache.calcite.util.Util.needToImplement(Util.java:967)
at org.apache.calcite.sql.SqlSyntax$6.unparse(SqlSyntax.java:116)
at org.apache.calcite.sql.SqlOperator.unparse(SqlOperator.java:333)
at org.apache.calcite.sql.SqlDialect.unparseCall(SqlDialect.java:462)
at org.apache.calcite.sql.SqlCall.unparse(SqlCall.java:104)
at org.apache.calcite.sql.SqlNode.toSqlString(SqlNode.java:151)
at org.apache.calcite.sql.SqlNode.toString(SqlNode.java:126)