Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
1.26.0
Description
When use prepareStatement parse and run RelNode error, the exception's error message is confusing.
In particular, if you prepare the statement using RelRunner.prepare(RelNode) and prepare fails, the exception should report the RelNode plan. Currently it tries to report the SQL, and for this kind of query, there is no SQL.
This code capture the exception,But Only the output of SQL exception is processed.So need to add the procedure to handle extra exception.
// try { final Meta.Signature signature = parseQuery(query, createPrepareContext(), -1); final CalcitePreparedStatement calcitePreparedStatement = (CalcitePreparedStatement) factory.newPreparedStatement(this, null, signature, resultSetType, resultSetConcurrency, resultSetHoldability); server.getStatement(calcitePreparedStatement.handle).setSignature(signature); return calcitePreparedStatement; } catch (Exception e) { throw Helper.INSTANCE.createException( "Error while preparing statement [" + query.sql + "]", e); }
When we run RelNode or queryable show wrong,this exception can be:
"Error while preparing statement [null]"
can't log the real exception
Attachments
Issue Links
- is related to
-
CALCITE-4591 RelRunner should throw SQLException if prepare fails
- Closed
- links to