[ https://issues.apache.org/jira/browse/CASSANDRA-5649?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jonathan Ellis updated CASSANDRA-5649: -------------------------------------- Fix Version/s: (was: 2.0) 2.1 This doesn't look negligible at all to me. Here's the metadata encode: {code} public ChannelBuffer encode(Metadata m) { boolean globalTablesSpec = m.flags.contains(Flag.GLOBAL_TABLES_SPEC); int stringCount = globalTablesSpec ? 2 + m.names.size() : 3* m.names.size(); CBUtil.BufferBuilder builder = new CBUtil.BufferBuilder(1 + m.names.size(), stringCount, 0); ChannelBuffer header = ChannelBuffers.buffer(8); header.writeInt(Flag.serialize(m.flags)); header.writeInt(m.names.size()); builder.add(header); if (globalTablesSpec) { builder.addString(m.names.get(0).ksName); builder.addString(m.names.get(0).cfName); } for (ColumnSpecification name : m.names) { if (!globalTablesSpec) { builder.addString(name.ksName); builder.addString(name.cfName); } builder.addString(name.toString()); builder.add(DataType.codec.encodeOne(DataType.fromType(name.type))); } return builder.build(); } {code} Here's the (per-row) ResultSet encode: {code} for (ByteBuffer bb : row) builder.addValue(bb); {code} Hmm. :) Seriously, it's trivial to see how you will more often than not have more metadata than row data for typical single-row resultsets. I can put together a wrapper to prove it but it's kind of a waste of time. You're right that it's not reasonable to try for 2.0, though. Moved to 2.1. > Move resultset type information into prepare, not execute > --------------------------------------------------------- > > Key: CASSANDRA-5649 > URL: https://issues.apache.org/jira/browse/CASSANDRA-5649 > Project: Cassandra > Issue Type: Improvement > Reporter: Jonathan Ellis > Assignee: Sylvain Lebresne > Fix For: 2.1 > > > Native protocol 1.0 sends type information on execute. This is a minor > inefficiency for large resultsets; unfortunately, single-row resultsets are > common. > This does represent a performance regression from Thrift; Thrift does not > send type information at all. (Bad for driver complexity, but good for > performance.) -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira