List:Commits« Previous MessageNext Message »
From:jonas Date:October 10 2006 8:30am
Subject:bk commit into 5.1 tree (jonas:1.2053)
View as plain text  
Below is the list of changes that have just been committed into a local
5.1 repository of jonas. When jonas does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet@stripped, 2006-10-10 10:30:02+02:00, jonas@stripped +5 -0
  ndb - bug20252 - allow user to specify batch size
    recommit in mysql-5.1-wl2325-5.0

  storage/ndb/include/ndbapi/NdbIndexScanOperation.hpp@stripped, 2006-10-10 10:30:00+02:00, jonas@stripped +4 -2
    Allow user to specifiy batch size

  storage/ndb/include/ndbapi/NdbScanOperation.hpp@stripped, 2006-10-10 10:30:00+02:00, jonas@stripped +3 -1
    Allow user to specifiy batch size

  storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp@stripped, 2006-10-10 10:30:01+02:00, jonas@stripped +4 -4
    Fix so that last row works even if batch is complete

  storage/ndb/src/ndbapi/NdbReceiver.cpp@stripped, 2006-10-10 10:30:01+02:00, jonas@stripped +9 -1
    Allow user to specifiy batch size

  storage/ndb/src/ndbapi/NdbScanOperation.cpp@stripped, 2006-10-10 10:30:01+02:00, jonas@stripped +15 -8
    Allow user to specifiy batch size

# This is a BitKeeper patch.  What follows are the unified diffs for the
# set of deltas contained in the patch.  The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User:	jonas
# Host:	perch.ndb.mysql.com
# Root:	/home/jonas/src/mysql-5.1-wl2325-5.0

--- 1.22/storage/ndb/include/ndbapi/NdbIndexScanOperation.hpp	2006-10-10 10:30:06 +02:00
+++ 1.23/storage/ndb/include/ndbapi/NdbIndexScanOperation.hpp	2006-10-10 10:30:06 +02:00
@@ -42,7 +42,9 @@
    * @param parallel No of fragments to scan in parallel (0=max)
    */ 
   virtual int readTuples(LockMode lock_mode = LM_Read, 
-                         Uint32 scan_flags = 0, Uint32 parallel = 0);
+                         Uint32 scan_flags = 0, 
+			 Uint32 parallel = 0,
+			 Uint32 batch = 0);
 
 #ifndef DOXYGEN_SHOULD_SKIP_INTERNAL
   /**
@@ -67,7 +69,7 @@
       (SF_OrderBy & -(Int32)order_by) |
       (SF_Descending & -(Int32)order_desc) |
       (SF_ReadRangeNo & -(Int32)read_range_no);
-    return readTuples(lock_mode, scan_flags, parallel);
+    return readTuples(lock_mode, scan_flags, parallel, batch);
   }
 #endif
 

--- 1.35/storage/ndb/include/ndbapi/NdbScanOperation.hpp	2006-10-10 10:30:06 +02:00
+++ 1.36/storage/ndb/include/ndbapi/NdbScanOperation.hpp	2006-10-10 10:30:06 +02:00
@@ -57,7 +57,9 @@
    */ 
   virtual
   int readTuples(LockMode lock_mode = LM_Read, 
-                 Uint32 scan_flags = 0, Uint32 parallel = 0);
+                 Uint32 scan_flags = 0, 
+		 Uint32 parallel = 0,
+		 Uint32 batch = 0);
 
 #ifndef DOXYGEN_SHOULD_SKIP_DEPRECATED
   /**

--- 1.86/storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp	2006-10-10 10:30:06 +02:00
+++ 1.87/storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp	2006-10-10 10:30:06 +02:00
@@ -7375,15 +7375,15 @@
       scanptr.p->m_curr_batch_size_rows = 0;
       scanptr.p->m_curr_batch_size_bytes = 0;
       closeScanLab(signal);
+    } else if (scanptr.p->m_last_row && !scanptr.p->scanLockHold) {
+      jam();
+      closeScanLab(signal);
+      return;
     } else if (scanptr.p->check_scan_batch_completed() &&
                scanptr.p->scanLockHold != ZTRUE) {
       jam();
       scanptr.p->scanState = ScanRecord::WAIT_SCAN_NEXTREQ;
       sendScanFragConf(signal, ZFALSE);
-    } else if (scanptr.p->m_last_row && !scanptr.p->scanLockHold) {
-      jam();
-      closeScanLab(signal);
-      return;
     } else {
       jam();
       /*

--- 1.17/storage/ndb/src/ndbapi/NdbReceiver.cpp	2006-10-10 10:30:06 +02:00
+++ 1.18/storage/ndb/src/ndbapi/NdbReceiver.cpp	2006-10-10 10:30:06 +02:00
@@ -121,7 +121,15 @@
    * no more than MAX_SCAN_BATCH_SIZE is sent from all nodes in total per
    * batch.
    */
