Re: How to get two PreparedStatement objects for the same query string

2020-02-21 Thread Oleksandr Shulgin
On Fri, Feb 21, 2020 at 2:12 PM Deepak Sharma
 wrote:

>
> We have a use case where we need to have two separate PreparedStatement
> objects (one with RetryPolicy and the other without any retry policy) for
> the same query string. And when we try to create two separate
> PreparedStatements, we see only one PreparedStatement getting retained (the
> previous PreparedStatement gets overridden by the last PreparedStatement).
> We looked at the code implementation and see that method
> Cluster.addPrepared is looking at some kind of MD5 hash for the query and
> it overrides the old PreparedStatement with the new PreparedStatement.
>
> To overcome this behavior we are creating two separate queries (the second
> query has an extra space at the end compared to first query) to distinguish
> them so that we end up getting two prepared statements. This hack works but
> we are too comfortable with this. Is there a better way to achieve this?
>
> More details in the following link with code:
>
> https://stackoverflow.com/questions/60198114/how-to-get-two-preparedstatement-objects-for-the-same-query-string
>
> Let me know if you have any questions.
>

Have you considered using clone() (inherited from java.lang.Object) on the
object returned by session.prepare() and then setting the policies
differently on both copies?

--
Alex


How to get two PreparedStatement objects for the same query string

2020-02-21 Thread Deepak Sharma
Hi There,

We have a use case where we need to have two separate PreparedStatement
objects (one with RetryPolicy and the other without any retry policy) for
the same query string. And when we try to create two separate
PreparedStatements, we see only one PreparedStatement getting retained (the
previous PreparedStatement gets overridden by the last PreparedStatement).
We looked at the code implementation and see that method Cluster.addPrepared is
looking at some kind of MD5 hash for the query and it overrides the old
PreparedStatement with the new PreparedStatement.

To overcome this behavior we are creating two separate queries (the second
query has an extra space at the end compared to first query) to distinguish
them so that we end up getting two prepared statements. This hack works but
we are too comfortable with this. Is there a better way to achieve this?

More details in the following link with code:
https://stackoverflow.com/questions/60198114/how-to-get-two-preparedstatement-objects-for-the-same-query-string

Let me know if you have any questions.

Thanks,
Deepak