Commit 1e80c3f3 authored by monty@donna.mysql.fi's avatar monty@donna.mysql.fi

Don't use ranges on HEAP tables with LIKE

Don't reconnect client on close
parent 561c18c1
...@@ -1657,6 +1657,7 @@ mysql_close(MYSQL *mysql) ...@@ -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 ...@@ -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) ...@@ -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 ...@@ -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) ...@@ -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) ...@@ -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, ...@@ -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, ...@@ -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);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment