Commit a5ecdeba authored by unknown's avatar unknown

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
parents 6642eb05 2de5c141
...@@ -21,27 +21,46 @@ EXTRA_DIST = FINISH.sh \ ...@@ -21,27 +21,46 @@ EXTRA_DIST = FINISH.sh \
SETUP.sh \ SETUP.sh \
autorun.sh \ autorun.sh \
check-cpu \ check-cpu \
cleanup \
compile-alpha \ compile-alpha \
compile-alpha-ccc \ compile-alpha-ccc \
compile-alpha-cxx \ compile-alpha-cxx \
compile-alpha-debug \ compile-alpha-debug \
compile-amd64-debug-max \
compile-amd64-max \
compile-darwin-mwcc \
compile-dist \
compile-hpux11-parisc2-aCC \
compile-ia64-debug-max \ compile-ia64-debug-max \
compile-irix-mips64-mipspro \
compile-pentium \ compile-pentium \
compile-pentium-debug \ compile-pentium-debug \
compile-pentium-debug-max \ compile-pentium-debug-max \
compile-pentium-debug-max-no-embedded \
compile-pentium-debug-max-no-ndb \
compile-pentium-debug-no-bdb \ compile-pentium-debug-no-bdb \
compile-pentium-debug-openssl \ compile-pentium-debug-openssl \
compile-pentium-debug-yassl \ compile-pentium-debug-yassl \
compile-pentium-gcov \ compile-pentium-gcov \
compile-pentium-gprof \ compile-pentium-gprof \
compile-pentium-icc \
compile-pentium-icc-valgrind-max \
compile-pentium-icc-yassl \
compile-pentium-max \ compile-pentium-max \
compile-pentium-myodbc \ compile-pentium-myodbc \
compile-pentium-mysqlfs-debug \ compile-pentium-mysqlfs-debug \
compile-pentium-pgcc \ 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 \
compile-solaris-sparc-debug \ compile-solaris-sparc-debug \
compile-irix-mips64-mipspro \
compile-hpux11-parisc2-aCC \
compile-solaris-sparc-forte \ compile-solaris-sparc-forte \
compile-solaris-sparc-purify compile-solaris-sparc-purify
......
...@@ -145,6 +145,14 @@ sub run_stress_test () ...@@ -145,6 +145,14 @@ sub run_stress_test ()
mtr_add_arg($args, "--stress-init-file=%", $::opt_stress_init_file); 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 ) if ( $::opt_stress_loop_count )
{ {
mtr_add_arg($args, "--loop-count=%s", $::opt_stress_loop_count); mtr_add_arg($args, "--loop-count=%s", $::opt_stress_loop_count);
......
...@@ -277,9 +277,9 @@ our $opt_stress= ""; ...@@ -277,9 +277,9 @@ our $opt_stress= "";
our $opt_stress_suite= "main"; our $opt_stress_suite= "main";
our $opt_stress_mode= "random"; our $opt_stress_mode= "random";
our $opt_stress_threads= 5; our $opt_stress_threads= 5;
our $opt_stress_test_count= 20; our $opt_stress_test_count= 0;
our $opt_stress_loop_count= ""; our $opt_stress_loop_count= 0;
our $opt_stress_test_duration= ""; our $opt_stress_test_duration= 0;
our $opt_stress_init_file= ""; our $opt_stress_init_file= "";
our $opt_stress_test_file= ""; our $opt_stress_test_file= "";
......
...@@ -280,7 +280,7 @@ DO_STRESS="" ...@@ -280,7 +280,7 @@ DO_STRESS=""
STRESS_SUITE="main" STRESS_SUITE="main"
STRESS_MODE="random" STRESS_MODE="random"
STRESS_THREADS=5 STRESS_THREADS=5
STRESS_TEST_COUNT=20 STRESS_TEST_COUNT=""
STRESS_LOOP_COUNT="" STRESS_LOOP_COUNT=""
STRESS_TEST_DURATION="" STRESS_TEST_DURATION=""
STRESS_INIT_FILE="" STRESS_INIT_FILE=""
...@@ -1917,7 +1917,7 @@ run_stress_test() ...@@ -1917,7 +1917,7 @@ run_stress_test()
--stress-basedir=$STRESS_BASEDIR \ --stress-basedir=$STRESS_BASEDIR \
--server-logs-dir=$STRESS_BASEDIR \ --server-logs-dir=$STRESS_BASEDIR \
--stress-mode=$STRESS_MODE \ --stress-mode=$STRESS_MODE \
--mysqltest=$BASEDIR/client/mysqltest \ --mysqltest=$CLIENT_BINDIR/mysqltest \
--threads=$STRESS_THREADS \ --threads=$STRESS_THREADS \
--verbose \ --verbose \
--cleanup \ --cleanup \
...@@ -1928,6 +1928,14 @@ run_stress_test() ...@@ -1928,6 +1928,14 @@ run_stress_test()
STRESS_TEST_ARGS="$STRESS_TEST_ARGS --stress-init-file=$STRESS_INIT_FILE" STRESS_TEST_ARGS="$STRESS_TEST_ARGS --stress-init-file=$STRESS_INIT_FILE"
fi 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 if [ -n "$STRESS_LOOP_COUNT" ] ; then
STRESS_TEST_ARGS="$STRESS_TEST_ARGS --loop-count=$STRESS_LOOP_COUNT" STRESS_TEST_ARGS="$STRESS_TEST_ARGS --loop-count=$STRESS_LOOP_COUNT"
fi fi
......
...@@ -85,3 +85,27 @@ sec_to_time(time_to_sec(t)) ...@@ -85,3 +85,27 @@ sec_to_time(time_to_sec(t))
13:00:00 13:00:00
09:00:00 09:00:00
drop table t1; 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'
...@@ -21,4 +21,18 @@ select t, time_to_sec(t),sec_to_time(time_to_sec(t)) from t1; ...@@ -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; select sec_to_time(time_to_sec(t)) from t1;
drop table 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 # End of 4.1 tests
...@@ -575,19 +575,35 @@ my_bool str_to_time(const char *str, uint length, MYSQL_TIME *l_time, ...@@ -575,19 +575,35 @@ my_bool str_to_time(const char *str, uint length, MYSQL_TIME *l_time,
/* Get fractional second part */ /* Get fractional second part */
if ((end-str) >= 2 && *str == '.' && my_isdigit(&my_charset_latin1,str[1])) 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'); str++; value=(uint) (uchar) (*str - '0');
while (++str != end && while (++str != end && my_isdigit(&my_charset_latin1, *str))
my_isdigit(&my_charset_latin1,str[0]) && {
field_length--) if (field_length-- > 0)
value=value*10 + (uint) (uchar) (*str - '0'); value= value*10 + (uint) (uchar) (*str - '0');
if (field_length) }
if (field_length > 0)
value*= (long) log_10_int[field_length]; value*= (long) log_10_int[field_length];
else if (field_length < 0)
*was_cut= 1;
date[4]=value; date[4]=value;
} }
else else
date[4]=0; 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) if (internal_format_positions[7] != 255)
{ {
/* Read a possible AM/PM */ /* Read a possible AM/PM */
......
...@@ -3014,25 +3014,6 @@ void ha_ndbcluster::position(const byte *record) ...@@ -3014,25 +3014,6 @@ void ha_ndbcluster::position(const byte *record)
} }
*buff++= 0; *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 else
......
...@@ -218,7 +218,6 @@ class MYSQL_LOG: public TC_LOG ...@@ -218,7 +218,6 @@ class MYSQL_LOG: public TC_LOG
uint file_id; uint file_id;
uint open_count; // For replication uint open_count; // For replication
int readers_count; int readers_count;
bool reset_pending;
bool write_error, inited; bool write_error, inited;
bool need_start_event; bool need_start_event;
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment