You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Yariv Amar (JIRA)" <ji...@apache.org> on 2013/12/25 14:13:50 UTC
[jira] [Updated] (CASSANDRA-6526) CQLSSTableWriter
addRow(Map values) does not work as documented.
[ https://issues.apache.org/jira/browse/CASSANDRA-6526?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Yariv Amar updated CASSANDRA-6526:
----------------------------------
Fix Version/s: (was: 2.0.4)
2.0.2
> CQLSSTableWriter addRow(Map<String, Object> values) does not work as documented.
> --------------------------------------------------------------------------------
>
> Key: CASSANDRA-6526
> URL: https://issues.apache.org/jira/browse/CASSANDRA-6526
> Project: Cassandra
> Issue Type: Bug
> Components: Core
> Reporter: Yariv Amar
> Fix For: 2.0.2
>
> Original Estimate: 24h
> Remaining Estimate: 24h
>
> There are 2 bugs in the method
> {code}
> addRow(Map<String, Object> values)
> {code}
> 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.
> h6. SUGGESTED SOLUTION:
> Fix the addRow method with:
> {code}
> 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 = spec.name.toString();
> rawValues.put(colName, values.get(colName) == null ? null : ((AbstractType)spec.type).decompose(values.get(colName)));
> }
> return rawAddRow(rawValues);
> }
> {code}
> 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:
> {code}
> * <p>
> * Keys in the map <b>must</b> be in lower case, otherwise their value will be null.
> *
> {code}
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)