Github user morokosi commented on the issue:

    https://github.com/apache/storm/pull/2295
  
    In a nutshell, the changeset makes utilize of inner list dimensions 
correctly when a cassandra query result has multiple rows.
    
    Assume we have a cassandra table like the following:
    
    ```sql
    CREATE TABLE t1 (pk int, ck int, data text, PRIMARY KEY (pk, ck)));
    ```
    
    | pk | ck | data |
    | -- | -- | -- |
    | 1 | 0 | a |
    | 1 | 1 | b |
    | 2 | 0 | c |
    | 3 | 0 | d |
    
    and we have a StateQuery as `SELECT data from t1 where pk = ?` with input 
tuples `1,2,3`.
    
    With current implementation, the return list of 
`TridentResultSetValuesMapper::map` is as follows:
    
    ```
    [
      [values(pk=1, ck=0)],
      [values(pk=1, ck=1)],
      [values(pk=2, ck=0)],
      [values(pk=3, ck=0)]
    ]
    ```
    
    This throws an exception because the list size differs from the input tuple 
size.
    
    On the other hand, one with the changeset results
    
    ```
    [
      [values(pk=1, ck=0), values(pk=1, ck=1)],
      [values(pk=2, ck=0)],
      [values(pk=3, ck=0)]  
    ]
    ```
    
    which the list size is same as the input tuple size.


---

Reply via email to