cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Yariv Amar (JIRA)" <>
Subject [jira] [Created] (CASSANDRA-6526) CQLSSTableWriter addRow(Map<String, Object> values) does not work as documented.
Date Wed, 25 Dec 2013 13:11:50 GMT
Yariv Amar created CASSANDRA-6526:

             Summary: CQLSSTableWriter addRow(Map<String, Object> values) does not work
as documented.
                 Key: CASSANDRA-6526
             Project: Cassandra
          Issue Type: Bug
          Components: Core
            Reporter: Yariv Amar
             Fix For: 2.0.4

There are 2 bugs in the method
addRow(Map<String, Object> values)
First issue is that the map <b>must</b> contain all the column names as keys in
the map otherwise the addRow fails (with InvalidRequestException "Invalid number of arguments,
expecting %d values but got %d").

Second Issue is that the keys in the map must be in lower-case otherwise they may not be found
in the map, which will result in a NPE during decompose.
Fix the addRow method with:
public CQLSSTableWriter addRow(Map<String, Object> values)
    throws InvalidRequestException, IOException
    int size = boundNames.size();
    Map<String, ByteBuffer> rawValues = new HashMap<>(size);
    for (int i = 0; i < size; i++) {
        ColumnSpecification spec = boundNames.get(i);
        String colName =;
        rawValues.put(colName, values.get(colName) == null ? null : ((AbstractType)spec.type).decompose(values.get(colName)));
    return rawAddRow(rawValues);
When creating the new Map for the insert we need to go over all columns and apply null to
missing columns.

Fix the method documentation add this line:
     * <p>
     * Keys in the map <b>must</b> be in lower case, otherwise their value will
be null.

This message was sent by Atlassian JIRA

View raw message