[
https://issues.apache.org/jira/browse/PHOENIX-5086?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16740221#comment-16740221
]
Karan Mehta commented on PHOENIX-5086:
--------------------------------------
I was able to reproduce this with all the branches, thanks for the integration
test that you added. This also appears to be a general Phoenix fat driver issue
and not thin driver specifically.
Checkout the file QueryMetaDataTes.java. Turns out that if getParameterMetaData
is called before the query is executed with bind values, it would work
correctly. However once the values are bind into the statement, it fails to
determine the Metadata.
I am not sure how to exactly fix this. Is this in Jdbc contract that the
getParameterMetaData should be idempodent? Is it allowed to call this method
even after bind parameters have been assigned values?
If yes, then the current behavior is correct.
If no, we need to investigate further to understand the correct fix. A simple
fix is to cache the parameterMetaData values in PhoenixPreparedStatement and
not compute it everytime. Other approaches may involved correcting the way we
parse our expression trees and fixing those. The latter approach can be
complicated and time consuming.
Let me know your thoughts.
> Prepare statement fails: Lost Bound parameter in TO_TIMESTAMP function
> ----------------------------------------------------------------------
>
> Key: PHOENIX-5086
> URL: https://issues.apache.org/jira/browse/PHOENIX-5086
> Project: Phoenix
> Issue Type: Bug
> Affects Versions: 5.0.0
> Reporter: Marwa Saleh
> Priority: Critical
> Labels: preparedstatements
>
> Please note the issue happens in case of SELECT and works fine in case of
> UPSERT.
> Prepared Statement SQL:
> {noformat}
> SELECT "DOC_KEY" FROM XYZ WHERE "DOC_MODIFY_DATE" >=
> TO_TIMESTAMP(?,'yyyy-MM-dd HH:mm:ss.SSS','UTC'); {noformat}
>
> {code:java}
> preparedStatement.setString(1, "2018-12-30 14:38:24.208"); {code}
>
> {code:java}
> Stack trace:
> Caused by: org.apache.calcite.avatica.AvaticaSqlException: Error -1 (00000) :
> Remote driver error: RuntimeException: java.sql.SQLException: ERROR 2004
> (INT05): Parameter value unbound. Parameter at index 1 is unbound ->
> SQLException: ERROR 2004 (INT05): Parameter value unbound. Parameter at index
> 1 is unbound
> at org.apache.calcite.avatica.Helper.createException(Helper.java:54)
> at org.apache.calcite.avatica.Helper.createException(Helper.java:41)
> at
> org.apache.calcite.avatica.AvaticaConnection.executeQueryInternal(AvaticaConnection.java:520)
>
> at
> org.apache.calcite.avatica.AvaticaPreparedStatement.executeQuery(AvaticaPreparedStatement.java:133)
> {code}
>
> Possible to be patched?
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)