#At file:///net/fimafeng09/export/home/tmp/oleja/mysql/mysql-5.1-telco-7.0-spj-scan-scan/ based on revid:ole.john.aske@stripped
3390 Ole John Aske 2010-12-07
SPJ-scan-scan: Updated cherry picked fix for bug 58490 to latest fix being reviewed
modified:
sql/sql_select.cc
=== modified file 'sql/sql_select.cc'
--- a/sql/sql_select.cc 2010-12-07 11:56:10 +0000
+++ b/sql/sql_select.cc 2010-12-07 15:05:03 +0000
@@ -11661,6 +11661,16 @@ evaluate_join_record(JOIN *join, JOIN_TA
}
/*
+ Setting NESTED_LOOP_NO_MORE_ROWS (if not_exists_optimize)
+ also implies a 'not found' condition. However we could not
+ set this inside the loop above as it would prematurely
+ have terminated the 'first_unmatched' / 'first_unmatched->found'
+ calculations above.
+ */
+ if (rc == NESTED_LOOP_NO_MORE_ROWS)
+ found= false;
+
+ /*
It was not just a return to lower loop level when one
of the newly activated predicates is evaluated as false
(See above join->return_tab= tab).
@@ -11673,7 +11683,6 @@ evaluate_join_record(JOIN *join, JOIN_TA
if (found)
{
DBUG_PRINT("info", (" found match"));
- DBUG_ASSERT(rc==NESTED_LOOP_OK);
/* A match from join_tab is found for the current partial join. */
rc= (*join_tab->next_select)(join, join_tab+1, 0);
if (rc != NESTED_LOOP_OK && rc != NESTED_LOOP_NO_MORE_ROWS)
Attachment: [text/bzr-bundle] bzr/ole.john.aske@oracle.com-20101207150503-r5tqvnk6vhsd95jf.bundle
| Thread |
|---|
| • bzr commit into mysql-5.1-telco-7.0-spj-scan-vs-scan branch(ole.john.aske:3390) | Ole John Aske | 7 Dec |