Bug #42593 | cluster join hangs in BKA | ||
---|---|---|---|
Submitted: | 4 Feb 2009 14:05 | Modified: | 23 Nov 2010 2:50 |
Reporter: | Tomas Ulin | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Optimizer | Severity: | S3 (Non-critical) |
Version: | 6.0 | OS: | Any |
Assigned to: | Igor Babaev | CPU Architecture: | Any |
[4 Feb 2009 14:05]
Tomas Ulin
[10 Feb 2009 11:00]
Jonas Oreland
Patch that adds DBUG_ASSERT for inconsistency in mrr-interface usage
Attachment: bug42593.patch (text/x-patch), 597 bytes.
[10 Feb 2009 11:03]
Jonas Oreland
So the problem is that we get a "multi_range_read_init"-call with n_ranges=11 But we can only call *seq_funcs.next(...) 9 times This cause us to enter an endless loop (unless patch i attached to bug-report is applied, which cause it to assert instead)
[10 Feb 2009 11:37]
Jonas Oreland
info: same behavior in mysql-6.0-telco-6.3 and mysql-6.0-telco (6.4)
[10 Feb 2009 12:27]
Jonas Oreland
Another thing: I seem to recall that n_ranges (in the various flavors) should not be used. We use it here and there. Iff this argument is "undefined", can you please remove it from the interfaces please. (or at the very minimum document in handler.h when/if it's undefined) /Jonas
[13 Feb 2009 5:56]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/66142 2697 Igor Babaev 2009-02-12 Fixed bug #42593. The method JOIN_CACHE_BKA_UNIQUE::join_matching_record calls JOIN_CACHE_BKA::init_join_matching_records that calls the handler function multi_range_read_init. The code before the fix erroneously always passed numbers of records in the join buffer as the third parameter for the call of multi_range_read_init. Yet this parameter must specify the number of ranges passed to the MRR interface for processing. If a join cache of the type JOIN_CACHE_BKA_UNIQUE is employed the number of distinct keys occurred in the records from the join buffer must be passed as the required number of ranges to the function multi_range_read_init. Currently only the NDB implementation of the multi_range_read_init handler function really uses the expected number of ranges.
[16 Feb 2009 18:08]
Bugs System
Pushed into 6.0.10-alpha (revid:alik@sun.com-20090216180446-dl1xovi02kbd2fgn) (version source revid:igor@mysql.com-20090213055616-8jruyhpluecmv2b8) (merge vers: 6.0.10-alpha) (pib:6)
[24 Feb 2009 0:54]
Paul DuBois
Noted in 6.0.10 changelog. For the batched-key access method, numbers of records were being specified rather than numbers of ranges.
[16 Aug 2010 6:34]
Bugs System
Pushed into mysql-next-mr (revid:alik@sun.com-20100816062819-bluwgdq8q4xysmlg) (version source revid:alik@sun.com-20100816062612-enatdwnv809iw3s9) (pib:20)
[13 Nov 2010 16:22]
Bugs System
Pushed into mysql-trunk 5.6.99-m5 (revid:alexander.nozdrin@oracle.com-20101113155825-czmva9kg4n31anmu) (version source revid:vasil.dimov@oracle.com-20100629074804-359l9m9gniauxr94) (merge vers: 5.6.99-m4) (pib:21)
[23 Nov 2010 2:50]
Paul DuBois
Bug does not appear in any released 5.6.x version. No 5.6.1 changelog entry needed.