KnothHe commented on issue #21584:
URL: 
https://github.com/apache/shardingsphere/issues/21584#issuecomment-1279800877

   The reason i can find is sql parse engine's parse result SqlStatement. 
`org.apache.shardingsphere.driver.jdbc.core.statement.ShardingSpherePreparedStatement#sqlStatement`
   
   `sqlStatement = sqlParserEngine.parse(sql, true);`
   
   More precisely is `SQLStatement`'s `InsertStatement.values`'s 
`InsertValuesSegment.values`'s `FunctionSegment`'s parameters.
   
   <img width="1576" alt="image" 
src="https://user-images.githubusercontent.com/25814839/196001803-cbfa04e7-8903-4e05-8838-613ab0946d90.png";>
   
   Some functions's parse result has no parameters, thus no second parameter 
pass to JDBC parameter execute.
   In my test, maybe all `customKeyword` has problems.
   I have test `SUBSTRING`, `SUBSTR`, `TRIM`, all of these has same exception.
   
   And I randomly test function `FORMAT`, that's work.
   <img width="1581" alt="image" 
src="https://user-images.githubusercontent.com/25814839/196001918-9019b19f-79b0-4db7-b3bb-e1dc82791f30.png";>
   
   Currently I have no knowledge of ANTLR and can't understand how SqlParser 
works.
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to