diff options
author | unknown <guilhem@mysql.com> | 2005-11-07 16:18:46 +0100 |
---|---|---|
committer | unknown <guilhem@mysql.com> | 2005-11-07 16:18:46 +0100 |
commit | 50f48187f2f135b458aee47c561b3afe7df5aa07 (patch) | |
tree | 7b70cea20c3b819b996a804ba53efafcba9e279a | |
parent | 21447f17e63d84830f6346aca4877db30215c67d (diff) | |
download | mariadb-git-50f48187f2f135b458aee47c561b3afe7df5aa07.tar.gz |
Fix for BUG#14703 "Valgrind error when inserting 0 into a BIT column (like in type_bit.test)":
test "length" first (otherwise when "length" is 0, the *from invalid access still triggers a Valgrind warning).
I wrote to the Valgrind authors in case this is something fixable in Valgrind (normally the
decision to issue a warning is based on the simulated CPU condition code, which should not be undefined here).
BUILD/compile-pentium64-valgrind-max:
putting this script in sync with compile-pentium-valgrind-max, otherwise we didn't have the federated engine compiled in.
mysql-test/r/read_only.result:
result update
sql/field.cc:
To avoid a Valgrind warning running the type_bit test: test "length" first (otherwise when "length" is 0, the *from invalid access still triggers a Valgrind warning).
-rwxr-xr-x | BUILD/compile-pentium64-valgrind-max | 4 | ||||
-rw-r--r-- | mysql-test/r/read_only.result | 2 | ||||
-rw-r--r-- | sql/field.cc | 4 |
3 files changed, 6 insertions, 4 deletions
diff --git a/BUILD/compile-pentium64-valgrind-max b/BUILD/compile-pentium64-valgrind-max index 2e4ff8e0082..ef932920130 100755 --- a/BUILD/compile-pentium64-valgrind-max +++ b/BUILD/compile-pentium64-valgrind-max @@ -3,13 +3,13 @@ path=`dirname $0` . "$path/SETUP.sh" -extra_flags="$pentium64_cflags $debug_cflags -USAFEMALLOC -UFORCE_INIT_OF_VARS -DHAVE_purify -DMYSQL_SERVER_SUFFIX=-valgrind-max" +extra_flags="$pentium64_cflags $debug_cflags $max_cflags -USAFEMALLOC -UFORCE_INIT_OF_VARS -DHAVE_purify -DMYSQL_SERVER_SUFFIX=-valgrind-max" c_warnings="$c_warnings $debug_extra_warnings" cxx_warnings="$cxx_warnings $debug_extra_warnings" extra_configs="$pentium_configs $debug_configs" # We want to test isam when building with valgrind -extra_configs="$extra_configs --with-berkeley-db --with-innodb --with-isam --with-embedded-server --with-openssl --with-raid --with-ndbcluster" +extra_configs="$extra_configs $max_leave_isam_configs --with-isam" . "$path/FINISH.sh" diff --git a/mysql-test/r/read_only.result b/mysql-test/r/read_only.result index 09a0861e0c4..55a14bcaec8 100644 --- a/mysql-test/r/read_only.result +++ b/mysql-test/r/read_only.result @@ -14,6 +14,8 @@ create table t3 (a int); ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement insert into t1 values(1); ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement +update t1 set a=1 where 1=0; +ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement update t1,t2 set t1.a=t2.a+1 where t1.a=t2.a; ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement delete t1,t2 from t1,t2 where t1.a=t2.a; diff --git a/sql/field.cc b/sql/field.cc index 03d20b4bfe2..18ef77230f2 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -7931,7 +7931,7 @@ int Field_bit::store(const char *from, uint length, CHARSET_INFO *cs) { int delta; - for (; !*from && length; from++, length--); // skip left 0's + for (; length && !*from; from++, length--); // skip left 0's delta= field_length - length; if (delta < -1 || @@ -8151,7 +8151,7 @@ int Field_bit_as_char::store(const char *from, uint length, CHARSET_INFO *cs) int delta; uchar bits= create_length & 7; - for (; !*from && length; from++, length--); // skip left 0's + for (; length && !*from; from++, length--); // skip left 0's delta= field_length - length; if (delta < 0 || |