FETCH RELATIVE has an off by one error for the first row --------------------------------------------------------
Key: CORE-6486 URL: http://tracker.firebirdsql.org/browse/CORE-6486 Project: Firebird Core Issue Type: Bug Components: Engine Affects Versions: 3.0.7, 4.0 RC 1 Environment: Windows 10 64-bit Firebird-4.0.0.2353-0-RC1-x64 / Firebird-3.0.7.33374-1_x64 Reporter: Mark Rotteveel The FETCH RELATIVE 1 FROM cursor_name statement should be equivalent to FETCH NEXT FROM cursor_name (or FETCH cursor_name), however it skips the first row; execute block returns (rowval integer, rowcount integer) as declare c scroll cursor for (select 1 as rowval from rdb$database union all select 2 as rowval from rdb$database union all select 3 as rowval from rdb$database); begin open c; -- fetch next from c; fetch relative 1 from c; rowval = c.rowval; rowcount = row_count; suspend; end This returns (2, 1) for (rowval, rowcount), instead of expected (1, 1). For subsequent fetches, it behaves as expected, so it seems to problem is with the first FETCH RELATIVE only. Using FETCH RELATIVE 2 FROM c will return (3,1) instead of (2,1). It seems to behave as if the first row was already fetched, but using FETCH RELATIVE 0 FROM c will produce error "Cursor C is not positioned in a valid record". -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://tracker.firebirdsql.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira Firebird-Devel mailing list, web interface at https://lists.sourceforge.net/lists/listinfo/firebird-devel