-  batch_byte_size= max_batch_byte_size;
+  if (batch_size == 0)
+  {
+    batch_byte_size= max_batch_byte_size;
+  }
+  else
+  {
+    batch_byte_size= batch_size * tot_size;
+  }
+  
   if (batch_byte_size * parallelism > max_scan_batch_size) {
     batch_byte_size= max_scan_batch_size / parallelism;
   }

--- 1.73/storage/ndb/src/ndbapi/NdbScanOperation.cpp	2006-10-10 10:30:06 +02:00
+++ 1.74/storage/ndb/src/ndbapi/NdbScanOperation.cpp	2006-10-10 10:30:06 +02:00
@@ -117,7 +117,8 @@
 int 
 NdbScanOperation::readTuples(NdbScanOperation::LockMode lm,
 			     Uint32 scan_flags, 
-			     Uint32 parallel)
+			     Uint32 parallel,
+			     Uint32 batch)
 {
   m_ordered = m_descending = false;
   Uint32 fragCount = m_currentTable->m_fragmentCount;
@@ -181,9 +182,12 @@
   bool tupScan = (scan_flags & SF_TupScan);
   if (tupScan && rangeScan)
     tupScan = false;
-  
-  theParallelism = parallel;
 
+  if (rangeScan && (scan_flags & SF_OrderBy))
+    parallel = fragCount;
+  
+  theParallelism = parallel;    
+  
   if(fix_receivers(parallel) == -1){
     setErrorCodeAbort(4000);
     return -1;
@@ -202,6 +206,7 @@
   req->tableSchemaVersion = m_accessTable->m_version;
   req->storedProcId = 0xFFFF;
   req->buddyConPtr = theNdbCon->theBuddyConPtr;
+  req->first_batch_size = batch; // Save user specified batch size
   
   Uint32 reqInfo = 0;
   ScanTabReq::setParallelism(reqInfo, parallel);
@@ -750,13 +755,14 @@
    * The number of records sent by each LQH is calculated and the kernel
    * is informed of this number by updating the SCAN_TABREQ signal
    */
-  Uint32 batch_size, batch_byte_size, first_batch_size;
+  ScanTabReq * req = CAST_PTR(ScanTabReq, theSCAN_TABREQ->getDataPtrSend());
+  Uint32 batch_size = req->first_batch_size; // User specified
+  Uint32 batch_byte_size, first_batch_size;
   theReceiver.calculate_batch_size(key_size,
                                    theParallelism,
                                    batch_size,
                                    batch_byte_size,
                                    first_batch_size);
-  ScanTabReq * req = CAST_PTR(ScanTabReq, theSCAN_TABREQ->getDataPtrSend());
   ScanTabReq::setScanBatch(req->requestInfo, batch_size);
   req->batch_byte_size= batch_byte_size;
   req->first_batch_size= first_batch_size;
@@ -1226,13 +1232,14 @@
 int
 NdbIndexScanOperation::readTuples(LockMode lm,
 				  Uint32 scan_flags,
-				  Uint32 parallel)
+				  Uint32 parallel,
+				  Uint32 batch)
 {
   const bool order_by = scan_flags & SF_OrderBy;
   const bool order_desc = scan_flags & SF_Descending;
   const bool read_range_no = scan_flags & SF_ReadRangeNo;
-
-  int res = NdbScanOperation::readTuples(lm, scan_flags, 0);
+  
+  int res = NdbScanOperation::readTuples(lm, scan_flags, parallel, batch);
   if(!res && read_range_no)
   {
     m_read_range_no = 1;
Thread
bk commit into 5.1 tree (jonas:1.2053)jonas10 Oct