summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <istruewing@chilla.local>2006-09-19 14:33:29 +0200
committerunknown <istruewing@chilla.local>2006-09-19 14:33:29 +0200
commita84f71b9c72304bfab097ec53da137b5da7c1682 (patch)
treedcb06400a64a83a034aa2a68c0e6f4623a8da592
parent3d4b52ef28e87fa1867141ac12b66ea66370b68e (diff)
parent11ba3204e12141ed280e860acb6b050f7fffd235 (diff)
downloadmariadb-git-a84f71b9c72304bfab097ec53da137b5da7c1682.tar.gz
Merge chilla.local:/home/mydev/mysql-5.0-bug14400-monty
into chilla.local:/home/mydev/mysql-5.1-bug14400-monty BitKeeper/etc/ignore: auto-union include/my_global.h: Auto merged mysql-test/r/myisam.result: Auto merged mysql-test/t/myisam.test: Auto merged sql/handler.cc: Auto merged sql/opt_range.cc: Auto merged sql/sql_select.cc: Auto merged storage/myisam/mi_rkey.c: Auto merged storage/myisam/mi_test_all.res: Auto merged storage/myisam/mi_test_all.sh: Merge from 5.0.
-rw-r--r--.bzrignore2
-rw-r--r--sql/sql_select.cc26
-rw-r--r--storage/myisam/mi_rkey.c1
-rw-r--r--storage/myisam/mi_test_all.res70
-rwxr-xr-xstorage/myisam/mi_test_all.sh3
5 files changed, 57 insertions, 45 deletions
diff --git a/.bzrignore b/.bzrignore
index f32b85ce6af..af3106b98f3 100644
--- a/.bzrignore
+++ b/.bzrignore
@@ -34,6 +34,8 @@
*.vcproj
*/*.dir/*
*/*_pure_*warnings
+*/.deps
+*/.libs/*
*/.pure
*/debug/*
*/release/*
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index a280b290019..70170e6d106 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -13313,6 +13313,8 @@ setup_copy_fields(THD *thd, TMP_TABLE_PARAM *param,
param->copy_funcs.empty();
for (i= 0; (pos= li++); i++)
{
+ Field *field;
+ char *tmp;
Item *real_pos= pos->real_item();
if (real_pos->type() == Item::FIELD_ITEM)
{
@@ -13343,17 +13345,25 @@ setup_copy_fields(THD *thd, TMP_TABLE_PARAM *param,
set up save buffer and change result_field to point at
saved value
*/
- Field *field= item->field;
+ field= item->field;
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)
goto err;
- if (copy)
- {
- copy->set(tmp, item->result_field);
- item->result_field->move_field(copy->to_ptr,copy->to_null_ptr,1);
- copy++;
- }
+ if (copy)
+ {
+ copy->set(tmp, item->result_field);
+ 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++;
+ }
}
}
else if ((real_pos->type() == Item::FUNC_ITEM ||
diff --git a/storage/myisam/mi_rkey.c b/storage/myisam/mi_rkey.c
index 3a58b17a983..43be34f6ebb 100644
--- a/storage/myisam/mi_rkey.c
+++ b/storage/myisam/mi_rkey.c
@@ -133,7 +133,6 @@ int mi_rkey(MI_INFO *info, byte *buf, int inx, const byte *key, uint key_len,
}
}
}
-
if (share->concurrent_insert)
rw_unlock(&share->key_root_lock[inx]);
diff --git a/storage/myisam/mi_test_all.res b/storage/myisam/mi_test_all.res
index 16b517d3f76..4a22809b45f 100644
--- a/storage/myisam/mi_test_all.res
+++ b/storage/myisam/mi_test_all.res
@@ -8,46 +8,46 @@ myisamchk: MyISAM file test2
myisamchk: warning: Datafile is almost full, 65532 of 65534 used
MyISAM-table 'test2' is usable but should be fixed
Commands Used count Errors Recover errors
-open 1 0 0
-write 50 0 0
-update 5 0 0
-delete 50 0 0
-close 1 0 0
-extra 6 0 0
-Total 113 0 0
+open 7 0 0
+write 350 0 0
+update 35 0 0
+delete 350 0 0
+close 7 0 0
+extra 42 0 0
+Total 791 0 0
Commands Used count Errors Recover errors
-open 2 0 0
-write 100 0 0
-update 10 0 0
-delete 100 0 0
-close 2 0 0
-extra 12 0 0
-Total 226 0 0
+open 8 0 0
+write 400 0 0
+update 40 0 0
+delete 400 0 0
+close 8 0 0
+extra 48 0 0
+Total 904 0 0
-real 0m0.791s
-user 0m0.137s
-sys 0m0.117s
+real 0m0.221s
+user 0m0.120s
+sys 0m0.100s
-real 0m0.659s
-user 0m0.252s
-sys 0m0.102s
+real 0m0.222s
+user 0m0.140s
+sys 0m0.084s
-real 0m0.571s
-user 0m0.188s
-sys 0m0.098s
+real 0m0.232s
+user 0m0.112s
+sys 0m0.120s
-real 0m1.111s
-user 0m0.236s
-sys 0m0.037s
+real 0m0.163s
+user 0m0.116s
+sys 0m0.036s
-real 0m0.621s
-user 0m0.242s
-sys 0m0.022s
+real 0m0.159s
+user 0m0.136s
+sys 0m0.020s
-real 0m0.698s
-user 0m0.248s
-sys 0m0.021s
+real 0m0.147s
+user 0m0.132s
+sys 0m0.016s
-real 0m0.683s
-user 0m0.265s
-sys 0m0.079s
+real 0m0.211s
+user 0m0.124s
+sys 0m0.088s
diff --git a/storage/myisam/mi_test_all.sh b/storage/myisam/mi_test_all.sh
index 62eaff2dab6..5989d9cfaf0 100755
--- a/storage/myisam/mi_test_all.sh
+++ b/storage/myisam/mi_test_all.sh
@@ -79,7 +79,8 @@ if test -f mi_test1$MACH ; then suffix=$MACH ; else suffix=""; fi
# check of myisampack / myisamchk
./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 -es test1
./myisamchk$suffix -rs test1