[
https://issues.apache.org/jira/browse/CASSANDRA-2475?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13166318#comment-13166318
]
Eric Evans commented on CASSANDRA-2475:
---------------------------------------
{quote}
But then I hated the idea of having to go to HEX to get in "blob"/bytes data.
This approach let me do both. It also allowed me to serialize Java Objects
nicely as bytes. Can you think of a clever way to handle byte streams
(AbstractBytes)? But I can live with just String. I agree it is the most
flexible.
{quote}
Believe it or not, between ASCII strings and hex encoded blobs, the latter is
cheaper to decode node-side.
{quote}
It allows you to free the cached {{CQLStatement}} on the server side when a
client side PreparedStatement is closed. If not, you will accumulate dead
entries until the connection is closed. That could be a lot of dead wood.
Seemed the tidy thing to do.
{quote}
So, my initial thought (and what led me to ask this), was that in practice, the
number of prepared statements per active connection is probably quite low. Low
enough that there would never be any reason to evict. You probably wouldn't
want to bet the farm on that though, so I had thought it would probably make
some sense to have a threshold that would cause statements to be evicted when
new ones were added (on an LRU-basis).
This seems to have the advantage that would make the interface simpler. It
would also be less error prone; Relying on the client to free resources seems a
bit brittle.
What do you think?
bq. The count is to know how many markers were actually encountered. This
number serves as the upper bound for Setxxx parameter indexes. Better than
regexing for it... it is exactly what the server side encountered.
OK
{quote}
The statement type is again a validation of what the server side saw. Remember
this happens in 2 steps prepare then execute, and the execute step does not
have the CQL text.
But I used it while debugging and I don't seem to use it any more so I guess it
could go, but it I thought I might find a use for is so I never did make it go
away.
{quote}
It's probably best to avoid without a raison d'etre. Things like this are
easier to add later, than they are to remove once they've made it into release.
bq. Another "seems useful" so I kept it around. If something goes wrong and you
need to go poking around its handy to have attached to the statement (I think).
I worry that it might be wasteful. Especially if we do need to worry about the
number of statements we keep for each connection.
Query logging can be used to capture the verbatim string for troubleshooting
purposes, and all of the data should still be there in the form of the graph of
objects. Is there some known case that doesn't cover?
bq. I think there was already an instance there at DEBUG and I just added some
more. I'll gladly move to TRACE.
The way it was originally, the statement type (SELECT, UPDATE, etc) was logged
at level DEBUG, and the entire query was logged at TRACE. If there isn't a
reason to change, we should probably keep it that way.
bq. The short answer is because the question marks are often referred to in
the spec as "bound variable markers". So I just propagated it. But NBD to
change to "bind" theme.
OK. Yeah, even say {{indexBindMarkers}} would be good. I was just thinking
that "markers" was a bit generic there.
> Prepared statements
> -------------------
>
> Key: CASSANDRA-2475
> URL: https://issues.apache.org/jira/browse/CASSANDRA-2475
> Project: Cassandra
> Issue Type: New Feature
> Components: API, Core
> Affects Versions: 1.0.5
> Reporter: Eric Evans
> Assignee: Rick Shaw
> Priority: Minor
> Labels: cql
> Fix For: 1.1
>
> Attachments: 2475-v1.patch, 2475-v2.patch,
> v1-0001-CASSANDRA-2475-prepared-statement-patch.txt,
> v1-0002-regenerated-thrift-java.txt
>
>
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira