summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mysql-test/r/innodb.result8
-rw-r--r--mysys/mf_pack.c26
-rw-r--r--sql/log_event.cc6
-rw-r--r--sql/slave.cc32
-rw-r--r--sql/sql_repl.cc5
-rw-r--r--sql/sql_select.cc14
6 files changed, 46 insertions, 45 deletions
diff --git a/mysql-test/r/innodb.result b/mysql-test/r/innodb.result
index 9d1c232e830..465d4faf0bc 100644
--- a/mysql-test/r/innodb.result
+++ b/mysql-test/r/innodb.result
@@ -156,7 +156,7 @@ level id parent_id
1 1007 101
optimize table t1;
Table Op Msg_type Msg_text
-test.t1 optimize error The handler for the table doesn't support optimize
+test.t1 optimize status OK
show keys from t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
t1 0 PRIMARY 1 id A 87 NULL NULL BTREE
@@ -180,7 +180,7 @@ create table t1 (a int) type=innodb;
insert into t1 values (1), (2);
optimize table t1;
Table Op Msg_type Msg_text
-test.t1 optimize error The handler for the table doesn't support optimize
+test.t1 optimize status OK
delete from t1 where a = 1;
select * from t1;
a
@@ -712,7 +712,7 @@ world 2
hello 1
optimize table t1;
Table Op Msg_type Msg_text
-test.t1 optimize error The handler for the table doesn't support optimize
+test.t1 optimize status OK
show keys from t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
t1 0 PRIMARY 1 a A 2 NULL NULL BTREE
@@ -1240,7 +1240,7 @@ t1 range c c 5 NULL 1 Using where
update t1 set c=a;
explain select * from t1 where c between 1 and 10000;
table type possible_keys key key_len ref rows Extra
-t1 ALL c NULL NULL NULL 29537 Using where
+t1 ALL c NULL NULL NULL 27682 Using where
drop table t1,t2;
create table t1 (id int primary key auto_increment, fk int, index index_fk (fk)) type=innodb;
insert into t1 (id) values (null),(null),(null),(null),(null);
diff --git a/mysys/mf_pack.c b/mysys/mf_pack.c
index 8fba14f626b..b3aa347006e 100644
--- a/mysys/mf_pack.c
+++ b/mysys/mf_pack.c
@@ -253,15 +253,27 @@ void symdirget(char *dir)
}
#endif /* USE_SYMDIR */
- /* Unpacks dirname to name that can be used by open... */
- /* Make that last char of to is '/' if from not empty and
- from doesn't end in FN_DEVCHAR */
- /* Uses cleanup_dirname and changes ~/.. to home_dir/.. */
- /* Returns length of new directory */
-uint unpack_dirname(my_string to, const char *from)
+/*
+ Fixes a directroy name so that can be used by open()
+
+ SYNOPSIS
+ unpack_dirname()
+ to Store result here. May be = from
+ from 'Packed' directory name (may contain ~)
+
+ IMPLEMENTATION
+ Make that last char of to is '/' if from not empty and
+ from doesn't end in FN_DEVCHAR
+ Uses cleanup_dirname and changes ~/.. to home_dir/..
- /* to may be == from */
+ Changes a UNIX filename to system filename (replaces / with \ on windows)
+
+ RETURN
+ Length of new directory name (= length of to)
+*/
+
+uint unpack_dirname(my_string to, const char *from)
{
uint length,h_length;
char buff[FN_REFLEN+1+4],*suffix,*tilde_expansion;
diff --git a/sql/log_event.cc b/sql/log_event.cc
index 727b2052969..53289888242 100644
--- a/sql/log_event.cc
+++ b/sql/log_event.cc
@@ -100,7 +100,7 @@ static void pretty_print_str(String* packet, char* str, int len)
static inline char* slave_load_file_stem(char*buf, uint file_id,
int event_server_id)
{
- fn_format(buf,"SQL_LOAD-",slave_load_tmpdir,"",0); /* 4+32); */
+ fn_format(buf,"SQL_LOAD-",slave_load_tmpdir, "", MY_UNPACK_FILENAME);
buf = strend(buf);
buf = int10_to_str(::server_id, buf, 10);
*buf++ = '-';
@@ -174,16 +174,16 @@ static void cleanup_load_tmpdir()
file=dirp->dir_entry+i;
if (is_prefix(file->name,"SQL_LOAD-"))
{
- fn_format(fname,file->name,slave_load_tmpdir,"",0);
+ fn_format(fname,file->name,slave_load_tmpdir,"",MY_UNPACK_FILENAME);
my_delete(fname, MYF(0));
}
}
my_dirend(dirp);
}
-
#endif
+
Log_event::Log_event(const char* buf, bool old_format)
:temp_buf(0), cached_event_len(0), cache_stmt(0)
{
diff --git a/sql/slave.cc b/sql/slave.cc
index 6c29d1a98bc..fe668900da0 100644
--- a/sql/slave.cc
+++ b/sql/slave.cc
@@ -134,7 +134,7 @@ int init_slave()
goto err;
}
- if(init_master_info(active_mi,master_info_file,relay_log_info_file,
+ if (init_master_info(active_mi,master_info_file,relay_log_info_file,
!master_host))
{
sql_print_error("Failed to initialize the master info structure");
@@ -1777,18 +1777,17 @@ int st_relay_log_info::wait_for_pos(THD* thd, String* log_name,
pthread_mutex_lock(&data_lock);
/*
- This function will abort when it notices that
- some CHANGE MASTER or RESET MASTER has changed
- the master info. To catch this, these commands
- modify abort_pos_wait ; we just monitor abort_pos_wait
- and see if it has changed.
- Why do we have this mechanism instead of simply monitoring slave_running in
- the loop (we do this too), as CHANGE MASTER/RESET SLAVE require that the
- SQL thread be stopped? This is in case
+ This function will abort when it notices that some CHANGE MASTER or
+ RESET MASTER has changed the master info.
+ To catch this, these commands modify abort_pos_wait ; We just monitor
+ abort_pos_wait and see if it has changed.
+ Why do we have this mechanism instead of simply monitoring slave_running
+ in the loop (we do this too), as CHANGE MASTER/RESET SLAVE require that
+ the SQL thread be stopped?
+ This is becasue if someones does:
STOP SLAVE;CHANGE MASTER/RESET SLAVE; START SLAVE;
- happens very quickly between the moment pthread_cond_wait() wakes up and
- the while() is evaluated: in that case slave_running is again 1 when the
- while() is evaluated.
+ the change may happen very quickly and we may not notice that
+ slave_running briefly switches between 1/0/1.
*/
init_abort_pos_wait= abort_pos_wait;
@@ -1809,7 +1808,7 @@ int st_relay_log_info::wait_for_pos(THD* thd, String* log_name,
error= -2; //means improper arguments
goto err;
}
- //p points to '.'
+ /* p points to '.' */
log_name_extension= strtoul(++p, &p_end, 10);
/*
p_end points to the first invalid character.
@@ -1822,14 +1821,9 @@ int st_relay_log_info::wait_for_pos(THD* thd, String* log_name,
goto err;
}
- //"compare and wait" main loop
+ /* The "compare and wait" main loop */
while (!thd->killed &&
init_abort_pos_wait == abort_pos_wait &&
- /*
- formerly we tested mi->slave_running, but what we care about is
- rli->slave_running (because this concerns the SQL thread, while
- mi->slave_running concerns the I/O thread).
- */
slave_running)
{
bool pos_reached;
diff --git a/sql/sql_repl.cc b/sql/sql_repl.cc
index d0ed1a19d96..ae9bd8b7727 100644
--- a/sql/sql_repl.cc
+++ b/sql/sql_repl.cc
@@ -68,11 +68,6 @@ static int fake_rotate_event(NET* net, String* packet, char* log_file_name,
int4store(header + LOG_POS_OFFSET, 0);
packet->append(header, sizeof(header));
- /*
- An old comment said talked about a need for splitting the int8store below
- into 2 int4store because of a problem with cxx; I can't understand that as
- we already use int8store in Rotatel_log_event::write_data().
- */
int8store(buf+R_POS_OFFSET,position);
packet->append(buf, ROTATE_HEADER_LEN);
packet->append(p,ident_len);
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index 0e8b191e4ef..67bec77e245 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -1627,6 +1627,9 @@ add_key_part(DYNAMIC_ARRAY *keyuse_array,KEY_FIELD *key_field)
key_field->field->table->reginfo.not_exists_optimize=1;
}
+
+#define FT_KEYPART (MAX_REF_PARTS+10)
+
static void
add_ft_keys(DYNAMIC_ARRAY *keyuse_array,
JOIN_TAB *stat,COND *cond,table_map usable_tables)
@@ -1685,23 +1688,20 @@ add_ft_keys(DYNAMIC_ARRAY *keyuse_array,
}
}
- if (!cond_func || cond_func->key == NO_SUCH_KEY)
- return;
-
- if (!(usable_tables & cond_func->table->map))
+ if ((!cond_func || cond_func->key == NO_SUCH_KEY) ||
+ (!(usable_tables & cond_func->table->map)))
return;
KEYUSE keyuse;
-
keyuse.table= cond_func->table;
keyuse.val = cond_func;
keyuse.key = cond_func->key;
-#define FT_KEYPART (MAX_REF_PARTS+10)
- keyuse.keypart=FT_KEYPART;
+ keyuse.keypart= FT_KEYPART;
keyuse.used_tables=cond_func->key_item()->used_tables();
VOID(insert_dynamic(keyuse_array,(gptr) &keyuse));
}
+
static int
sort_keyuse(KEYUSE *a,KEYUSE *b)
{