You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Alex Petrov (JIRA)" <ji...@apache.org> on 2016/07/03 19:01:10 UTC
[jira] [Created] (CASSANDRA-12128) Unexpected amount of returned
results after querying SASI index
Alex Petrov created CASSANDRA-12128:
---------------------------------------
Summary: Unexpected amount of returned results after querying SASI index
Key: CASSANDRA-12128
URL: https://issues.apache.org/jira/browse/CASSANDRA-12128
Project: Cassandra
Issue Type: Bug
Reporter: Alex Petrov
I'm working on [CASSANDRA-11990] and one of the unit tests started failing after the changes I've made. However, it seems that the results returned on {{trunk}} are incorrect.
One can reproduce it with the following code:
{code}
@Test
public void testCrossSSTableQueries2() throws Exception
{
Map<String, Pair<String, Integer>> part1 = new HashMap<String, Pair<String, Integer>>()
{{
put("key0", Pair.create("Maxie", 43));
put("key1", Pair.create("Chelsie", 33));
put("key2", Pair.create("Josephine", 43));
put("key3", Pair.create("Shanna", 27));
put("key4", Pair.create("Amiya", 36));
}};
loadData(part1, true); // first sstable
Map<String, Pair<String, Integer>> part2 = new HashMap<String, Pair<String, Integer>>()
{{
put("key5", Pair.create("Americo", 20));
put("key6", Pair.create("Fiona", 39));
put("key7", Pair.create("Francis", 41));
put("key8", Pair.create("Charley", 21));
put("key9", Pair.create("Amely", 40));
}};
loadData(part2, true);
Map<String, Pair<String, Integer>> part3 = new HashMap<String, Pair<String, Integer>>()
{{
put("key10", Pair.create("Eddie", 42));
put("key11", Pair.create("Oswaldo", 35));
put("key12", Pair.create("Susana", 35));
put("key13", Pair.create("Alivia", 42));
put("key14", Pair.create("Demario", 28));
}};
ColumnFamilyStore store = loadData(part3, true);
final ByteBuffer firstName = UTF8Type.instance.decompose("first_name");
Set<String> rows;
rows = getIndexed(store, 10,
buildExpression(firstName, Operator.LIKE_SUFFIX, UTF8Type.instance.decompose("a")));
Map<String, Pair<String, Integer>> concat = new HashMap<>();
concat.putAll(part1);
concat.putAll(part2);
concat.putAll(part3);
Set<String> keys = new HashSet<>();
concat.forEach((k, v) -> {
int idx = v.left.indexOf('a');
if (idx > 0)
{
keys.add(k);
}
});
System.out.println("keys = " + keys);
String[] arr = new String[keys.size()];
keys.toArray(arr);
Assert.assertTrue(rows.toString(), Arrays.equals(arr, rows.toArray(new String[rows.size()])));
}
{code}
Expected results are (emphasis mine)
{code}
[key14, key13, key0, key12, key6, key3, key4, key7, key8, key11]
"key14" "Dem_a_rio"
"key13" "Alivi_a_"
"key0" "M_a_xie"
"key12" "Sus_a_na"
"key6" "Fion_a_"
"key3" "Sh_a_nna"
"key4" "Amiy_a_"
"key7" "Fr_a_ncis"
"key8" "Ch_a_rley"
"key11" "Osw_a_ldo"
{code}
although returned are
{code}
[key12, key13, key3, key4, key6]
{code}
cc [~xedin] [~doanduyhai] [~beobal]
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)