secondary index: fix wrong results returned in certain cases
secondary index: fix wrong results returned in certain cases

The current secondary-index search code, in
indexed_table_select_statement::do_execute(), begins by fetching a list
of partitions, and then the content of these partitions from the base
table. However, in some cases, when the table has clustering columns and
not searching on the first one of them, doing this work in partition
granularity is wrong, and yields wrong results as demonstrated in
issue #3405.

So in this patch, we recognize the cases where we need to work in
clustering row granularity, and in those cases use the new functions
introduced in the previous patches - find_index_clustering_rows() and
the execute() variant taking a list of primary-keys of rows.

Fixes #3405.

Signed-off-by: Nadav Har'El <625169824b719df98706d88646d0aae6f368ae4d@scylladb.com>

duarten/scylla,avikivity/scylla,avikivity/scylla,scylladb/scylla,avikivity/scylla,scylladb/scylla,scylladb/scylla,scylladb/scylla,duarten/scylla,duarten/scylla