Commit 08f4565e authored by unknown's avatar unknown

Merge chilla.local:/home/mydev/mysql-4.1-bug14400-monty

into  chilla.local:/home/mydev/mysql-5.0-bug14400-monty


BitKeeper/etc/ignore:
  auto-union
include/my_global.h:
  Auto merged
myisam/mi_rkey.c:
  Auto merged
mysql-test/r/myisam.result:
  Auto merged
mysql-test/t/myisam.test:
  Auto merged
myisam/mi_test_all.res:
  Manual merge from 4.1.
sql/sql_select.cc:
  Manual merge from 4.1.
parents 06ced7c1 82a72ee1
...@@ -31,6 +31,8 @@ ...@@ -31,6 +31,8 @@
*.vcproj *.vcproj
*/*.dir/* */*.dir/*
*/*_pure_*warnings */*_pure_*warnings
*/.deps
*/.libs/*
*/.pure */.pure
*/debug/* */debug/*
*/release/* */release/*
......
...@@ -133,7 +133,6 @@ int mi_rkey(MI_INFO *info, byte *buf, int inx, const byte *key, uint key_len, ...@@ -133,7 +133,6 @@ int mi_rkey(MI_INFO *info, byte *buf, int inx, const byte *key, uint key_len,
} }
} }
} }
if (share->concurrent_insert) if (share->concurrent_insert)
rw_unlock(&share->key_root_lock[inx]); rw_unlock(&share->key_root_lock[inx]);
......
...@@ -8,46 +8,46 @@ myisamchk: MyISAM file test2 ...@@ -8,46 +8,46 @@ myisamchk: MyISAM file test2
myisamchk: warning: Datafile is almost full, 65532 of 65534 used myisamchk: warning: Datafile is almost full, 65532 of 65534 used
MyISAM-table 'test2' is usable but should be fixed MyISAM-table 'test2' is usable but should be fixed
Commands Used count Errors Recover errors Commands Used count Errors Recover errors
open 1 0 0 open 7 0 0
write 50 0 0 write 350 0 0
update 5 0 0 update 35 0 0
delete 50 0 0 delete 350 0 0
close 1 0 0 close 7 0 0
extra 6 0 0 extra 42 0 0
Total 113 0 0 Total 791 0 0
Commands Used count Errors Recover errors Commands Used count Errors Recover errors
open 2 0 0 open 8 0 0
write 100 0 0 write 400 0 0
update 10 0 0 update 40 0 0
delete 100 0 0 delete 400 0 0
close 2 0 0 close 8 0 0
extra 12 0 0 extra 48 0 0
Total 226 0 0 Total 904 0 0
real 0m0.791s real 0m0.221s
user 0m0.137s user 0m0.120s
sys 0m0.117s sys 0m0.100s
real 0m0.659s real 0m0.222s
user 0m0.252s user 0m0.140s
sys 0m0.102s sys 0m0.084s
real 0m0.571s real 0m0.232s
user 0m0.188s user 0m0.112s
sys 0m0.098s sys 0m0.120s
real 0m1.111s real 0m0.163s
user 0m0.236s user 0m0.116s
sys 0m0.037s sys 0m0.036s
real 0m0.621s real 0m0.159s
user 0m0.242s user 0m0.136s
sys 0m0.022s sys 0m0.020s
real 0m0.698s real 0m0.147s
user 0m0.248s user 0m0.132s
sys 0m0.021s sys 0m0.016s
real 0m0.683s real 0m0.211s
user 0m0.265s user 0m0.124s
sys 0m0.079s sys 0m0.088s
...@@ -79,7 +79,8 @@ myisamchk$suffix -se test1 ...@@ -79,7 +79,8 @@ myisamchk$suffix -se test1
# check of myisampack / myisamchk # check of myisampack / myisamchk
myisampack$suffix --force -s test1 myisampack$suffix --force -s test1
myisamchk$suffix -es test1 # Ignore error for index file
myisamchk$suffix -es test1 2>&1 >& /dev/null
myisamchk$suffix -rqs test1 myisamchk$suffix -rqs test1
myisamchk$suffix -es test1 myisamchk$suffix -es test1
myisamchk$suffix -rs test1 myisamchk$suffix -rs test1
......
...@@ -13189,6 +13189,8 @@ setup_copy_fields(THD *thd, TMP_TABLE_PARAM *param, ...@@ -13189,6 +13189,8 @@ setup_copy_fields(THD *thd, TMP_TABLE_PARAM *param,
param->copy_funcs.empty(); param->copy_funcs.empty();
for (i= 0; (pos= li++); i++) for (i= 0; (pos= li++); i++)
{ {
Field *field;
char *tmp;
Item *real_pos= pos->real_item(); Item *real_pos= pos->real_item();
if (real_pos->type() == Item::FIELD_ITEM) if (real_pos->type() == Item::FIELD_ITEM)
{ {
...@@ -13219,19 +13221,26 @@ setup_copy_fields(THD *thd, TMP_TABLE_PARAM *param, ...@@ -13219,19 +13221,26 @@ setup_copy_fields(THD *thd, TMP_TABLE_PARAM *param,
set up save buffer and change result_field to point at set up save buffer and change result_field to point at
saved value saved value
*/ */
Field *field= item->field; field= item->field;
item->result_field=field->new_field(thd->mem_root,field->table, 1); item->result_field=field->new_field(thd->mem_root,field->table, 1);
char *tmp=(char*) sql_alloc(field->pack_length()+1); /*
We need to allocate one extra byte for null handling and
another extra byte to not get warnings from purify in
Field_string::val_int
*/
tmp= (char*) sql_alloc(field->pack_length()+2);
if (!tmp) if (!tmp)
goto err; goto err;
if (copy) if (copy)
{ {
copy->set(tmp, item->result_field); copy->set(tmp, item->result_field);
item->result_field->move_field(copy->to_ptr,copy->to_null_ptr,1); item->result_field->move_field(copy->to_ptr,copy->to_null_ptr,1);
#ifdef HAVE_purify
copy->to_ptr[copy->from_length]= 0;
#endif
copy++; copy++;
} }
} }
}
else if ((real_pos->type() == Item::FUNC_ITEM || else if ((real_pos->type() == Item::FUNC_ITEM ||
real_pos->type() == Item::SUBSELECT_ITEM || real_pos->type() == Item::SUBSELECT_ITEM ||
real_pos->type() == Item::CACHE_ITEM || real_pos->type() == Item::CACHE_ITEM ||
......
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