Hi,
First, a big thanks to the Cassandra team for delivering binary protocol. It's really so much better than Thrift in term of client interface and result handling. As I'm rewriting my Cassandra client for .Net, one question popped regarding PREPARE statement: the scope of the PREPARE statement seems not specified in the binary protocol specification. Could you confirm that query id is server scoped ? (meaning can I disconnect and reconnect later using the same request Id). Some remarks regarding QUERY/EXECUTE: . Having TTL and TIMESTAMP after [consistency] in the QUERY frame would be helpful for client libraries - otherwise CQL parsing is required to modify/append this info. I don't see why this could not be done like [consistency] - it's purely technical and could get out of the way of the CQL body query. . RESULT supports global_table_spec but QUERY/RESULT do not. This would be nice to have such support there to help "relocating" a query to another keyspace easily without having to deal with CQL parsing. Obviously that's why USE exists, but this implies a keyspace tracking per connection and this can easily defeats connections pool (and if not, this involves a USE statement to force a keyspace change). Moreover, supporting stream id in the frame header (for async query) would be harder if not tricky to implement (keyspace tracking to detect USE statement). Thanks, - Pierre Chalamet