summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <kent@mysql.com>2005-12-18 18:11:19 +0100
committerunknown <kent@mysql.com>2005-12-18 18:11:19 +0100
commita5ecdebac3b38ca7948d9db774107d6a35a41726 (patch)
tree1ca0d28c71d28d724dff4b9f4f3199ee9db00288
parent6642eb0581cec439c2e783f6a9d99bb938e1f6b6 (diff)
parent2de5c141627638ad375c1911f9a4a0b378599f4f (diff)
downloadmariadb-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.am23
-rw-r--r--mysql-test/lib/mtr_stress.pl8
-rwxr-xr-xmysql-test/mysql-test-run.pl6
-rw-r--r--mysql-test/mysql-test-run.sh12
-rw-r--r--mysql-test/r/type_time.result24
-rw-r--r--mysql-test/t/type_time.test14
-rw-r--r--sql-common/my_time.c28
-rw-r--r--sql/ha_ndbcluster.cc19
-rw-r--r--sql/sql_class.h1
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;
/*