[ http://issues.apache.org/jira/browse/DERBY-517?page=all ]
Fernanda Pizzorno updated DERBY-517: ------------------------------------ Attachment: testPositionLastPrev.java There is also another problem that has been fixed by this patch. When positioning with rs.afterLast() and moving backwards (using rs.previous()) the client driver would only access fetchSize rows and not all rows in the result set. The attached repro case (testPositionLastPrev.java) shows this behaviour. * Output of testPositionLastPrev.java before patch: Show all rows. Forward - Row: 1: Testing 1 Forward - Row: 2: Testing 2 Forward - Row: 3: Testing 3 Forward - Row: 4: Testing 4 Forward - Row: 5: Testing 5 Forward - Row: 6: Testing 6 Forward - Row: 7: Testing 7 Forward - Row: 8: Testing 8 Forward - Row: 9: Testing 9 Forward - Row: 10: Testing 10 Position after the last row and show all rows backwards. Backward - Row: 5: Testing 5 Backward - Row: 4: Testing 4 Backward - Row: 3: Testing 3 Backward - Row: 2: Testing 2 Backward - Row: 1: Testing 1 * Output after patch: Show all rows. Forward - Row: 1: Testing 1 Forward - Row: 2: Testing 2 Forward - Row: 3: Testing 3 Forward - Row: 4: Testing 4 Forward - Row: 5: Testing 5 Forward - Row: 6: Testing 6 Forward - Row: 7: Testing 7 Forward - Row: 8: Testing 8 Forward - Row: 9: Testing 9 Forward - Row: 10: Testing 10 Position after the last row and show all rows backwards. Backward - Row: 10: Testing 10 Backward - Row: 9: Testing 9 Backward - Row: 8: Testing 8 Backward - Row: 7: Testing 7 Backward - Row: 6: Testing 6 Backward - Row: 5: Testing 5 Backward - Row: 4: Testing 4 Backward - Row: 3: Testing 3 Backward - Row: 2: Testing 2 Backward - Row: 1: Testing 1 > ResultSet - relative(int rows) behaves different in embedded and > client/server mode when the positioning before the first row or after the > last row. > ---------------------------------------------------------------------------------------------------------------------------------------------------- > > Key: DERBY-517 > URL: http://issues.apache.org/jira/browse/DERBY-517 > Project: Derby > Type: Bug > Components: Network Client > Reporter: Fernanda Pizzorno > Assignee: Fernanda Pizzorno > Fix For: 10.2.0.0 > Attachments: DERBY-517-2.diff, DERBY-517-2.stat, testPositionLastPrev.java > > RecordSet - relative(int rows) behaves different in embedded and > client/server mode when the positioning before the first row or after the > last row. > The embedded driver shows the behaviour described in the JDBC 3.0 > specification, returning false and postitioning in either before first or > after last. While the client/server driver returns true and > incrementing/decrementing the current row by "rows" and not setting the > position to either before first of after last. > I have run a test with a result set with 10 rows, where I positioned in row 5 > and moved +20 and - 20 using relative(int rows). With the embedded driver the > method returned false, the current row was set to 0 and isAfterLast() and > isBeforeFirst() returned true (for +20 and -20 respectively). With the > client/server driver the method returned true, the current row was set to 25 > and -15 (for +20 and -20 respectively) and isAfterLast() and isBeforeFirst() > returned false. > I have also run a test as the first one but running next() 5 times instead of > absolute(5) for postitioning in row 5, and then relative(20) produced the > expected results with the client/server driver. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira