[svn:dbd-oracle] r15596 - dbd-oracle/trunk

[email protected] Thu, 28 Mar 2013 13:21:53 -0700 (PDT)
Newsgroups perl.dbd.oracle.changes
Message-ID <[email protected]>
Author: mjevans
Date: Thu Mar 28 13:21:53 2013
New Revision: 15596

Modified:
   dbd-oracle/trunk/Changes
   dbd-oracle/trunk/oci8.c

Log:
Fix rt84170 - scrollable cursors fail to return undef on last fetch


Modified: dbd-oracle/trunk/Changes
==============================================================================
--- dbd-oracle/trunk/Changes	(original)
+++ dbd-oracle/trunk/Changes	Thu Mar 28 13:21:53 2013
@@ -4,9 +4,11 @@
 
   [BUG FIXES]
 
-  - Changed 51scroll.t to test you cannot fetch off the end of the
-    result-set with a scrollable cursor - will fail until patch from
-    RT 84170 committed (REMOVE WHEN RELEASED)
+  - Fixed RT84170 - when using scrollable cursors and you've done a
+    positioned fetch and then keep fetching until the end of the
+    result-set calls to fetch never return undef and you keep getting
+    the last row forever. Also added test case to the 51scroll.t test
+    (Martin J. Evans).
 
 1.58      2013-03-05
   - promote 1.57_00 to official release

Modified: dbd-oracle/trunk/oci8.c
==============================================================================
--- dbd-oracle/trunk/oci8.c	(original)
+++ dbd-oracle/trunk/oci8.c	Thu Mar 28 13:21:53 2013
@@ -4002,6 +4002,10 @@
 			OCIStmtFetch_log_stat(imp_sth, imp_sth->stmhp, imp_sth->errhp,1, imp_sth->fetch_orient,imp_sth->fetch_offset, status);
 				/*this will work without a round trip so might as well open it up for all statments handles*/
 				/* default and OCI_FETCH_NEXT are the same so this avoids miscaluation on the next value*/
+			if (status==OCI_NO_DATA){
+                return Nullav;
+            }
+
 			OCIAttrGet_stmhp_stat(imp_sth, &imp_sth->fetch_position, 0, OCI_ATTR_CURRENT_POSITION, status);
 
 			if (DBIc_DBISTATE(imp_sth)->debug >= 4 || dbd_verbose >= 4 )