mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
Fixed explain error handling
mysql-test/r/subselect.result: test of subselect explain mysql-test/t/subselect.test: test of subselect explain
This commit is contained in:
@@ -279,6 +279,8 @@ UNIQUE KEY `numreponse` (`numreponse`),
|
|||||||
KEY `pseudo` (`pseudo`,`numeropost`)
|
KEY `pseudo` (`pseudo`,`numeropost`)
|
||||||
) TYPE=MyISAM;
|
) TYPE=MyISAM;
|
||||||
INSERT INTO threadhardwarefr7 (numeropost,numreponse,pseudo) VALUES (1,1,'joce'),(1,2,'joce'),(1,3,'test');
|
INSERT INTO threadhardwarefr7 (numeropost,numreponse,pseudo) VALUES (1,1,'joce'),(1,2,'joce'),(1,3,'test');
|
||||||
|
EXPLAIN SELECT numreponse FROM threadhardwarefr7 WHERE numeropost='1' AND numreponse=(SELECT 1 FROM threadhardwarefr7 WHERE numeropost='1');
|
||||||
|
Subselect returns more than 1 record
|
||||||
EXPLAIN SELECT MAX(numreponse) FROM threadhardwarefr7 WHERE numeropost='1';
|
EXPLAIN SELECT MAX(numreponse) FROM threadhardwarefr7 WHERE numeropost='1';
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE Select tables optimized away
|
1 SIMPLE Select tables optimized away
|
||||||
|
@@ -177,7 +177,8 @@ CREATE TABLE `threadhardwarefr7` (
|
|||||||
KEY `pseudo` (`pseudo`,`numeropost`)
|
KEY `pseudo` (`pseudo`,`numeropost`)
|
||||||
) TYPE=MyISAM;
|
) TYPE=MyISAM;
|
||||||
INSERT INTO threadhardwarefr7 (numeropost,numreponse,pseudo) VALUES (1,1,'joce'),(1,2,'joce'),(1,3,'test');
|
INSERT INTO threadhardwarefr7 (numeropost,numreponse,pseudo) VALUES (1,1,'joce'),(1,2,'joce'),(1,3,'test');
|
||||||
|
-- error 1240
|
||||||
|
EXPLAIN SELECT numreponse FROM threadhardwarefr7 WHERE numeropost='1' AND numreponse=(SELECT 1 FROM threadhardwarefr7 WHERE numeropost='1');
|
||||||
EXPLAIN SELECT MAX(numreponse) FROM threadhardwarefr7 WHERE numeropost='1';
|
EXPLAIN SELECT MAX(numreponse) FROM threadhardwarefr7 WHERE numeropost='1';
|
||||||
EXPLAIN SELECT numreponse FROM threadhardwarefr7 WHERE numeropost='1' AND numreponse=(SELECT MAX(numreponse) FROM threadhardwarefr7 WHERE numeropost='1');
|
EXPLAIN SELECT numreponse FROM threadhardwarefr7 WHERE numeropost='1' AND numreponse=(SELECT MAX(numreponse) FROM threadhardwarefr7 WHERE numeropost='1');
|
||||||
drop table if exists threadhardwarefrtest7;
|
drop table if exists threadhardwarefrtest7;
|
||||||
|
@@ -371,13 +371,17 @@ JOIN::optimize()
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
conds=optimize_cond(conds,&cond_value);
|
conds= optimize_cond(conds,&cond_value);
|
||||||
if (thd->fatal_error || thd->net.report_error)
|
if (thd->fatal_error)
|
||||||
{
|
{
|
||||||
|
// quick abort
|
||||||
delete procedure;
|
delete procedure;
|
||||||
error = 0;
|
error= 0;
|
||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
}
|
} else if (thd->net.report_error)
|
||||||
|
// normal error processing & cleanup
|
||||||
|
DBUG_RETURN(-1);
|
||||||
|
|
||||||
if (cond_value == Item::COND_FALSE || !unit->select_limit_cnt)
|
if (cond_value == Item::COND_FALSE || !unit->select_limit_cnt)
|
||||||
{ /* Impossible cond */
|
{ /* Impossible cond */
|
||||||
zero_result_cause= "Impossible WHERE";
|
zero_result_cause= "Impossible WHERE";
|
||||||
@@ -7516,8 +7520,8 @@ int mysql_explain_union(THD *thd, SELECT_LEX_UNIT *unit, select_result *result)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
if (res > 0)
|
if (res > 0 || thd->net.report_error)
|
||||||
res= -res; // mysql_explain_select do not report error
|
res= -1; // mysql_explain_select do not report error
|
||||||
DBUG_RETURN(res);
|
DBUG_RETURN(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user