mirror of
https://github.com/MariaDB/server.git
synced 2025-07-27 18:02:13 +03:00
Don't use ranges on HEAP tables with LIKE
Don't reconnect client on close
This commit is contained in:
@ -1657,6 +1657,7 @@ mysql_close(MYSQL *mysql)
|
|||||||
{
|
{
|
||||||
free_old_query(mysql);
|
free_old_query(mysql);
|
||||||
mysql->status=MYSQL_STATUS_READY; /* Force command */
|
mysql->status=MYSQL_STATUS_READY; /* Force command */
|
||||||
|
mysql->reconnect=0;
|
||||||
simple_command(mysql,COM_QUIT,NullS,0,1);
|
simple_command(mysql,COM_QUIT,NullS,0,1);
|
||||||
end_server(mysql);
|
end_server(mysql);
|
||||||
}
|
}
|
||||||
|
@ -79,7 +79,7 @@ f1 f2
|
|||||||
12 ted
|
12 ted
|
||||||
12 ted
|
12 ted
|
||||||
table type possible_keys key key_len ref rows Extra
|
table type possible_keys key key_len ref rows Extra
|
||||||
t1 range btn btn 10 NULL 10 where used
|
t1 ALL btn NULL NULL NULL 14 where used
|
||||||
btn
|
btn
|
||||||
table type possible_keys key key_len ref rows Extra
|
table type possible_keys key key_len ref rows Extra
|
||||||
t1 ALL btn NULL NULL NULL 14 where used
|
t1 ALL btn NULL NULL NULL 14 where used
|
||||||
|
@ -363,7 +363,7 @@ void Field::store_time(TIME *ltime,timestamp_type type)
|
|||||||
|
|
||||||
bool Field::optimize_range()
|
bool Field::optimize_range()
|
||||||
{
|
{
|
||||||
return test(table->file->option_flag() & HA_ONLY_WHOLE_INDEX);
|
return test(table->file->option_flag() & HA_READ_NEXT);
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
|
@ -78,10 +78,3 @@ class ha_heap: public handler
|
|||||||
enum thr_lock_type lock_type);
|
enum thr_lock_type lock_type);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -384,12 +384,16 @@ my_bool STDCALL mc_mysql_reconnect(MYSQL *mysql)
|
|||||||
MYSQL tmp_mysql;
|
MYSQL tmp_mysql;
|
||||||
DBUG_ENTER("mc_mysql_reconnect");
|
DBUG_ENTER("mc_mysql_reconnect");
|
||||||
|
|
||||||
|
if (!mysql->reconnect)
|
||||||
|
DBUG_RETURN(1);
|
||||||
|
|
||||||
mc_mysql_init(&tmp_mysql);
|
mc_mysql_init(&tmp_mysql);
|
||||||
tmp_mysql.options=mysql->options;
|
tmp_mysql.options=mysql->options;
|
||||||
if (!mc_mysql_connect(&tmp_mysql,mysql->host,mysql->user,mysql->passwd,
|
if (!mc_mysql_connect(&tmp_mysql,mysql->host,mysql->user,mysql->passwd,
|
||||||
mysql->db, mysql->port, mysql->unix_socket,
|
mysql->db, mysql->port, mysql->unix_socket,
|
||||||
mysql->client_flag))
|
mysql->client_flag))
|
||||||
{
|
{
|
||||||
|
tmp_mysql.reconnect=0;
|
||||||
mc_mysql_close(&tmp_mysql);
|
mc_mysql_close(&tmp_mysql);
|
||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
}
|
}
|
||||||
@ -793,6 +797,7 @@ mc_mysql_close(MYSQL *mysql)
|
|||||||
{
|
{
|
||||||
mc_free_old_query(mysql);
|
mc_free_old_query(mysql);
|
||||||
mysql->status=MYSQL_STATUS_READY; /* Force command */
|
mysql->status=MYSQL_STATUS_READY; /* Force command */
|
||||||
|
mysql->reconnect=0;
|
||||||
mc_simple_command(mysql,COM_QUIT,NullS,0,1);
|
mc_simple_command(mysql,COM_QUIT,NullS,0,1);
|
||||||
mc_end_server(mysql);
|
mc_end_server(mysql);
|
||||||
}
|
}
|
||||||
|
@ -919,6 +919,9 @@ get_mm_leaf(Field *field,KEY_PART *key_part,
|
|||||||
|
|
||||||
if (type == Item_func::LIKE_FUNC)
|
if (type == Item_func::LIKE_FUNC)
|
||||||
{
|
{
|
||||||
|
if (!field->optimize_range())
|
||||||
|
DBUG_RETURN(0); // Can't optimize this
|
||||||
|
|
||||||
bool like_error;
|
bool like_error;
|
||||||
char buff1[MAX_FIELD_WIDTH],*min_str,*max_str;
|
char buff1[MAX_FIELD_WIDTH],*min_str,*max_str;
|
||||||
String tmp(buff1,sizeof(buff1)),*res;
|
String tmp(buff1,sizeof(buff1)),*res;
|
||||||
@ -971,7 +974,8 @@ get_mm_leaf(Field *field,KEY_PART *key_part,
|
|||||||
max_str+maybe_null,&min_length,&max_length);
|
max_str+maybe_null,&min_length,&max_length);
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
like_error=like_range(res->ptr(),res->length(),wild_prefix,field_length,
|
like_error=like_range(res->ptr(),res->length(),wild_prefix,
|
||||||
|
field_length,
|
||||||
min_str+offset,max_str+offset,
|
min_str+offset,max_str+offset,
|
||||||
max_sort_char,&min_length,&max_length);
|
max_sort_char,&min_length,&max_length);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user