From: Ole John Aske Date: May 13 2011 8:38am Subject: bzr commit into mysql-5.1-telco-7.0 branch (ole.john.aske:4376) List-Archive: http://lists.mysql.com/commits/137289 Message-Id: <20110513083805.B4443222@fimafeng09.norway.sun.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============3653163990197447032==" --===============3653163990197447032== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///net/fimafeng09/export/home/tmp/oleja/mysql/mysql-5.1-telco-7.0/ based on revid:magnus.blaudd@stripped 4376 Ole John Aske 2011-05-13 Fixed a problem in SPJ block with 'bushy index scans' where condition for when to release or keep buffered rows and/or rangekeys was incorrect. modified: storage/ndb/src/kernel/blocks/dbspj/DbspjMain.cpp === modified file 'storage/ndb/src/kernel/blocks/dbspj/DbspjMain.cpp' --- a/storage/ndb/src/kernel/blocks/dbspj/DbspjMain.cpp 2011-05-04 11:45:33 +0000 +++ b/storage/ndb/src/kernel/blocks/dbspj/DbspjMain.cpp 2011-05-13 08:38:01 +0000 @@ -1150,7 +1150,7 @@ Dbspj::batchComplete(Signal* signal, Ptr /** * Locate next TreeNode(s) to retrieve more rows from. * - * Calcule set of 'm_active_nodes' we will receive from in NEXTREQ. + * Calculate set of the 'm_active_nodes' we will receive from in NEXTREQ. * Add these TreeNodes to the cursor list to be iterated. */ void @@ -1168,7 +1168,7 @@ Dbspj::prepareNextBatch(Signal* signal, if (requestPtr.p->m_bits & Request::RT_REPEAT_SCAN_RESULT) { /** - * If REPEAT_SCAN_RESULT we handle byshy scans by return more *new* rows + * If REPEAT_SCAN_RESULT we handle bushy scans by return more *new* rows * from only one of the active child scans. If there are multiple * bushy scans not being able to return their current result set in * a single batch, result sets from the other child scans are repeated @@ -1239,7 +1239,7 @@ Dbspj::prepareNextBatch(Signal* signal, { /** * If not REPEAT_SCAN_RESULT multiple active TreeNodes may return their - * remaining result simultaneously. In case of byshy-scans, these + * remaining result simultaneously. In case of bushy-scans, these * concurrent result streams are cross joins of each other * in SQL terms. In order to produce the cross joined result, it is * the responsibility of the API-client to buffer these streams and @@ -1415,7 +1415,13 @@ Dbspj::releaseScanBuffers(Ptr r releaseNodeRows(requestPtr, treeNodePtr); } - if (treeNodePtr.p->m_state == TreeNode::TN_ACTIVE) + /** + * Cleanup ACTIVE nodes fetching more rows in a NEXTREQ, + * or nodes being in 'm_active_nodes' as they will 'repeat'. + * (and then become active) + */ + if (treeNodePtr.p->m_state == TreeNode::TN_ACTIVE || + requestPtr.p->m_active_nodes.get(treeNodePtr.p->m_node_no)) { jam(); cleanupChildBranch(requestPtr, treeNodePtr); @@ -1423,9 +1429,11 @@ Dbspj::releaseScanBuffers(Ptr r } /** - * Build Bitmask of all nodes having TN_ACTIVE childs + * Collect ancestors of all nodes which are, or will + * become active in NEXTREQ (possibly repeated) */ - if (treeNodePtr.p->m_state == TreeNode::TN_ACTIVE) + if (treeNodePtr.p->m_state == TreeNode::TN_ACTIVE || + requestPtr.p->m_active_nodes.get(treeNodePtr.p->m_node_no)) { ancestors_of_active.bitOR(treeNodePtr.p->m_ancestors); } --===============3653163990197447032== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/ole.john.aske@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: ole.john.aske@stripped\ # 49czz8teesk615mf # target_branch: file:///net/fimafeng09/export/home/tmp/oleja/mysql\ # /mysql-5.1-telco-7.0/ # testament_sha1: ff816c7f9aa2290a0f847ccf731aec38928fd330 # timestamp: 2011-05-13 10:38:05 +0200 # base_revision_id: magnus.blaudd@stripped\ # mnzlss3mwimb7cp8 # # Begin bundle IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWTOv7C4AAiZfgH0QUPf/9383 /0C////0UAUvc7uAAUaAAIZSAEaCaehhPUaJ6gwNAAEGBGmQRNKaZNHimTygGmIAAAAAGgACKegm SMgaeoNGQAaAAAADQAHGTJoxDE0wEDAmmCMExNNNABhBJICaAEBMRpGmU9GmJpqnmpGJ6m1DJ+p6 kfqjJBfTR56qBW4bBClMUQR9LROwQu/wbLascBBad4zbDVllxd+NUYbBLWwhPQsXfrbs0xt+mspL n+2bMyVf3R1ecbMnAYSioXhBRDmSBhUgEpaW7MqbWmHNxGSNwB5nAzbjj8NJs0RhgxykGD6QIGid wXA/lKHi6aaGJAxrCEqIl9dpkUAWLCW+lMuEhc6GoJTQrFNGUkKL0t51qI4QokAxEukIICFlQsVI A+xKJZUKKd8Cq91ydJ1eEgIuLCoDJRYBjpwFmEpDc+wzD393GdgGa0JDk4cB7Rb9+znnbPjdJIsb K/mE4AgOZbYOEOZhdusHrNux1RQCsb6wFGzr8ra0KrlMO6tCv8JJhiMorJQHUzLIiz7loVVjI/Iw pz3PDwFbjVAHJ1HaeGK0/HM9KzOmvVcTID5Lk5ELBbCCin7FOBrncdSjY2nRUG7TIa2CVLQpJpij y3VG/bkZc6zsLnOVixlweiQyWlMY1mVYoGBNmdOG6sRMvk9i63HXvDO85I3vriUyxLRMn3O17ha5 47C2uhjbNMMWlJZM2LjS9xuYMaiutO0rXIk2Yo426BUIPZ0q8p8CjSPUVWCnprVNMjTCNl7XQabj DWPMaCwOXhV7VSVqxMHTJ12YtUyuYgxN6aTRKwnNv6GfcX31tie1pGXZ8OApyTJS/k+3g+F7DMz/ P/CirfRedX8I81w/FVEm9O5ygWUFO67YQB6nNZDn+eaofyrJFn8KpYqzYF9/IwnjB4eUSBYPDj7/ h80iJqCuuAUXoy1d9V97p/u7CEO9W+MsEfm6MfoBe6SdQ+UHuXzw1L4sRXyO1x0oM061W47f4gLa 0G6QMkycM4pB5JacY7sVs1BRD8NJVQo3akio1XUrUVEmKdonqTNow8bZEVFeQ78Soks14/RtWpeW oCmTkrOAxY/Lo6P67jX7BoN69LVEJQ5owkCH8f9e7c/Rxkb4tvXZjkBCWLOSkF1wOMAzgazmM2gW LA4U7YHS++uBI+yGIJZAjDiDJUdkUdihFQ2KgEJJBV0nBlsqnbv2SS5Y0Fyc42i2mgsei+y5Wa61 cfPinrD2YfgbTeYk26rDT6c0NDnHWzPXShusctWHOmNwVQqbqGGjqQSVgETVu2x5H4fp4JqvP9eY 2rEUSzMWlNeDY444S8NmqdlgdAXYb7pC/7Pp9zJlwA3qCS0VffcFQesAkD3Bx4p2v1y9lyR7AHH1 nXSm9SHNtqtl704qff2ysZI8T4i5V9iP4K9TMJPPgLmj1reTmT7k6TzpYLO210YgRTlSg9hkPczf 7eDrHdC4hNMEV4Vokyf8k9YrspynHHf+QoIH3r02ga/I8hndvuqtEsUN0PLCrF3qkZBmQVT+xk2/ ZWul0F2CpUrMmZcF09qkULYBX31q2yyVRUcrLAT05Jdc3PaL8YfoTCBFHW719XFvxcU6bVhnbsi+ akTYNXyZ/tZ2ObPUC1ONKuas2wJmMIOL6lOPKEKhfegFZ3tS3aGPUqZsrDAHDWbnye4pB4Yj+8dJ iUVBvIWjDQVaHBK/TeRvFYp3IvX7C5gdRlVjquXiart1vPW7Q5SWfgrkoK4P7fV3HSBam4KtRpNy 71p8N2DotCDM+z3i11mKjqF6mJ/F3JFOFCQM6/sLgA== --===============3653163990197447032==--