summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.bzrignore8
-rw-r--r--myisam/mi_rkey.c1
-rw-r--r--myisam/mi_test_all.res70
-rwxr-xr-xmyisam/mi_test_all.sh3
-rw-r--r--sql/sql_select.cc16
5 files changed, 56 insertions, 42 deletions
diff --git a/.bzrignore b/.bzrignore
index 6dd06504096..9bd62bef525 100644
--- a/.bzrignore
+++ b/.bzrignore
@@ -1,3 +1,5 @@
+*.Plo
+*.Po
*.a
*.bb
*.bbg
@@ -11,6 +13,8 @@
*.reject
*.spec
*/*_pure_*warnings
+*/.deps
+*/.libs/*
*/.pure
*~
.*.swp
@@ -336,6 +340,7 @@ isam/test2
isam/test3
libmysql/*.c
libmysql/conf_to_src
+libmysql/libmysql.ver
libmysql/my_static.h
libmysql/my_time.c
libmysql/mysys_priv.h
@@ -443,6 +448,7 @@ libmysqld/sql_insert.cc
libmysqld/sql_lex.cc
libmysqld/sql_list.cc
libmysqld/sql_load.cc
+libmysqld/sql_locale.cc
libmysqld/sql_manager.cc
libmysqld/sql_map.cc
libmysqld/sql_olap.cc
@@ -1057,5 +1063,3 @@ vio/test-ssl
vio/test-sslclient
vio/test-sslserver
vio/viotest-ssl
-libmysql/libmysql.ver
-libmysqld/sql_locale.cc
diff --git a/myisam/mi_rkey.c b/myisam/mi_rkey.c
index 17f06437cd0..b2d40288645 100644
--- a/myisam/mi_rkey.c
+++ b/myisam/mi_rkey.c
@@ -132,7 +132,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/myisam/mi_test_all.res b/myisam/mi_test_all.res
index 94355bf1aa2..5c0d05cc977 100644
--- a/myisam/mi_test_all.res
+++ b/myisam/mi_test_all.res
@@ -5,46 +5,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 17 0 0
-write 850 0 0
-update 85 0 0
-delete 850 0 0
-close 17 0 0
-extra 102 0 0
-Total 1921 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 18 0 0
-write 900 0 0
-update 90 0 0
-delete 900 0 0
-close 18 0 0
-extra 108 0 0
-Total 2034 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 0m1.054s
-user 0m0.410s
-sys 0m0.640s
+real 0m0.221s
+user 0m0.120s
+sys 0m0.100s
-real 0m1.077s
-user 0m0.550s
-sys 0m0.530s
+real 0m0.222s
+user 0m0.140s
+sys 0m0.084s
-real 0m1.100s
-user 0m0.420s
-sys 0m0.680s
+real 0m0.232s
+user 0m0.112s
+sys 0m0.120s
-real 0m0.783s
-user 0m0.590s
-sys 0m0.200s
+real 0m0.163s
+user 0m0.116s
+sys 0m0.036s
-real 0m0.764s
-user 0m0.560s
-sys 0m0.210s
+real 0m0.159s
+user 0m0.136s
+sys 0m0.020s
-real 0m0.699s
-user 0m0.570s
-sys 0m0.130s
+real 0m0.147s
+user 0m0.132s
+sys 0m0.016s
-real 0m0.991s
-user 0m0.630s
-sys 0m0.350s
+real 0m0.211s
+user 0m0.124s
+sys 0m0.088s
diff --git a/myisam/mi_test_all.sh b/myisam/mi_test_all.sh
index 07e71d65675..c1fb12d7c3b 100755
--- a/myisam/mi_test_all.sh
+++ b/myisam/mi_test_all.sh
@@ -79,7 +79,8 @@ myisamchk$suffix -se test1
# 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
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index ecb9b5b7fe8..39abef97bb4 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -9083,6 +9083,8 @@ setup_copy_fields(THD *thd, TMP_TABLE_PARAM *param,
param->copy_funcs.empty();
for (i= 0; (pos= li++); i++)
{
+ Field *field;
+ char *tmp;
if (pos->type() == Item::FIELD_ITEM)
{
Item_field *item;
@@ -9111,14 +9113,22 @@ 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);
- 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;
copy->set(tmp, item->result_field);
item->result_field->move_field(copy->to_ptr,copy->to_null_ptr,1);
- copy++;
+#ifdef HAVE_purify
+ copy->to_ptr[copy->from_length]= 0;
+#endif
+ copy++;
}
}
else if ((pos->type() == Item::FUNC_ITEM ||