=== modified file 'storage/ndb/include/ndbapi/NdbScanOperation.hpp'
--- a/storage/ndb/include/ndbapi/NdbScanOperation.hpp	2008-06-17 20:28:45 +0000
+++ b/storage/ndb/include/ndbapi/NdbScanOperation.hpp	2008-08-11 12:51:32 +0000
@@ -544,6 +544,9 @@
   /* This flag indicates whether a scan operation is using the old API */
   bool  m_scanUsingOldApi;
 
+  /* Whether readTuples has been called - only valid for old Api scans */
+  bool m_readTuplesCalled;
+
   /* Scan definition information saved by RecAttr scan API */
   LockMode m_savedLockModeOldApi;
   Uint32 m_savedScanFlagsOldApi;

=== modified file 'storage/ndb/src/ndbapi/NdbScanOperation.cpp'
--- a/storage/ndb/src/ndbapi/NdbScanOperation.cpp	2008-08-06 15:46:41 +0000
+++ b/storage/ndb/src/ndbapi/NdbScanOperation.cpp	2008-08-11 12:51:32 +0000
@@ -54,6 +54,7 @@
   m_executed = false;
   m_scan_buffer= NULL;
   m_scanUsingOldApi= true;
+  m_readTuplesCalled= false;
   m_interpretedCodeOldApi= NULL;
 }
 
@@ -120,6 +121,7 @@
   m_read_range_no = 0;
   m_executed = false;
   m_scanUsingOldApi= true;
+  m_readTuplesCalled= false;
   m_interpretedCodeOldApi= NULL;
 
   m_api_receivers_count = 0;
@@ -937,15 +939,16 @@
                              Uint32 parallel,
                              Uint32 batch)
 {
-  // It is only possible to call readTuples if the scan transaction 
-  // doesn't already contain a scan operation
-  if (theNdbCon->theScanningOp != NULL)
+  // It is only possible to call readTuples if  readTuples hasn't
+  // already been called
+  if (m_readTuplesCalled)
   {
     setErrorCode(4605);
     return -1;
   }
   
   /* Save parameters for later */
+  m_readTuplesCalled= true;
   m_savedLockModeOldApi= lm;
   m_savedScanFlagsOldApi= scan_flags;
   m_savedParallelOldApi= parallel;



