From: Ole John Aske Date: October 11 2010 9:48am Subject: bzr commit into mysql-5.1-telco-7.0-spj-scan-vs-scan branch (ole.john.aske:3307) List-Archive: http://lists.mysql.com/commits/120477 Message-Id: <20101011094841.29A6021D@fimafeng09.norway.sun.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============4033310739755392618==" --===============4033310739755392618== 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-spj-scan-scan/ based on revid:jan.wedvik@stripped 3307 Ole John Aske 2010-10-11 spj-svs: Recommited after 'bzr pull' to clear merge conflicts Fixed incorrect usage of info in NdbRecord to find the NdbQueryOperand* which defined the value for a specific column in the partition key. Bug caused 'out of bound' read in m_bound.low[] and an assert when compiled with DEBUG. Includes testcase for the above. modified: mysql-test/suite/ndb/r/ndb_join_pushdown.result mysql-test/suite/ndb/t/ndb_join_pushdown.test storage/ndb/src/ndbapi/NdbQueryBuilder.cpp === modified file 'mysql-test/suite/ndb/r/ndb_join_pushdown.result' --- a/mysql-test/suite/ndb/r/ndb_join_pushdown.result 2010-09-30 14:20:12 +0000 +++ b/mysql-test/suite/ndb/r/ndb_join_pushdown.result 2010-10-11 09:48:36 +0000 @@ -3875,6 +3875,14 @@ d e f a b c d e f a b c 1 2 3 6 7 8 1 2 3 1 2 4 1 2 3 7 8 9 1 2 3 1 2 3 1 2 3 7 8 9 1 2 3 1 2 4 +alter table t1 drop primary key, add primary key using hash (d,b,a,c); +alter table t1 partition by key (b); +create index ix1 on t1(b,d,a); +explain +select straight_join * from t1 x, t1 y where y.a=x.d and y.b=x.e; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE x ALL PRIMARY NULL NULL NULL 8 Parent of 2 pushed join@1 +1 SIMPLE y ref ix1 ix1 4 test.x.e 1 Child of pushed join@1; Using where pruned 12 const_pruned @@ -4014,13 +4022,13 @@ LOCAL+REMOTE READS_SENT drop table spj_counts_at_startup; drop table spj_counts_at_end; scan_count -1975 +1985 pruned_scan_count 7 sorted_scan_count 44 pushed_queries_defined -333 +334 pushed_queries_dropped 11 pushed_queries_executed === modified file 'mysql-test/suite/ndb/t/ndb_join_pushdown.test' --- a/mysql-test/suite/ndb/t/ndb_join_pushdown.test 2010-09-30 14:20:12 +0000 +++ b/mysql-test/suite/ndb/t/ndb_join_pushdown.test 2010-10-11 09:48:36 +0000 @@ -2771,6 +2771,18 @@ select straight_join * from t1 x, t1 y w --sorted_result select straight_join * from t1 x, t1 y where y.a=x.d and y.b=2; +########## +# Test pruned scan using an index: +# Declaring PK as 'using hash' will prevent that PK is used as index +# Declare PK / ix1 with mismatching column order will test correct +# usage of NdbRecord::distkey_indexes[] +########## +alter table t1 drop primary key, add primary key using hash (d,b,a,c); +alter table t1 partition by key (b); +create index ix1 on t1(b,d,a); + +explain +select straight_join * from t1 x, t1 y where y.a=x.d and y.b=x.e; # Verify pruned execution by comparing the NDB$INFO counters --disable_query_log === modified file 'storage/ndb/src/ndbapi/NdbQueryBuilder.cpp' --- a/storage/ndb/src/ndbapi/NdbQueryBuilder.cpp 2010-09-24 07:29:43 +0000 +++ b/storage/ndb/src/ndbapi/NdbQueryBuilder.cpp 2010-10-11 09:48:36 +0000 @@ -2102,10 +2102,12 @@ NdbQueryIndexScanOperationDefImpl::appen for (unsigned i = 0; i < indexRecord->distkey_index_length; i++) { - unsigned keyNo = indexRecord->distkey_indexes[i]; - assert(keyNocolumns[keyNo].flags & NdbRecord::IsDistributionKey); - const NdbQueryOperandImpl* key = m_bound.low[keyNo]; + const unsigned keyNo = indexRecord->distkey_indexes[i]; + assert(keyNonoOfColumns); + const NdbRecord::Attr& indexAttr = indexRecord->columns[keyNo]; + assert(indexAttr.flags & NdbRecord::IsDistributionKey); + assert(indexAttr.index_attrIdgetKind()) { --===============4033310739755392618== 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\ # yayn6gufqziknfcx # target_branch: file:///net/fimafeng09/export/home/tmp/oleja/mysql\ # /mysql-5.1-telco-7.0-spj-scan-scan/ # testament_sha1: d9aa9fdcc3775ace10fd0b3a609835abe7aeb127 # timestamp: 2010-10-11 11:48:41 +0200 # source_branch: bzr+ssh://oaske@stripped/bzrroot/server\ # /mysql-5.1-telco-7.0-spj/ # base_revision_id: jan.wedvik@stripped # # Begin bundle IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWclmFDQAA2tfgAUwWff//3+/ /iq////wYAiOpz7SgAJ206BoAFBrQA01Semqf6lMIwmAamCYgGmjCMmEbQT0Ew4yZNGIaaGAmhia NMmIGRhNGmmEGTCVNTU9MmlPaoPImmanqeoAPUNGhkGgABoASmkEE01PRqT9EyEeImEGh6QBo0Bo ABxkyaMQ00MBNDE0aZMQMjCaNNMIMmEkggAE0aNBGEZFNiIjHqmmQ0NNDJmowI0ZJXjxchiDCajE zO/6nYzQx8+YpL0u1bloFTEY5tkSQSimbscUuTN+uP3e/EzW1LWuEvr3LSIMhDb6eojz01p298rw e6Fa9SEUJAQEYEob6bj4aFUYu5IE9EJJIJQR7Bt+NG5hJbJEUYThBu0sEPKVEpUuk+u/Vlty90mX RXNkj2R2Ub9k/CaCnY5oWOxErt54VW4DtNH2v6ClsU1UtNwujkIZu4YZCYmQJFo6i7WqeCI2cc2N SxnxGZRzbM/C8G77R4ZSkgShNovFOeyOKVLVSNZOZlq8styPfOiYcO7/JyoNN37Vy5qZ3PNKDIWg 8gYGPO62rdBFwi4S59OGc2H5I0FeKguHJiJjmOqTu+BmDgAO1PTUVLWOW/R5tE1cj9ZMd0kNnwNN YiX+sPSeMShCYYWKRMtSHOTIVSgItzCRPlkUEBW3q7P4weHj0O26MmSZACBi4cQ9GBmCJF2ruvfm NTllk6mlJJ2cQQPEaSIoA9TlLvQldMcTT9nQd7r7tIrDByrzJRhmCMqcZV44BchLHIiI4mVfKMoi 4PvvnBoE0/cQgEaXZNhnu6m+hVlOjebkQKT9jrffYMDNlYSvLtfLVwicLVB5Wts5tY+ZoJNLHAWT AEhBZmzDeW2p+2S2onTSDyI+op0PFxph3FJXIZEhtUrztKUk0bDO91Nq2QNN2FNJMnlFQKofA0CZ isc+QtLhoE/RbjfzroL5R5TAgqweo0Bkylh3aAgXcnuzJJSQ2xETVSxNYPvJFs2wouyldPAvrreQ MQYJ+U0CjFM+JogqVgXFJeMVXF+PDGySzGmissESaSEpxwJjbq4SzlUi1akatRaWGGYi3x1+B1Wg uW6kpWxnRNOzSbDQNq0vQ4nInpDdguJ3X01WlKg5bDfA8dw82CMRqCDDPvuIHE4DqjgNGzU2ZiRv susvNbBZJKP0DGtW3PEOiXksCBVVxlu0yYGnaVjrPM5VaStczNaOY6oVZ1RMMIBckQgwqVIMuIam tdOTzukmZ6uRu+rs4RNk2dRSS4mQaTjNO1tBsVBSyCwQUsQSH6hRokoUJP0DcWuqVsY/Hmrvh3D1 FB3rjQpj87AeUr8v9qxbZxYrvqcPWskN6poi/YmUR/r/1O1bMEl/DC7psO42ls/E26IyDRZoJvHI aNm2gaCEuDJ1haSAfb8KSf1Pb7D4yvK0Ve9iRe8b0mKCF6kS+thjLqH26lXMYH2hO9MP0W21c70D mWYTk2S1IT/9KMGHifpAdcKRReNf3KhDAcqNLd2LQKwBiPx1q0ixxRdBHdzWzSoVE+JLIfjxBP0k peMVHuWOMzv6HRc7NmZEpPvti0tHBaYZkB6RTLzcfnwQEmyBzT0nSxWsginIQziMRxSwU3Dotizg 1neQWlQWyvKFcUcCKN1JCdfKVJ7vwPVJ4KcoOBgQ3fgWVYqSMiS6VHPsG7fN2FnvNPwyDA30l+Hu 6l7f3esd3QgRiDSEBh6R6MAbe7aTWmiBH+h2OhlP2HYnsvVaUKWtlg64LhoJZb4uYzD1G0CMhLNS svbrNbT1G0NBx4adKmsOFk0P5lmrc1HNxonV+FfcwMmRFFaN7tZIt86H96JbTlJN+7A5qXDJSJLq QS4i/JhDSXngjobg9ijIY8uo244/tAp8eJIIY7BqDe0n6LUvMH+Z40KAfRwEONT7IkWR9O+QRWi1 r36BF+9aTz5DxndluHPAwUXCYMHHmj9ZO4SfkbEHhOcNvvlU2XV2flTj9aTVVBf5mZusszFERbwU EGjSYBXQNSajYDANN2Scj6jJxz5molyjXjgwUT75bVFDNNpF21nx+BrIZE6dr/kUL/1S4RPfguJg GR9arzQsysYWnfRoTfM7wvEtE6DbwrIVJa9dJy7VCPLkszxbbhmEdAovDZIVD6A+j0cnBBI1oTxP fFPwm8Xmzm25NALiyh9QkX43c4dN5YHiaWoUOMQd0Ji4JJAf9ns+wyoR2aaYhQ98HuHPc0UKgXAT whmvAQ5SjDCsVu+W6TpFaTOM/y6xI4Qd4gGebzxchWMPFgv8uvdJ9cq1IJmQyov4+/Ud3P9Wjkj9 /qSR6azWDLu4sUnyagYEXKkZL5PCAWnd+aRglFKaKceME2rkH4N2XYVUSRb9yqwZMhk8LSHwJece kR3qVU+2C5VosY6iY+4pX3GI7IR4a9GgzgD2h6FT09MoOTCBid5PAB0zHsV3GwwJBEdGHxmCcrsk CapXdZMCXUOg4eFCSqWxIgQWo4aZb8YytkOI4CzA0Y+ov3HEdUT21mOycJE4mYyUwEanB/fAUV+M 6FatjEeP0LC23BrbL7A3okBIbEUDU1EKSXKNOequ8SrveJB349XuUKX1iKiNZ9NMyceIpinXQDyV dCSdW87QynlogPSb5KYeijTdiRWL1vuJhktCsSven4SuRPtRWXasTNeBu9tR81zOgj8TyNBYVduE KAYW4NOx7EzSgMvSSjy8/OSPTavHdsNYRFRzP43yOq9Kl4hYi1gZ6VGyXl38i1ME5UfoVMQWCJBF CxfCB4G5yD8+tKfWy35jA4tGTmcDt4z0wy7hDjnoURHLqSma0RMmxDgTCJbNmR/8XckU4UJDJZhQ 0A== --===============4033310739755392618==--