Commit b0312896 authored by Michael Widenius's avatar Michael Widenius

Better warning message if lock test fails

Made archive.test a bit more safe



mysql-test/r/archive.result:
  Added removal of files to make rerun of failed test work
mysql-test/t/archive.test:
  Added removal of files to make rerun of failed test work
mysys/thr_lock.c:
  Better warning message if lock test fails
parent 52920994
...@@ -12717,6 +12717,7 @@ COUNT(t1.a) ...@@ -12717,6 +12717,7 @@ COUNT(t1.a)
729 729
DROP TABLE t1; DROP TABLE t1;
SET @@join_buffer_size= @save_join_buffer_size; SET @@join_buffer_size= @save_join_buffer_size;
flush tables;
SHOW CREATE TABLE t1; SHOW CREATE TABLE t1;
ERROR HY000: Table upgrade required. Please do "REPAIR TABLE `t1`" or dump/reload to fix it! ERROR HY000: Table upgrade required. Please do "REPAIR TABLE `t1`" or dump/reload to fix it!
SELECT * FROM t1; SELECT * FROM t1;
......
...@@ -1630,6 +1630,11 @@ SET @@join_buffer_size= @save_join_buffer_size; ...@@ -1630,6 +1630,11 @@ SET @@join_buffer_size= @save_join_buffer_size;
# BUG#47012 archive tables are not upgradeable, and server crashes on any access # BUG#47012 archive tables are not upgradeable, and server crashes on any access
# #
let $MYSQLD_DATADIR= `SELECT @@datadir`; let $MYSQLD_DATADIR= `SELECT @@datadir`;
# Remove files to handle possible restart of test
flush tables;
remove_files_wildcard $MYSQLD_DATADIR/test t1.*;
copy_file std_data/bug47012.frm $MYSQLD_DATADIR/test/t1.frm; copy_file std_data/bug47012.frm $MYSQLD_DATADIR/test/t1.frm;
copy_file std_data/bug47012.ARZ $MYSQLD_DATADIR/test/t1.ARZ; copy_file std_data/bug47012.ARZ $MYSQLD_DATADIR/test/t1.ARZ;
copy_file std_data/bug47012.ARM $MYSQLD_DATADIR/test/t1.ARM; copy_file std_data/bug47012.ARM $MYSQLD_DATADIR/test/t1.ARM;
......
...@@ -158,15 +158,13 @@ static int check_lock(struct st_lock_list *list, const char* lock_type, ...@@ -158,15 +158,13 @@ static int check_lock(struct st_lock_list *list, const char* lock_type,
{ {
THR_LOCK_DATA *data,**prev; THR_LOCK_DATA *data,**prev;
uint count=0; uint count=0;
THR_LOCK_OWNER *UNINIT_VAR(first_owner);
prev= &list->data; prev= &list->data;
if (list->data) if (list->data)
{ {
enum thr_lock_type last_lock_type=list->data->type; enum thr_lock_type last_lock_type= list->data->type;
THR_LOCK_OWNER first_owner= list->data->owner;
if (same_owner && list->data)
first_owner= list->data->owner;
for (data=list->data; data && count++ < MAX_LOCKS ; data=data->next) for (data=list->data; data && count++ < MAX_LOCKS ; data=data->next)
{ {
if (data->type != last_lock_type) if (data->type != last_lock_type)
...@@ -184,8 +182,8 @@ static int check_lock(struct st_lock_list *list, const char* lock_type, ...@@ -184,8 +182,8 @@ static int check_lock(struct st_lock_list *list, const char* lock_type,
last_lock_type != TL_WRITE_CONCURRENT_INSERT) last_lock_type != TL_WRITE_CONCURRENT_INSERT)
{ {
fprintf(stderr, fprintf(stderr,
"Warning: Found locks from different threads in %s: %s\n", "Warning: Found locks from different threads in %s at '%s'. org_lock_type: %d last_lock_type: %d new_lock_type: %d\n",
lock_type,where); lock_type, where, list->data->type, last_lock_type, data->type);
return 1; return 1;
} }
if (no_cond && data->cond) if (no_cond && data->cond)
......
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