mirror of https://github.com/apache/cassandra
fix cassandra stress errors on reads with native protocol
patch by belliottsmith; reviewed by jasobrown for CASSANDRA-7033
This commit is contained in:
parent
5045d3ea86
commit
a16adba9b8
|
|
@ -48,6 +48,7 @@
|
|||
* Clean up IndexInfo on keyspace/table drops (CASSANDRA-6924)
|
||||
* Only snapshot relative SSTables when sequential repair (CASSANDRA-7024)
|
||||
* Require nodetool rebuild_index to specify index names (CASSANDRA-7038)
|
||||
* fix cassandra stress errors on reads with native protocol (CASANDRA-7033)
|
||||
Merged from 2.0:
|
||||
* Use LOCAL_QUORUM for data reads at LOCAL_SERIAL (CASSANDRA-6939)
|
||||
* Log a warning for large batches (CASSANDRA-6487)
|
||||
|
|
|
|||
|
|
@ -47,13 +47,8 @@ public class CqlIndexedRangeSlicer extends CqlOperation<byte[][]>
|
|||
@Override
|
||||
protected String buildQuery()
|
||||
{
|
||||
StringBuilder query = new StringBuilder("SELECT ");
|
||||
|
||||
if (state.isCql2())
|
||||
query.append(state.settings.columns.maxColumnsPerKey).append(" ''..''");
|
||||
else
|
||||
query.append("*");
|
||||
|
||||
StringBuilder query = new StringBuilder("SELECT");
|
||||
query.append(wrapInQuotesIfRequired("key"));
|
||||
query.append(" FROM ");
|
||||
query.append(wrapInQuotesIfRequired(state.type.table));
|
||||
|
||||
|
|
|
|||
|
|
@ -145,7 +145,7 @@ public abstract class CqlOperation<V> extends Operation
|
|||
@Override
|
||||
public boolean validate(Integer result)
|
||||
{
|
||||
return true;
|
||||
return result > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -195,12 +195,8 @@ public abstract class CqlOperation<V> extends Operation
|
|||
if (result.length != expect.size())
|
||||
return false;
|
||||
for (int i = 0 ; i < result.length ; i++)
|
||||
{
|
||||
List<ByteBuffer> resultRow = Arrays.asList(result[i]);
|
||||
resultRow = resultRow.subList(1, resultRow.size());
|
||||
if (expect.get(i) != null && !expect.get(i).equals(resultRow))
|
||||
if (expect.get(i) != null && !expect.get(i).equals(Arrays.asList(result[i])))
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
@ -510,9 +506,9 @@ public abstract class CqlOperation<V> extends Operation
|
|||
for (int i = 0 ; i < r.length ; i++)
|
||||
{
|
||||
Row row = rows.get(i);
|
||||
r[i] = new ByteBuffer[row.getColumnDefinitions().size() - 1];
|
||||
for (int j = 1 ; j < row.getColumnDefinitions().size() ; j++)
|
||||
r[i][j - 1] = row.getBytes(j);
|
||||
r[i] = new ByteBuffer[row.getColumnDefinitions().size()];
|
||||
for (int j = 0 ; j < row.getColumnDefinitions().size() ; j++)
|
||||
r[i][j] = row.getBytes(j);
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,11 +22,14 @@ package org.apache.cassandra.stress.operations;
|
|||
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.charset.CharacterCodingException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.cassandra.utils.ByteBufferUtil;
|
||||
|
||||
public class CqlReader extends CqlOperation<ByteBuffer[][]>
|
||||
{
|
||||
|
||||
|
|
@ -49,11 +52,18 @@ public class CqlReader extends CqlOperation<ByteBuffer[][]>
|
|||
}
|
||||
else
|
||||
{
|
||||
for (int i = 0; i < state.settings.columns.names.size() ; i++)
|
||||
try
|
||||
{
|
||||
if (i > 0)
|
||||
query.append(",");
|
||||
query.append('?');
|
||||
for (int i = 0; i < state.settings.columns.names.size() ; i++)
|
||||
{
|
||||
if (i > 0)
|
||||
query.append(",");
|
||||
query.append(wrapInQuotesIfRequired(ByteBufferUtil.string(state.settings.columns.names.get(i))));
|
||||
}
|
||||
}
|
||||
catch (CharacterCodingException e)
|
||||
{
|
||||
throw new IllegalStateException(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -68,14 +78,6 @@ public class CqlReader extends CqlOperation<ByteBuffer[][]>
|
|||
@Override
|
||||
protected List<Object> getQueryParameters(byte[] key)
|
||||
{
|
||||
if (state.settings.columns.names != null)
|
||||
{
|
||||
final List<Object> queryParams = new ArrayList<>();
|
||||
for (ByteBuffer name : state.settings.columns.names)
|
||||
queryParams.add(name);
|
||||
queryParams.add(ByteBuffer.wrap(key));
|
||||
return queryParams;
|
||||
}
|
||||
return Collections.<Object>singletonList(ByteBuffer.wrap(key));
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue