I am have written an ODA extension for use within BIRT and I have noticed something a bit odd when we recently upgraded from BIRT 3.7.1 to BIRT 3.7.2 and I was wondering if anyone could enlighten me.
In my report I have 2 data sets, data set 1 and data set 2. In my report I use data set 1 to populate rows of a table, data set 2 has a parameter that is bound to the row number of data set 1 and data set 2 in turn populates a table nested at the end of the row generated by data set 1.
Note : In the following explanation the rendering of data set 1 causes generation of result set 1 and rendering data set 2 causes generation of result set 2
With BIRT 3.7.1 I see the following when I do a preview :
result set 1 next() is called followed by complete result set 2 iteration, then followed by subsequent result set 1 next() calls and their associated result set 2 iterations. So process one row of result 1 followed by all rows of data set 2 ie
result set 1 row 1 => result set 2 row 1 (passing row 1 as parameter)
=> result set 2 row 2 (passing row 1 as parameter)
=> result set 2 row 3 (passing row 1 as parameter)
result set 1 row 2 => result set 2 row 1 (passing row 2 as parameter)
=> result set 2 row 2 (passing row 2 as parameter)
=> result set 2 row 3 (passing row 2 as parameter)
result set 1 row 3 => result set 2 row 1 (passing row 3 as parameter)
=> result set 2 row 2 (passing row 3 as parameter)
=> result set 2 row 3 (passing row 3 as parameter)
With BIRT 3.7.2 I see something different :
result set 1 is completely iterated and each of the result set 2 result sets are then made ie.
result set 1 row 1 result set 1 row 2 result set 1 row 3 result set 2 row 1 (passing row 1 as parameter) result set 2 row 2 (passing row 1 as parameter) result set 2 row 3 (passing row 1 as parameter) result set 2 row 1 (passing row 2 as parameter) result set 2 row 2 (passing row 2 as parameter) result set 2 row 3 (passing row 2 as parameter) result set 2 row 1 (passing row 3 as parameter) result set 2 row 2 (passing row 3 as parameter) result set 2 row 3 (passing row 3 as parameter)
Now my questions;
1. which of these is this expected behavior? Are there any guarantees of the result set traversal behavior?
2. is there a way to control this behavour?





MultiQuote