diff options
author | unknown <kent@mysql.com> | 2005-12-18 18:11:19 +0100 |
---|---|---|
committer | unknown <kent@mysql.com> | 2005-12-18 18:11:19 +0100 |
commit | a5ecdebac3b38ca7948d9db774107d6a35a41726 (patch) | |
tree | 1ca0d28c71d28d724dff4b9f4f3199ee9db00288 | |
parent | 6642eb0581cec439c2e783f6a9d99bb938e1f6b6 (diff) | |
parent | 2de5c141627638ad375c1911f9a4a0b378599f4f (diff) | |
download | mariadb-git-a5ecdebac3b38ca7948d9db774107d6a35a41726.tar.gz |
Merge
configure.in:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
mysql-test/mysql-test-run.sh:
Auto merged
mysql-test/r/ndb_basic.result:
Auto merged
mysql-test/r/ndb_multi.result:
Auto merged
mysql-test/r/skip_name_resolve.result:
Auto merged
mysql-test/r/type_time.result:
Auto merged
mysql-test/t/ndb_basic.test:
Auto merged
mysql-test/t/ndb_multi.test:
Auto merged
mysql-test/t/skip_name_resolve.test:
Auto merged
sql/ha_ndbcluster.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/sp_head.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_class.h:
Auto merged
storage/ndb/src/ndbapi/NdbImpl.hpp:
Auto merged
storage/ndb/src/ndbapi/NdbRecAttr.cpp:
Auto merged
storage/ndb/src/ndbapi/ndb_cluster_connection.cpp:
Auto merged
tests/mysql_client_test.c:
Auto merged
zlib/Makefile.am:
Auto merged
-rw-r--r-- | BUILD/Makefile.am | 23 | ||||
-rw-r--r-- | mysql-test/lib/mtr_stress.pl | 8 | ||||
-rwxr-xr-x | mysql-test/mysql-test-run.pl | 6 | ||||
-rw-r--r-- | mysql-test/mysql-test-run.sh | 12 | ||||
-rw-r--r-- | mysql-test/r/type_time.result | 24 | ||||
-rw-r--r-- | mysql-test/t/type_time.test | 14 | ||||
-rw-r--r-- | sql-common/my_time.c | 28 | ||||
-rw-r--r-- | sql/ha_ndbcluster.cc | 19 | ||||
-rw-r--r-- | sql/sql_class.h | 1 |
9 files changed, 102 insertions, 33 deletions
diff --git a/BUILD/Makefile.am b/BUILD/Makefile.am index 45c1aaa1a76..a5f3623c25e 100644 --- a/BUILD/Makefile.am +++ b/BUILD/Makefile.am @@ -21,27 +21,46 @@ EXTRA_DIST = FINISH.sh \ SETUP.sh \ autorun.sh \ check-cpu \ + cleanup \ compile-alpha \ compile-alpha-ccc \ compile-alpha-cxx \ compile-alpha-debug \ + compile-amd64-debug-max \ + compile-amd64-max \ + compile-darwin-mwcc \ + compile-dist \ + compile-hpux11-parisc2-aCC \ compile-ia64-debug-max \ + compile-irix-mips64-mipspro \ compile-pentium \ compile-pentium-debug \ compile-pentium-debug-max \ + compile-pentium-debug-max-no-embedded \ + compile-pentium-debug-max-no-ndb \ compile-pentium-debug-no-bdb \ compile-pentium-debug-openssl \ compile-pentium-debug-yassl \ compile-pentium-gcov \ compile-pentium-gprof \ + compile-pentium-icc \ + compile-pentium-icc-valgrind-max \ + compile-pentium-icc-yassl \ compile-pentium-max \ compile-pentium-myodbc \ compile-pentium-mysqlfs-debug \ compile-pentium-pgcc \ + compile-pentium-valgrind-max \ + compile-pentium64-debug \ + compile-pentium64-debug-max \ + compile-pentium64-valgrind-max \ + compile-ppc \ + compile-ppc-debug \ + compile-ppc-debug-max \ + compile-ppc-debug-max-no-ndb \ + compile-ppc-max \ compile-solaris-sparc \ compile-solaris-sparc-debug \ - compile-irix-mips64-mipspro \ - compile-hpux11-parisc2-aCC \ compile-solaris-sparc-forte \ compile-solaris-sparc-purify diff --git a/mysql-test/lib/mtr_stress.pl b/mysql-test/lib/mtr_stress.pl index a57d94e8043..d3ed24db545 100644 --- a/mysql-test/lib/mtr_stress.pl +++ b/mysql-test/lib/mtr_stress.pl @@ -145,6 +145,14 @@ sub run_stress_test () mtr_add_arg($args, "--stress-init-file=%", $::opt_stress_init_file); } + if ( !$::opt_stress_loop_count && !$::opt_stress_test_count && + !$::opt_stress_test_duration ) + { + #Limit stress testing with 20 loops in case when any limit parameter + #was specified + $::opt_stress_test_count=20; + } + if ( $::opt_stress_loop_count ) { mtr_add_arg($args, "--loop-count=%s", $::opt_stress_loop_count); diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index a148e635ed7..0e390deb04a 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -277,9 +277,9 @@ our $opt_stress= ""; our $opt_stress_suite= "main"; our $opt_stress_mode= "random"; our $opt_stress_threads= 5; -our $opt_stress_test_count= 20; -our $opt_stress_loop_count= ""; -our $opt_stress_test_duration= ""; +our $opt_stress_test_count= 0; +our $opt_stress_loop_count= 0; +our $opt_stress_test_duration= 0; our $opt_stress_init_file= ""; our $opt_stress_test_file= ""; diff --git a/mysql-test/mysql-test-run.sh b/mysql-test/mysql-test-run.sh index f82427d8135..5fc8f50dd47 100644 --- a/mysql-test/mysql-test-run.sh +++ b/mysql-test/mysql-test-run.sh @@ -280,7 +280,7 @@ DO_STRESS="" STRESS_SUITE="main" STRESS_MODE="random" STRESS_THREADS=5 -STRESS_TEST_COUNT=20 +STRESS_TEST_COUNT="" STRESS_LOOP_COUNT="" STRESS_TEST_DURATION="" STRESS_INIT_FILE="" @@ -1917,7 +1917,7 @@ run_stress_test() --stress-basedir=$STRESS_BASEDIR \ --server-logs-dir=$STRESS_BASEDIR \ --stress-mode=$STRESS_MODE \ - --mysqltest=$BASEDIR/client/mysqltest \ + --mysqltest=$CLIENT_BINDIR/mysqltest \ --threads=$STRESS_THREADS \ --verbose \ --cleanup \ @@ -1928,6 +1928,14 @@ run_stress_test() STRESS_TEST_ARGS="$STRESS_TEST_ARGS --stress-init-file=$STRESS_INIT_FILE" fi + if [ -z "$STRESS_LOOP_COUNT" -a -z "$STRESS_TEST_COUNT" -a + -z "$STRESS_TEST_DURATION" ] ; then + + #Limit stress testing with 20 loops in case when any limit parameter + #was specified + STRESS_TEST_COUNT=20 + fi + if [ -n "$STRESS_LOOP_COUNT" ] ; then STRESS_TEST_ARGS="$STRESS_TEST_ARGS --loop-count=$STRESS_LOOP_COUNT" fi diff --git a/mysql-test/r/type_time.result b/mysql-test/r/type_time.result index ce820c0cb8e..4277920e4db 100644 --- a/mysql-test/r/type_time.result +++ b/mysql-test/r/type_time.result @@ -85,3 +85,27 @@ sec_to_time(time_to_sec(t)) 13:00:00 09:00:00 drop table t1; +SELECT CAST(235959.123456 AS TIME); +CAST(235959.123456 AS TIME) +23:59:59.123456 +SELECT CAST(0.235959123456e+6 AS TIME); +CAST(0.235959123456e+6 AS TIME) +23:59:59.123456 +SELECT CAST(235959123456e-6 AS TIME); +CAST(235959123456e-6 AS TIME) +23:59:59.123456 +SELECT CAST(235959.1234567 AS TIME); +CAST(235959.1234567 AS TIME) +23:59:59.123456 +Warnings: +Warning 1292 Truncated incorrect time value: '235959.1234567' +SELECT CAST(0.2359591234567e6 AS TIME); +CAST(0.2359591234567e6 AS TIME) +23:59:59.123456 +Warnings: +Warning 1292 Truncated incorrect time value: '235959.1234567' +SELECT CAST(0.2359591234567e+30 AS TIME); +CAST(0.2359591234567e+30 AS TIME) +NULL +Warnings: +Warning 1292 Truncated incorrect time value: '2.359591234567e+29' diff --git a/mysql-test/t/type_time.test b/mysql-test/t/type_time.test index 7ae3f65f7cc..9abfe914335 100644 --- a/mysql-test/t/type_time.test +++ b/mysql-test/t/type_time.test @@ -21,4 +21,18 @@ select t, time_to_sec(t),sec_to_time(time_to_sec(t)) from t1; select sec_to_time(time_to_sec(t)) from t1; drop table t1; +# +# BUG #12440: Incorrect processing of time values containing +# long fraction part and/or large exponent part. +# +# These must return normal result: +SELECT CAST(235959.123456 AS TIME); +SELECT CAST(0.235959123456e+6 AS TIME); +SELECT CAST(235959123456e-6 AS TIME); +# These must cut fraction part and produce warning: +SELECT CAST(235959.1234567 AS TIME); +SELECT CAST(0.2359591234567e6 AS TIME); +# This must return NULL and produce warning: +SELECT CAST(0.2359591234567e+30 AS TIME); + # End of 4.1 tests diff --git a/sql-common/my_time.c b/sql-common/my_time.c index 72809ee9b4b..c9d39260761 100644 --- a/sql-common/my_time.c +++ b/sql-common/my_time.c @@ -575,18 +575,34 @@ fractional: /* Get fractional second part */ if ((end-str) >= 2 && *str == '.' && my_isdigit(&my_charset_latin1,str[1])) { - uint field_length=5; + int field_length= 5; str++; value=(uint) (uchar) (*str - '0'); - while (++str != end && - my_isdigit(&my_charset_latin1,str[0]) && - field_length--) - value=value*10 + (uint) (uchar) (*str - '0'); - if (field_length) + while (++str != end && my_isdigit(&my_charset_latin1, *str)) + { + if (field_length-- > 0) + value= value*10 + (uint) (uchar) (*str - '0'); + } + if (field_length > 0) value*= (long) log_10_int[field_length]; + else if (field_length < 0) + *was_cut= 1; date[4]=value; } else date[4]=0; + + /* Check for exponent part: E<gigit> | E<sign><digit> */ + /* (may occur as result of %g formatting of time value) */ + if ((end - str) > 1 && + (*str == 'e' || *str == 'E') && + (my_isdigit(&my_charset_latin1, str[1]) || + ((str[1] == '-' || str[1] == '+') && + (end - str) > 2 && + my_isdigit(&my_charset_latin1, str[2])))) + { + *was_cut= 1; + return 1; + } if (internal_format_positions[7] != 255) { diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index d6d70431eea..fa432914477 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -3014,25 +3014,6 @@ void ha_ndbcluster::position(const byte *record) } *buff++= 0; } - size_t len = key_part->length; - const byte * ptr = record + key_part->offset; - Field *field = key_part->field; - if ((field->type() == MYSQL_TYPE_VARCHAR) && - ((Field_varstring*)field)->length_bytes == 1) - { - /** - * Keys always use 2 bytes length - */ - buff[0] = ptr[0]; - buff[1] = 0; - memcpy(buff+2, ptr + 1, len); - len += 2; - } - else - { - memcpy(buff, ptr, len); - } - buff += len; } } else diff --git a/sql/sql_class.h b/sql/sql_class.h index 693eb535ca6..7541829c4fa 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -218,7 +218,6 @@ class MYSQL_LOG: public TC_LOG uint file_id; uint open_count; // For replication int readers_count; - bool reset_pending; bool write_error, inited; bool need_start_event; /* |