Commit 09e97299 authored by Sergei Golubchik's avatar Sergei Golubchik

Merge branch '5.5' into 10.0

parents a737135a 31f1fe22
...@@ -170,7 +170,7 @@ MACRO (MYSQL_CHECK_SSL) ...@@ -170,7 +170,7 @@ MACRO (MYSQL_CHECK_SSL)
REGEX "^#define[\t ]+OPENSSL_VERSION_NUMBER[\t ]+0x[0-9].*" REGEX "^#define[\t ]+OPENSSL_VERSION_NUMBER[\t ]+0x[0-9].*"
) )
STRING(REGEX REPLACE STRING(REGEX REPLACE
"^.*OPENSSL_VERSION_NUMBER[\t ]+0x([0-9]).*$" "\\1" "^.*OPENSSL_VERSION_NUMBER[\t ]+0x([0-9][0-9][0-9]).*$" "\\1"
OPENSSL_MAJOR_VERSION "${OPENSSL_VERSION_NUMBER}" OPENSSL_MAJOR_VERSION "${OPENSSL_VERSION_NUMBER}"
) )
INCLUDE(CheckSymbolExists) INCLUDE(CheckSymbolExists)
...@@ -182,7 +182,8 @@ MACRO (MYSQL_CHECK_SSL) ...@@ -182,7 +182,8 @@ MACRO (MYSQL_CHECK_SSL)
SET(OPENSSL_FOUND FALSE) SET(OPENSSL_FOUND FALSE)
ENDIF() ENDIF()
IF(OPENSSL_FOUND AND HAVE_SHA512_DIGEST_LENGTH) IF(OPENSSL_FOUND AND OPENSSL_MAJOR_VERSION STRLESS "101" AND
HAVE_SHA512_DIGEST_LENGTH)
MESSAGE(STATUS "OPENSSL_INCLUDE_DIR = ${OPENSSL_INCLUDE_DIR}") MESSAGE(STATUS "OPENSSL_INCLUDE_DIR = ${OPENSSL_INCLUDE_DIR}")
MESSAGE(STATUS "OPENSSL_LIBRARIES = ${OPENSSL_LIBRARIES}") MESSAGE(STATUS "OPENSSL_LIBRARIES = ${OPENSSL_LIBRARIES}")
MESSAGE(STATUS "CRYPTO_LIBRARY = ${CRYPTO_LIBRARY}") MESSAGE(STATUS "CRYPTO_LIBRARY = ${CRYPTO_LIBRARY}")
......
...@@ -1152,7 +1152,7 @@ sub command_line_setup { ...@@ -1152,7 +1152,7 @@ sub command_line_setup {
'debug' => \$opt_debug, 'debug' => \$opt_debug,
'debug-common' => \$opt_debug_common, 'debug-common' => \$opt_debug_common,
'debug-server' => \$opt_debug_server, 'debug-server' => \$opt_debug_server,
'gdb' => \$opt_gdb, 'gdb=s' => \$opt_gdb,
'client-gdb' => \$opt_client_gdb, 'client-gdb' => \$opt_client_gdb,
'manual-gdb' => \$opt_manual_gdb, 'manual-gdb' => \$opt_manual_gdb,
'manual-lldb' => \$opt_manual_lldb, 'manual-lldb' => \$opt_manual_lldb,
...@@ -1247,6 +1247,9 @@ sub command_line_setup { ...@@ -1247,6 +1247,9 @@ sub command_line_setup {
'skip-test-list=s' => \@opt_skip_test_list 'skip-test-list=s' => \@opt_skip_test_list
); );
# fix options (that take an optional argument and *only* after = sign
my %fixopt = ( '--gdb' => '--gdb=#' );
@ARGV = map { $fixopt{$_} or $_ } @ARGV;
GetOptions(%options) or usage("Can't read options"); GetOptions(%options) or usage("Can't read options");
usage("") if $opt_usage; usage("") if $opt_usage;
list_options(\%options) if $opt_list_options; list_options(\%options) if $opt_list_options;
...@@ -6069,7 +6072,9 @@ sub gdb_arguments { ...@@ -6069,7 +6072,9 @@ sub gdb_arguments {
# Put $args into a single string # Put $args into a single string
$input = $input ? "< $input" : ""; $input = $input ? "< $input" : "";
if ($type ne 'client' and $opt_valgrind_mysqld) { if ($type eq 'client') {
mtr_tofile($gdb_init_file, "set args @$$args $input");
} elsif ($opt_valgrind_mysqld) {
my $v = $$exe; my $v = $$exe;
my $vargs = []; my $vargs = [];
valgrind_arguments($vargs, \$v); valgrind_arguments($vargs, \$v);
...@@ -6079,7 +6084,11 @@ shell sleep 1 ...@@ -6079,7 +6084,11 @@ shell sleep 1
target remote | /usr/lib64/valgrind/../../bin/vgdb target remote | /usr/lib64/valgrind/../../bin/vgdb
EOF EOF
} else { } else {
mtr_tofile($gdb_init_file, "set args @$$args $input\n"); mtr_tofile($gdb_init_file,
join("\n",
"set args @$$args $input",
split /;/, $opt_gdb || ""
));
} }
if ( $opt_manual_gdb ) if ( $opt_manual_gdb )
......
...@@ -1997,8 +1997,50 @@ select 0.0000000001 mod 1; ...@@ -1997,8 +1997,50 @@ select 0.0000000001 mod 1;
select 0.01 mod 1; select 0.01 mod 1;
0.01 mod 1 0.01 mod 1
0.01 0.01
CREATE TABLE t1 (
`FLD1` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD2` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD3` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD4` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD5` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD6` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD7` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD8` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD9` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD10` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD11` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD12` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD13` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD14` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD15` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD16` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD17` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD18` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD19` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD20` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD21` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD22` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD23` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000
);
INSERT INTO t1 VALUES (001.0760,000.9500,001.0000,001.0000,001.0000,
001.0000,001.0000,001.0000,001.0000,001.0000,001.0000,000.5949,001.0194,
001.0000,001.0000,001.0000,001.0000,001.0000,001.0000,000.9220,001.1890,001.2130,327.2690);
select FLD1*FLD2*FLD3*FLD4*FLD5*FLD6*FLD7*FLD8*FLD9*FLD10*FLD11*FLD12*FLD13*FLD14*FLD15*FLD16*FLD17*FLD18*FLD19*FLD20*FLD21*FLD22*FLD23 as calc1 from t1;
calc1
269.775757576440530322187032000000
select FLD23*FLD2*FLD1*FLD4*FLD5*FLD11*FLD12*FLD13*FLD3*FLD15*FLD16*FLD17*FLD18*FLD19*FLD20*FLD21*FLD22*FLD14*FLD6*FLD7*FLD8*FLD9*FLD10 as calc2 from t1;
calc2
269.775757576440530322187032000000
DROP TABLE t1;
CREATE TABLE t1 AS SELECT 1.0 * 2.000;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`1.0 * 2.000` decimal(6,4) NOT NULL DEFAULT '0.0000'
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
# #
# Start of 10.0 tests # End of 5.5 tests
# #
# #
# MDEV-6950 Bad results with joins comparing DATE and INT/ENUM/VARCHAR columns # MDEV-6950 Bad results with joins comparing DATE and INT/ENUM/VARCHAR columns
......
...@@ -1581,8 +1581,51 @@ select 0.000000000000000000000000000000000000000000000000001 mod 1; ...@@ -1581,8 +1581,51 @@ select 0.000000000000000000000000000000000000000000000000001 mod 1;
select 0.0000000001 mod 1; select 0.0000000001 mod 1;
select 0.01 mod 1; select 0.01 mod 1;
#
# MDEV-17256 Decimal field multiplication bug
#
CREATE TABLE t1 (
`FLD1` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD2` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD3` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD4` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD5` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD6` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD7` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD8` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD9` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD10` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD11` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD12` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD13` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD14` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD15` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD16` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD17` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD18` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD19` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD20` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD21` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD22` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000,
`FLD23` decimal(7,4) unsigned zerofill NOT NULL DEFAULT 001.0000
);
INSERT INTO t1 VALUES (001.0760,000.9500,001.0000,001.0000,001.0000,
001.0000,001.0000,001.0000,001.0000,001.0000,001.0000,000.5949,001.0194,
001.0000,001.0000,001.0000,001.0000,001.0000,001.0000,000.9220,001.1890,001.2130,327.2690);
select FLD1*FLD2*FLD3*FLD4*FLD5*FLD6*FLD7*FLD8*FLD9*FLD10*FLD11*FLD12*FLD13*FLD14*FLD15*FLD16*FLD17*FLD18*FLD19*FLD20*FLD21*FLD22*FLD23 as calc1 from t1;
select FLD23*FLD2*FLD1*FLD4*FLD5*FLD11*FLD12*FLD13*FLD3*FLD15*FLD16*FLD17*FLD18*FLD19*FLD20*FLD21*FLD22*FLD14*FLD6*FLD7*FLD8*FLD9*FLD10 as calc2 from t1;
DROP TABLE t1;
CREATE TABLE t1 AS SELECT 1.0 * 2.000;
SHOW CREATE TABLE t1;
DROP TABLE t1;
--echo # --echo #
--echo # Start of 10.0 tests --echo # End of 5.5 tests
--echo # --echo #
--echo # --echo #
......
...@@ -2078,26 +2078,21 @@ int decimal_mul(const decimal_t *from1, const decimal_t *from2, decimal_t *to) ...@@ -2078,26 +2078,21 @@ int decimal_mul(const decimal_t *from1, const decimal_t *from2, decimal_t *to)
} }
} }
/* Now we have to check for -0.000 case */ /* Remove trailing zero words in frac part */
if (to->sign) frac0= ROUND_UP(to->frac);
if (frac0 > 0 && to->buf[intg0 + frac0 - 1] == 0)
{ {
dec1 *buf= to->buf; do
dec1 *end= to->buf + intg0 + frac0;
DBUG_ASSERT(buf != end);
for (;;)
{ {
if (*buf) frac0--;
break; } while (frac0 > 0 && to->buf[intg0 + frac0 - 1] == 0);
if (++buf == end) to->frac= DIG_PER_DEC1 * frac0;
{
/* We got decimal zero */
decimal_make_zero(to);
break;
}
}
} }
/* Remove heading zero words in intg part */
buf1= to->buf; buf1= to->buf;
d_to_move= intg0 + ROUND_UP(to->frac); d_to_move= intg0 + frac0;
while (!*buf1 && (to->intg > DIG_PER_DEC1)) while (!*buf1 && (to->intg > DIG_PER_DEC1))
{ {
buf1++; buf1++;
...@@ -2110,6 +2105,14 @@ int decimal_mul(const decimal_t *from1, const decimal_t *from2, decimal_t *to) ...@@ -2110,6 +2105,14 @@ int decimal_mul(const decimal_t *from1, const decimal_t *from2, decimal_t *to)
for (; d_to_move--; cur_d++, buf1++) for (; d_to_move--; cur_d++, buf1++)
*cur_d= *buf1; *cur_d= *buf1;
} }
/* Now we have to check for -0.000 case */
if (to->sign && to->frac == 0 && to->buf[0] == 0)
{
DBUG_ASSERT(to->intg <= DIG_PER_DEC1);
/* We got decimal zero */
decimal_make_zero(to);
}
return error; return error;
} }
......
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