mirror of
https://github.com/MariaDB/server.git
synced 2025-03-01 00:33:09 +01:00
Merge ibabaev@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into olga.mysql.com:/home/igor/mysql-5.0-opt
This commit is contained in:
commit
c118eeae57
2 changed files with 16 additions and 14 deletions
|
@ -67,9 +67,9 @@ static int maxmin_in_range(bool max_fl, Field* field, COND *cond);
|
||||||
GROUP BY part.
|
GROUP BY part.
|
||||||
|
|
||||||
RETURN VALUES
|
RETURN VALUES
|
||||||
0 No errors
|
0 no errors
|
||||||
1 if all items were resolved
|
1 if all items were resolved
|
||||||
-1 on impossible conditions
|
HA_ERR_KEY_NOT_FOUND on impossible conditions
|
||||||
OR an error number from my_base.h HA_ERR_... if a deadlock or a lock
|
OR an error number from my_base.h HA_ERR_... if a deadlock or a lock
|
||||||
wait timeout happens, for example
|
wait timeout happens, for example
|
||||||
*/
|
*/
|
||||||
|
@ -224,7 +224,7 @@ int opt_sum_query(TABLE_LIST *tables, List<Item> &all_fields,COND *conds)
|
||||||
if (error)
|
if (error)
|
||||||
{
|
{
|
||||||
if (error == HA_ERR_KEY_NOT_FOUND || error == HA_ERR_END_OF_FILE)
|
if (error == HA_ERR_KEY_NOT_FOUND || error == HA_ERR_END_OF_FILE)
|
||||||
return -1; // No rows matching WHERE
|
return HA_ERR_KEY_NOT_FOUND; // No rows matching WHERE
|
||||||
/* HA_ERR_LOCK_DEADLOCK or some other error */
|
/* HA_ERR_LOCK_DEADLOCK or some other error */
|
||||||
table->file->print_error(error, MYF(0));
|
table->file->print_error(error, MYF(0));
|
||||||
return(error);
|
return(error);
|
||||||
|
@ -311,7 +311,7 @@ int opt_sum_query(TABLE_LIST *tables, List<Item> &all_fields,COND *conds)
|
||||||
if (error)
|
if (error)
|
||||||
{
|
{
|
||||||
if (error == HA_ERR_KEY_NOT_FOUND || error == HA_ERR_END_OF_FILE)
|
if (error == HA_ERR_KEY_NOT_FOUND || error == HA_ERR_END_OF_FILE)
|
||||||
return -1; // No rows matching WHERE
|
return HA_ERR_KEY_NOT_FOUND; // No rows matching WHERE
|
||||||
/* HA_ERR_LOCK_DEADLOCK or some other error */
|
/* HA_ERR_LOCK_DEADLOCK or some other error */
|
||||||
table->file->print_error(error, MYF(0));
|
table->file->print_error(error, MYF(0));
|
||||||
return(error);
|
return(error);
|
||||||
|
|
|
@ -707,11 +707,20 @@ JOIN::optimize()
|
||||||
{
|
{
|
||||||
int res;
|
int res;
|
||||||
/*
|
/*
|
||||||
opt_sum_query() returns -1 if no rows match to the WHERE conditions,
|
opt_sum_query() returns HA_ERR_KEY_NOT_FOUND if no rows match
|
||||||
or 1 if all items were resolved, or 0, or an error number HA_ERR_...
|
to the WHERE conditions,
|
||||||
|
or 1 if all items were resolved,
|
||||||
|
or 0, or an error number HA_ERR_...
|
||||||
*/
|
*/
|
||||||
if ((res=opt_sum_query(select_lex->leaf_tables, all_fields, conds)))
|
if ((res=opt_sum_query(select_lex->leaf_tables, all_fields, conds)))
|
||||||
{
|
{
|
||||||
|
if (res == HA_ERR_KEY_NOT_FOUND)
|
||||||
|
{
|
||||||
|
DBUG_PRINT("info",("No matching min/max row"));
|
||||||
|
zero_result_cause= "No matching min/max row";
|
||||||
|
error=0;
|
||||||
|
DBUG_RETURN(0);
|
||||||
|
}
|
||||||
if (res > 1)
|
if (res > 1)
|
||||||
{
|
{
|
||||||
thd->fatal_error();
|
thd->fatal_error();
|
||||||
|
@ -719,13 +728,6 @@ JOIN::optimize()
|
||||||
DBUG_PRINT("error",("Error from opt_sum_query"));
|
DBUG_PRINT("error",("Error from opt_sum_query"));
|
||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
}
|
}
|
||||||
if (res < 0)
|
|
||||||
{
|
|
||||||
DBUG_PRINT("info",("No matching min/max row"));
|
|
||||||
zero_result_cause= "No matching min/max row";
|
|
||||||
error=0;
|
|
||||||
DBUG_RETURN(0);
|
|
||||||
}
|
|
||||||
DBUG_PRINT("info",("Select tables optimized away"));
|
DBUG_PRINT("info",("Select tables optimized away"));
|
||||||
zero_result_cause= "Select tables optimized away";
|
zero_result_cause= "Select tables optimized away";
|
||||||
tables_list= 0; // All tables resolved
|
tables_list= 0; // All tables resolved
|
||||||
|
|
Loading…
Add table
Reference in a new issue