mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Merge branch '10.0' into 10.1
This commit is contained in:
@ -161,13 +161,7 @@ MACRO (MYSQL_CHECK_SSL)
|
|||||||
LIST(REVERSE CMAKE_FIND_LIBRARY_SUFFIXES)
|
LIST(REVERSE CMAKE_FIND_LIBRARY_SUFFIXES)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
INCLUDE(CheckSymbolExists)
|
IF (OPENSSL_INCLUDE_DIR)
|
||||||
SET(CMAKE_REQUIRED_INCLUDES ${OPENSSL_INCLUDE_DIR})
|
|
||||||
CHECK_SYMBOL_EXISTS(SHA512_DIGEST_LENGTH "openssl/sha.h"
|
|
||||||
HAVE_SHA512_DIGEST_LENGTH)
|
|
||||||
SET(CMAKE_REQUIRED_INCLUDES)
|
|
||||||
IF(OPENSSL_INCLUDE_DIR AND OPENSSL_LIBRARIES AND
|
|
||||||
CRYPTO_LIBRARY AND HAVE_SHA512_DIGEST_LENGTH)
|
|
||||||
# Verify version number. Version information looks like:
|
# Verify version number. Version information looks like:
|
||||||
# #define OPENSSL_VERSION_NUMBER 0x1000103fL
|
# #define OPENSSL_VERSION_NUMBER 0x1000103fL
|
||||||
# Encoded as MNNFFPPS: major minor fix patch status
|
# Encoded as MNNFFPPS: major minor fix patch status
|
||||||
@ -176,10 +170,20 @@ MACRO (MYSQL_CHECK_SSL)
|
|||||||
REGEX "^#[\t ]*define[\t ]+OPENSSL_VERSION_NUMBER[\t ]+0x[0-9].*"
|
REGEX "^#[\t ]*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}"
|
||||||
)
|
)
|
||||||
MESSAGE(STATUS "OPENSSL_MAJOR_VERSION = ${OPENSSL_MAJOR_VERSION}")
|
MESSAGE(STATUS "OPENSSL_MAJOR_VERSION = ${OPENSSL_MAJOR_VERSION}")
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
|
INCLUDE(CheckSymbolExists)
|
||||||
|
SET(CMAKE_REQUIRED_INCLUDES ${OPENSSL_INCLUDE_DIR})
|
||||||
|
CHECK_SYMBOL_EXISTS(SHA512_DIGEST_LENGTH "openssl/sha.h"
|
||||||
|
HAVE_SHA512_DIGEST_LENGTH)
|
||||||
|
SET(CMAKE_REQUIRED_INCLUDES)
|
||||||
|
IF(OPENSSL_INCLUDE_DIR AND OPENSSL_LIBRARIES AND
|
||||||
|
OPENSSL_MAJOR_VERSION STRLESS "101" AND
|
||||||
|
CRYPTO_LIBRARY AND HAVE_SHA512_DIGEST_LENGTH)
|
||||||
|
|
||||||
SET(SSL_SOURCES "")
|
SET(SSL_SOURCES "")
|
||||||
SET(SSL_LIBRARIES ${OPENSSL_LIBRARIES} ${CRYPTO_LIBRARY})
|
SET(SSL_LIBRARIES ${OPENSSL_LIBRARIES} ${CRYPTO_LIBRARY})
|
||||||
@ -207,12 +211,12 @@ MACRO (MYSQL_CHECK_SSL)
|
|||||||
HAVE_EncryptAes128Gcm)
|
HAVE_EncryptAes128Gcm)
|
||||||
ELSE()
|
ELSE()
|
||||||
IF(WITH_SSL STREQUAL "system")
|
IF(WITH_SSL STREQUAL "system")
|
||||||
MESSAGE(SEND_ERROR "Cannot find appropriate system libraries for SSL. Use WITH_SSL=bundled to enable SSL support")
|
MESSAGE(FATAL_ERROR "Cannot find appropriate system libraries for SSL. Use WITH_SSL=bundled to enable SSL support")
|
||||||
ENDIF()
|
ENDIF()
|
||||||
MYSQL_USE_BUNDLED_SSL()
|
MYSQL_USE_BUNDLED_SSL()
|
||||||
ENDIF()
|
ENDIF()
|
||||||
ELSE()
|
ELSE()
|
||||||
MESSAGE(SEND_ERROR
|
MESSAGE(FATAL_ERROR
|
||||||
"Wrong option for WITH_SSL. Valid values are: ${WITH_SSL_DOC}")
|
"Wrong option for WITH_SSL. Valid values are: ${WITH_SSL_DOC}")
|
||||||
ENDIF()
|
ENDIF()
|
||||||
ENDMACRO()
|
ENDMACRO()
|
||||||
|
@ -1136,7 +1136,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,
|
||||||
@ -1231,6 +1231,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;
|
||||||
@ -5666,7 +5669,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);
|
||||||
@ -5676,7 +5681,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;
|
|||||||
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
|
||||||
|
) 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
|
||||||
|
@ -26,6 +26,9 @@ sub skip_combinations {
|
|||||||
# don't run tests for the wrong platform
|
# don't run tests for the wrong platform
|
||||||
$skip{'include/platform.combinations'} = [ (IS_WINDOWS) ? 'unix' : 'win' ];
|
$skip{'include/platform.combinations'} = [ (IS_WINDOWS) ? 'unix' : 'win' ];
|
||||||
|
|
||||||
|
$skip{'include/maybe_debug.combinations'} =
|
||||||
|
[ defined $::mysqld_variables{'debug-dbug'} ? 'release' : 'debug' ];
|
||||||
|
|
||||||
# and for the wrong word size
|
# and for the wrong word size
|
||||||
# check for exact values, in case the default changes to be small everywhere
|
# check for exact values, in case the default changes to be small everywhere
|
||||||
my $longsysvar= $::mysqld_variables{'max-binlog-stmt-cache-size'};
|
my $longsysvar= $::mysqld_variables{'max-binlog-stmt-cache-size'};
|
||||||
@ -36,9 +39,6 @@ sub skip_combinations {
|
|||||||
die "unknown value max-binlog-stmt-cache-size=$longsysvar" unless $val_map{$longsysvar};
|
die "unknown value max-binlog-stmt-cache-size=$longsysvar" unless $val_map{$longsysvar};
|
||||||
$skip{'include/word_size.combinations'} = [ $val_map{$longsysvar} ];
|
$skip{'include/word_size.combinations'} = [ $val_map{$longsysvar} ];
|
||||||
|
|
||||||
$skip{'include/maybe_debug.combinations'} =
|
|
||||||
[ defined $::mysqld_variables{'debug-dbug'} ? 'release' : 'debug' ];
|
|
||||||
|
|
||||||
# as a special case, disable certain include files as a whole
|
# as a special case, disable certain include files as a whole
|
||||||
$skip{'include/not_embedded.inc'} = 'Not run for embedded server'
|
$skip{'include/not_embedded.inc'} = 'Not run for embedded server'
|
||||||
if $::opt_embedded_server;
|
if $::opt_embedded_server;
|
||||||
|
128
mysql-test/suite/innodb/r/table_flags,4k,debug.rdiff
Normal file
128
mysql-test/suite/innodb/r/table_flags,4k,debug.rdiff
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
--- suite/innodb/r/table_flags.result
|
||||||
|
+++ suite/innodb/r/table_flags,4k,debug.reject
|
||||||
|
@@ -10,81 +10,81 @@
|
||||||
|
CREATE TABLE tp(a INT PRIMARY KEY)ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
|
||||||
|
SYS_TABLES clustered index root page (8):
|
||||||
|
N_RECS=9; LEVEL=0; INDEX_ID=0x0000000000000001
|
||||||
|
-header=0x01000003016e (NAME=0x696e66696d756d00)
|
||||||
|
-header=0x00002815008d (NAME='SYS_DATAFILES',
|
||||||
|
- DB_TRX_ID=0x000000000301,
|
||||||
|
- DB_ROLL_PTR=0x81000001320194,
|
||||||
|
- ID=0x000000000000000e,
|
||||||
|
+header=0x0100000301bf (NAME=0x696e66696d756d00)
|
||||||
|
+header=0x0000301500de (NAME='SYS_DATAFILES',
|
||||||
|
+ DB_TRX_ID=0x000000000302,
|
||||||
|
+ DB_ROLL_PTR=0x81000003270194,
|
||||||
|
+ ID=0x000000000000000f,
|
||||||
|
N_COLS=0x00000002,
|
||||||
|
TYPE=0x00000001,
|
||||||
|
MIX_ID=0x0000000000000000,
|
||||||
|
MIX_LEN=0x00000040,
|
||||||
|
CLUSTER_NAME=NULL(0 bytes),
|
||||||
|
SPACE=0x00000000)
|
||||||
|
-header=0x0000101500d5 (NAME='SYS_FOREIGN',
|
||||||
|
+header=0x000018150126 (NAME='SYS_FOREIGN',
|
||||||
|
DB_TRX_ID=0x000000000300,
|
||||||
|
- DB_ROLL_PTR=0x800000012d0110,
|
||||||
|
- ID=0x000000000000000b,
|
||||||
|
+ DB_ROLL_PTR=0x8000000320016f,
|
||||||
|
+ ID=0x000000000000000c,
|
||||||
|
N_COLS=0x00000004,
|
||||||
|
TYPE=0x00000001,
|
||||||
|
MIX_ID=0x0000000000000000,
|
||||||
|
MIX_LEN=0x00000040,
|
||||||
|
CLUSTER_NAME=NULL(0 bytes),
|
||||||
|
SPACE=0x00000000)
|
||||||
|
-header=0x000018150122 (NAME='SYS_FOREIGN_COLS',
|
||||||
|
+header=0x000020150173 (NAME='SYS_FOREIGN_COLS',
|
||||||
|
DB_TRX_ID=0x000000000300,
|
||||||
|
- DB_ROLL_PTR=0x800000012d0201,
|
||||||
|
- ID=0x000000000000000c,
|
||||||
|
+ DB_ROLL_PTR=0x80000003200260,
|
||||||
|
+ ID=0x000000000000000d,
|
||||||
|
N_COLS=0x00000004,
|
||||||
|
TYPE=0x00000001,
|
||||||
|
MIX_ID=0x0000000000000000,
|
||||||
|
MIX_LEN=0x00000040,
|
||||||
|
CLUSTER_NAME=NULL(0 bytes),
|
||||||
|
SPACE=0x00000000)
|
||||||
|
-header=0x0400201501fc (NAME='SYS_TABLESPACES',
|
||||||
|
- DB_TRX_ID=0x000000000301,
|
||||||
|
- DB_ROLL_PTR=0x81000001320110,
|
||||||
|
- ID=0x000000000000000d,
|
||||||
|
+header=0x040028150209 (NAME='SYS_TABLESPACES',
|
||||||
|
+ DB_TRX_ID=0x000000000302,
|
||||||
|
+ DB_ROLL_PTR=0x81000003270110,
|
||||||
|
+ ID=0x000000000000000e,
|
||||||
|
N_COLS=0x00000003,
|
||||||
|
TYPE=0x00000001,
|
||||||
|
MIX_ID=0x0000000000000000,
|
||||||
|
MIX_LEN=0x00000040,
|
||||||
|
CLUSTER_NAME=NULL(0 bytes),
|
||||||
|
SPACE=0x00000000)
|
||||||
|
-header=0x000038150240 (NAME='test/tc',
|
||||||
|
- DB_TRX_ID=0x000000000303,
|
||||||
|
- DB_ROLL_PTR=0x83000001360110,
|
||||||
|
- ID=0x0000000000000010,
|
||||||
|
+header=0x00003815024d (NAME='test/tc',
|
||||||
|
+ DB_TRX_ID=0x000000000304,
|
||||||
|
+ DB_ROLL_PTR=0x830000032c0110,
|
||||||
|
+ ID=0x0000000000000011,
|
||||||
|
N_COLS=0x80000001,
|
||||||
|
TYPE=0x00000001,
|
||||||
|
MIX_ID=0x0000000000000000,
|
||||||
|
MIX_LEN=0x00000050,
|
||||||
|
CLUSTER_NAME=NULL(0 bytes),
|
||||||
|
SPACE=0x00000002)
|
||||||
|
-header=0x0000401502c8 (NAME='test/td',
|
||||||
|
- DB_TRX_ID=0x000000000304,
|
||||||
|
- DB_ROLL_PTR=0x84000001370110,
|
||||||
|
- ID=0x0000000000000011,
|
||||||
|
+header=0x0000401502d5 (NAME='test/td',
|
||||||
|
+ DB_TRX_ID=0x000000000305,
|
||||||
|
+ DB_ROLL_PTR=0x840000032d0110,
|
||||||
|
+ ID=0x0000000000000012,
|
||||||
|
N_COLS=0x80000001,
|
||||||
|
TYPE=0x00000021,
|
||||||
|
MIX_ID=0x0000000000000000,
|
||||||
|
MIX_LEN=0x00000050,
|
||||||
|
CLUSTER_NAME=NULL(0 bytes),
|
||||||
|
SPACE=0x00000003)
|
||||||
|
-header=0x0000501501b8 (NAME='test/tp',
|
||||||
|
- DB_TRX_ID=0x000000000306,
|
||||||
|
- DB_ROLL_PTR=0x86000001390110,
|
||||||
|
- ID=0x0000000000000013,
|
||||||
|
+header=0x00005015008d (NAME='test/tp',
|
||||||
|
+ DB_TRX_ID=0x000000000307,
|
||||||
|
+ DB_ROLL_PTR=0x86000003300110,
|
||||||
|
+ ID=0x0000000000000014,
|
||||||
|
N_COLS=0x80000001,
|
||||||
|
TYPE=0x00000021,
|
||||||
|
MIX_ID=0x0000000000000000,
|
||||||
|
MIX_LEN=0x00000050,
|
||||||
|
CLUSTER_NAME=NULL(0 bytes),
|
||||||
|
SPACE=0x00000005)
|
||||||
|
-header=0x000030150284 (NAME='test/tr',
|
||||||
|
- DB_TRX_ID=0x000000000302,
|
||||||
|
- DB_ROLL_PTR=0x82000001350110,
|
||||||
|
- ID=0x000000000000000f,
|
||||||
|
+header=0x000010150291 (NAME='test/tr',
|
||||||
|
+ DB_TRX_ID=0x000000000303,
|
||||||
|
+ DB_ROLL_PTR=0x820000032b0110,
|
||||||
|
+ ID=0x0000000000000010,
|
||||||
|
N_COLS=0x00000001,
|
||||||
|
TYPE=0x00000001,
|
||||||
|
MIX_ID=0x0000000000000000,
|
||||||
|
@@ -92,9 +92,9 @@
|
||||||
|
CLUSTER_NAME=NULL(0 bytes),
|
||||||
|
SPACE=0x00000001)
|
||||||
|
header=0x000048150074 (NAME='test/tz',
|
||||||
|
- DB_TRX_ID=0x000000000305,
|
||||||
|
- DB_ROLL_PTR=0x85000001380110,
|
||||||
|
- ID=0x0000000000000012,
|
||||||
|
+ DB_TRX_ID=0x000000000306,
|
||||||
|
+ DB_ROLL_PTR=0x850000032e0110,
|
||||||
|
+ ID=0x0000000000000013,
|
||||||
|
N_COLS=0x80000001,
|
||||||
|
TYPE=0x00000023,
|
||||||
|
MIX_ID=0x0000000000000000,
|
128
mysql-test/suite/innodb/r/table_flags,8k,debug.rdiff
Normal file
128
mysql-test/suite/innodb/r/table_flags,8k,debug.rdiff
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
--- suite/innodb/r/table_flags.result
|
||||||
|
+++ suite/innodb/r/table_flags,8k,debug.reject
|
||||||
|
@@ -10,81 +10,81 @@
|
||||||
|
CREATE TABLE tp(a INT PRIMARY KEY)ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
|
||||||
|
SYS_TABLES clustered index root page (8):
|
||||||
|
N_RECS=9; LEVEL=0; INDEX_ID=0x0000000000000001
|
||||||
|
-header=0x01000003016e (NAME=0x696e66696d756d00)
|
||||||
|
-header=0x00002815008d (NAME='SYS_DATAFILES',
|
||||||
|
- DB_TRX_ID=0x000000000301,
|
||||||
|
- DB_ROLL_PTR=0x81000001320194,
|
||||||
|
- ID=0x000000000000000e,
|
||||||
|
+header=0x0100000301bf (NAME=0x696e66696d756d00)
|
||||||
|
+header=0x0000301500de (NAME='SYS_DATAFILES',
|
||||||
|
+ DB_TRX_ID=0x000000000302,
|
||||||
|
+ DB_ROLL_PTR=0x81000001d80194,
|
||||||
|
+ ID=0x000000000000000f,
|
||||||
|
N_COLS=0x00000002,
|
||||||
|
TYPE=0x00000001,
|
||||||
|
MIX_ID=0x0000000000000000,
|
||||||
|
MIX_LEN=0x00000040,
|
||||||
|
CLUSTER_NAME=NULL(0 bytes),
|
||||||
|
SPACE=0x00000000)
|
||||||
|
-header=0x0000101500d5 (NAME='SYS_FOREIGN',
|
||||||
|
+header=0x000018150126 (NAME='SYS_FOREIGN',
|
||||||
|
DB_TRX_ID=0x000000000300,
|
||||||
|
- DB_ROLL_PTR=0x800000012d0110,
|
||||||
|
- ID=0x000000000000000b,
|
||||||
|
+ DB_ROLL_PTR=0x80000001d1016f,
|
||||||
|
+ ID=0x000000000000000c,
|
||||||
|
N_COLS=0x00000004,
|
||||||
|
TYPE=0x00000001,
|
||||||
|
MIX_ID=0x0000000000000000,
|
||||||
|
MIX_LEN=0x00000040,
|
||||||
|
CLUSTER_NAME=NULL(0 bytes),
|
||||||
|
SPACE=0x00000000)
|
||||||
|
-header=0x000018150122 (NAME='SYS_FOREIGN_COLS',
|
||||||
|
+header=0x000020150173 (NAME='SYS_FOREIGN_COLS',
|
||||||
|
DB_TRX_ID=0x000000000300,
|
||||||
|
- DB_ROLL_PTR=0x800000012d0201,
|
||||||
|
- ID=0x000000000000000c,
|
||||||
|
+ DB_ROLL_PTR=0x80000001d10260,
|
||||||
|
+ ID=0x000000000000000d,
|
||||||
|
N_COLS=0x00000004,
|
||||||
|
TYPE=0x00000001,
|
||||||
|
MIX_ID=0x0000000000000000,
|
||||||
|
MIX_LEN=0x00000040,
|
||||||
|
CLUSTER_NAME=NULL(0 bytes),
|
||||||
|
SPACE=0x00000000)
|
||||||
|
-header=0x0400201501fc (NAME='SYS_TABLESPACES',
|
||||||
|
- DB_TRX_ID=0x000000000301,
|
||||||
|
- DB_ROLL_PTR=0x81000001320110,
|
||||||
|
- ID=0x000000000000000d,
|
||||||
|
+header=0x040028150209 (NAME='SYS_TABLESPACES',
|
||||||
|
+ DB_TRX_ID=0x000000000302,
|
||||||
|
+ DB_ROLL_PTR=0x81000001d80110,
|
||||||
|
+ ID=0x000000000000000e,
|
||||||
|
N_COLS=0x00000003,
|
||||||
|
TYPE=0x00000001,
|
||||||
|
MIX_ID=0x0000000000000000,
|
||||||
|
MIX_LEN=0x00000040,
|
||||||
|
CLUSTER_NAME=NULL(0 bytes),
|
||||||
|
SPACE=0x00000000)
|
||||||
|
-header=0x000038150240 (NAME='test/tc',
|
||||||
|
- DB_TRX_ID=0x000000000303,
|
||||||
|
- DB_ROLL_PTR=0x83000001360110,
|
||||||
|
- ID=0x0000000000000010,
|
||||||
|
+header=0x00003815024d (NAME='test/tc',
|
||||||
|
+ DB_TRX_ID=0x000000000304,
|
||||||
|
+ DB_ROLL_PTR=0x83000001dc0110,
|
||||||
|
+ ID=0x0000000000000011,
|
||||||
|
N_COLS=0x80000001,
|
||||||
|
TYPE=0x00000001,
|
||||||
|
MIX_ID=0x0000000000000000,
|
||||||
|
MIX_LEN=0x00000050,
|
||||||
|
CLUSTER_NAME=NULL(0 bytes),
|
||||||
|
SPACE=0x00000002)
|
||||||
|
-header=0x0000401502c8 (NAME='test/td',
|
||||||
|
- DB_TRX_ID=0x000000000304,
|
||||||
|
- DB_ROLL_PTR=0x84000001370110,
|
||||||
|
- ID=0x0000000000000011,
|
||||||
|
+header=0x0000401502d5 (NAME='test/td',
|
||||||
|
+ DB_TRX_ID=0x000000000305,
|
||||||
|
+ DB_ROLL_PTR=0x84000001dd0110,
|
||||||
|
+ ID=0x0000000000000012,
|
||||||
|
N_COLS=0x80000001,
|
||||||
|
TYPE=0x00000021,
|
||||||
|
MIX_ID=0x0000000000000000,
|
||||||
|
MIX_LEN=0x00000050,
|
||||||
|
CLUSTER_NAME=NULL(0 bytes),
|
||||||
|
SPACE=0x00000003)
|
||||||
|
-header=0x0000501501b8 (NAME='test/tp',
|
||||||
|
- DB_TRX_ID=0x000000000306,
|
||||||
|
- DB_ROLL_PTR=0x86000001390110,
|
||||||
|
- ID=0x0000000000000013,
|
||||||
|
+header=0x00005015008d (NAME='test/tp',
|
||||||
|
+ DB_TRX_ID=0x000000000307,
|
||||||
|
+ DB_ROLL_PTR=0x86000001df0110,
|
||||||
|
+ ID=0x0000000000000014,
|
||||||
|
N_COLS=0x80000001,
|
||||||
|
TYPE=0x00000021,
|
||||||
|
MIX_ID=0x0000000000000000,
|
||||||
|
MIX_LEN=0x00000050,
|
||||||
|
CLUSTER_NAME=NULL(0 bytes),
|
||||||
|
SPACE=0x00000005)
|
||||||
|
-header=0x000030150284 (NAME='test/tr',
|
||||||
|
- DB_TRX_ID=0x000000000302,
|
||||||
|
- DB_ROLL_PTR=0x82000001350110,
|
||||||
|
- ID=0x000000000000000f,
|
||||||
|
+header=0x000010150291 (NAME='test/tr',
|
||||||
|
+ DB_TRX_ID=0x000000000303,
|
||||||
|
+ DB_ROLL_PTR=0x82000001db0110,
|
||||||
|
+ ID=0x0000000000000010,
|
||||||
|
N_COLS=0x00000001,
|
||||||
|
TYPE=0x00000001,
|
||||||
|
MIX_ID=0x0000000000000000,
|
||||||
|
@@ -92,9 +92,9 @@
|
||||||
|
CLUSTER_NAME=NULL(0 bytes),
|
||||||
|
SPACE=0x00000001)
|
||||||
|
header=0x000048150074 (NAME='test/tz',
|
||||||
|
- DB_TRX_ID=0x000000000305,
|
||||||
|
- DB_ROLL_PTR=0x85000001380110,
|
||||||
|
- ID=0x0000000000000012,
|
||||||
|
+ DB_TRX_ID=0x000000000306,
|
||||||
|
+ DB_ROLL_PTR=0x85000001de0110,
|
||||||
|
+ ID=0x0000000000000013,
|
||||||
|
N_COLS=0x80000001,
|
||||||
|
TYPE=0x00000023,
|
||||||
|
MIX_ID=0x0000000000000000,
|
128
mysql-test/suite/innodb/r/table_flags,debug.rdiff
Normal file
128
mysql-test/suite/innodb/r/table_flags,debug.rdiff
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
--- suite/innodb/r/table_flags.result
|
||||||
|
+++ suite/innodb/r/table_flags,debug.reject
|
||||||
|
@@ -10,81 +10,81 @@
|
||||||
|
CREATE TABLE tp(a INT PRIMARY KEY)ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
|
||||||
|
SYS_TABLES clustered index root page (8):
|
||||||
|
N_RECS=9; LEVEL=0; INDEX_ID=0x0000000000000001
|
||||||
|
-header=0x01000003016e (NAME=0x696e66696d756d00)
|
||||||
|
-header=0x00002815008d (NAME='SYS_DATAFILES',
|
||||||
|
- DB_TRX_ID=0x000000000301,
|
||||||
|
- DB_ROLL_PTR=0x81000001320194,
|
||||||
|
- ID=0x000000000000000e,
|
||||||
|
+header=0x0100000301bf (NAME=0x696e66696d756d00)
|
||||||
|
+header=0x0000301500de (NAME='SYS_DATAFILES',
|
||||||
|
+ DB_TRX_ID=0x000000000302,
|
||||||
|
+ DB_ROLL_PTR=0x81000001330194,
|
||||||
|
+ ID=0x000000000000000f,
|
||||||
|
N_COLS=0x00000002,
|
||||||
|
TYPE=0x00000001,
|
||||||
|
MIX_ID=0x0000000000000000,
|
||||||
|
MIX_LEN=0x00000040,
|
||||||
|
CLUSTER_NAME=NULL(0 bytes),
|
||||||
|
SPACE=0x00000000)
|
||||||
|
-header=0x0000101500d5 (NAME='SYS_FOREIGN',
|
||||||
|
+header=0x000018150126 (NAME='SYS_FOREIGN',
|
||||||
|
DB_TRX_ID=0x000000000300,
|
||||||
|
- DB_ROLL_PTR=0x800000012d0110,
|
||||||
|
- ID=0x000000000000000b,
|
||||||
|
+ DB_ROLL_PTR=0x800000012d016f,
|
||||||
|
+ ID=0x000000000000000c,
|
||||||
|
N_COLS=0x00000004,
|
||||||
|
TYPE=0x00000001,
|
||||||
|
MIX_ID=0x0000000000000000,
|
||||||
|
MIX_LEN=0x00000040,
|
||||||
|
CLUSTER_NAME=NULL(0 bytes),
|
||||||
|
SPACE=0x00000000)
|
||||||
|
-header=0x000018150122 (NAME='SYS_FOREIGN_COLS',
|
||||||
|
+header=0x000020150173 (NAME='SYS_FOREIGN_COLS',
|
||||||
|
DB_TRX_ID=0x000000000300,
|
||||||
|
- DB_ROLL_PTR=0x800000012d0201,
|
||||||
|
- ID=0x000000000000000c,
|
||||||
|
+ DB_ROLL_PTR=0x800000012d0260,
|
||||||
|
+ ID=0x000000000000000d,
|
||||||
|
N_COLS=0x00000004,
|
||||||
|
TYPE=0x00000001,
|
||||||
|
MIX_ID=0x0000000000000000,
|
||||||
|
MIX_LEN=0x00000040,
|
||||||
|
CLUSTER_NAME=NULL(0 bytes),
|
||||||
|
SPACE=0x00000000)
|
||||||
|
-header=0x0400201501fc (NAME='SYS_TABLESPACES',
|
||||||
|
- DB_TRX_ID=0x000000000301,
|
||||||
|
- DB_ROLL_PTR=0x81000001320110,
|
||||||
|
- ID=0x000000000000000d,
|
||||||
|
+header=0x040028150209 (NAME='SYS_TABLESPACES',
|
||||||
|
+ DB_TRX_ID=0x000000000302,
|
||||||
|
+ DB_ROLL_PTR=0x81000001330110,
|
||||||
|
+ ID=0x000000000000000e,
|
||||||
|
N_COLS=0x00000003,
|
||||||
|
TYPE=0x00000001,
|
||||||
|
MIX_ID=0x0000000000000000,
|
||||||
|
MIX_LEN=0x00000040,
|
||||||
|
CLUSTER_NAME=NULL(0 bytes),
|
||||||
|
SPACE=0x00000000)
|
||||||
|
-header=0x000038150240 (NAME='test/tc',
|
||||||
|
- DB_TRX_ID=0x000000000303,
|
||||||
|
- DB_ROLL_PTR=0x83000001360110,
|
||||||
|
- ID=0x0000000000000010,
|
||||||
|
+header=0x00003815024d (NAME='test/tc',
|
||||||
|
+ DB_TRX_ID=0x000000000304,
|
||||||
|
+ DB_ROLL_PTR=0x83000001370110,
|
||||||
|
+ ID=0x0000000000000011,
|
||||||
|
N_COLS=0x80000001,
|
||||||
|
TYPE=0x00000001,
|
||||||
|
MIX_ID=0x0000000000000000,
|
||||||
|
MIX_LEN=0x00000050,
|
||||||
|
CLUSTER_NAME=NULL(0 bytes),
|
||||||
|
SPACE=0x00000002)
|
||||||
|
-header=0x0000401502c8 (NAME='test/td',
|
||||||
|
- DB_TRX_ID=0x000000000304,
|
||||||
|
- DB_ROLL_PTR=0x84000001370110,
|
||||||
|
- ID=0x0000000000000011,
|
||||||
|
+header=0x0000401502d5 (NAME='test/td',
|
||||||
|
+ DB_TRX_ID=0x000000000305,
|
||||||
|
+ DB_ROLL_PTR=0x84000001380110,
|
||||||
|
+ ID=0x0000000000000012,
|
||||||
|
N_COLS=0x80000001,
|
||||||
|
TYPE=0x00000021,
|
||||||
|
MIX_ID=0x0000000000000000,
|
||||||
|
MIX_LEN=0x00000050,
|
||||||
|
CLUSTER_NAME=NULL(0 bytes),
|
||||||
|
SPACE=0x00000003)
|
||||||
|
-header=0x0000501501b8 (NAME='test/tp',
|
||||||
|
- DB_TRX_ID=0x000000000306,
|
||||||
|
- DB_ROLL_PTR=0x86000001390110,
|
||||||
|
- ID=0x0000000000000013,
|
||||||
|
+header=0x00005015008d (NAME='test/tp',
|
||||||
|
+ DB_TRX_ID=0x000000000307,
|
||||||
|
+ DB_ROLL_PTR=0x860000013a0110,
|
||||||
|
+ ID=0x0000000000000014,
|
||||||
|
N_COLS=0x80000001,
|
||||||
|
TYPE=0x00000021,
|
||||||
|
MIX_ID=0x0000000000000000,
|
||||||
|
MIX_LEN=0x00000050,
|
||||||
|
CLUSTER_NAME=NULL(0 bytes),
|
||||||
|
SPACE=0x00000005)
|
||||||
|
-header=0x000030150284 (NAME='test/tr',
|
||||||
|
- DB_TRX_ID=0x000000000302,
|
||||||
|
- DB_ROLL_PTR=0x82000001350110,
|
||||||
|
- ID=0x000000000000000f,
|
||||||
|
+header=0x000010150291 (NAME='test/tr',
|
||||||
|
+ DB_TRX_ID=0x000000000303,
|
||||||
|
+ DB_ROLL_PTR=0x82000001360110,
|
||||||
|
+ ID=0x0000000000000010,
|
||||||
|
N_COLS=0x00000001,
|
||||||
|
TYPE=0x00000001,
|
||||||
|
MIX_ID=0x0000000000000000,
|
||||||
|
@@ -92,9 +92,9 @@
|
||||||
|
CLUSTER_NAME=NULL(0 bytes),
|
||||||
|
SPACE=0x00000001)
|
||||||
|
header=0x000048150074 (NAME='test/tz',
|
||||||
|
- DB_TRX_ID=0x000000000305,
|
||||||
|
- DB_ROLL_PTR=0x85000001380110,
|
||||||
|
- ID=0x0000000000000012,
|
||||||
|
+ DB_TRX_ID=0x000000000306,
|
||||||
|
+ DB_ROLL_PTR=0x85000001390110,
|
||||||
|
+ ID=0x0000000000000013,
|
||||||
|
N_COLS=0x80000001,
|
||||||
|
TYPE=0x00000023,
|
||||||
|
MIX_ID=0x0000000000000000,
|
@ -1,6 +1,7 @@
|
|||||||
--source include/innodb_page_size.inc
|
--source include/innodb_page_size.inc
|
||||||
# Embedded server tests do not support restarting
|
# Embedded server tests do not support restarting
|
||||||
--source include/not_embedded.inc
|
--source include/not_embedded.inc
|
||||||
|
--source include/maybe_debug.inc
|
||||||
|
|
||||||
--disable_query_log
|
--disable_query_log
|
||||||
call mtr.add_suppression("InnoDB: New log files created, LSN=");
|
call mtr.add_suppression("InnoDB: New log files created, LSN=");
|
||||||
@ -22,6 +23,9 @@ let bugdir= $MYSQLTEST_VARDIR/tmp/table_flags;
|
|||||||
--let $d=--innodb-data-home-dir=$bugdir --innodb-log-group-home-dir=$bugdir
|
--let $d=--innodb-data-home-dir=$bugdir --innodb-log-group-home-dir=$bugdir
|
||||||
--let $d=$d --innodb-data-file-path=ibdata1:10M:autoextend
|
--let $d=$d --innodb-data-file-path=ibdata1:10M:autoextend
|
||||||
--let $d=$d --innodb-undo-tablespaces=0
|
--let $d=$d --innodb-undo-tablespaces=0
|
||||||
|
if ($have_debug) {
|
||||||
|
--let $d=$d --debug=d,create_and_drop_garbage
|
||||||
|
}
|
||||||
--let $restart_parameters=$d --innodb-stats-persistent=0 --innodb-file-format=1
|
--let $restart_parameters=$d --innodb-stats-persistent=0 --innodb-file-format=1
|
||||||
--source include/restart_mysqld.inc
|
--source include/restart_mysqld.inc
|
||||||
|
|
||||||
|
@ -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 #
|
||||||
|
@ -1363,6 +1363,21 @@ dict_create_or_check_foreign_constraint_tables(void)
|
|||||||
|
|
||||||
row_mysql_lock_data_dictionary(trx);
|
row_mysql_lock_data_dictionary(trx);
|
||||||
|
|
||||||
|
DBUG_EXECUTE_IF(
|
||||||
|
"create_and_drop_garbage",
|
||||||
|
err = que_eval_sql(
|
||||||
|
NULL,
|
||||||
|
"PROCEDURE CREATE_GARBAGE_TABLE_PROC () IS\n"
|
||||||
|
"BEGIN\n"
|
||||||
|
"CREATE TABLE\n"
|
||||||
|
"\"test/#sql-ib-garbage\"(ID CHAR);\n"
|
||||||
|
"CREATE UNIQUE CLUSTERED INDEX PRIMARY"
|
||||||
|
" ON \"test/#sql-ib-garbage\"(ID);\n"
|
||||||
|
"END;\n", FALSE, trx);
|
||||||
|
ut_ad(err == DB_SUCCESS);
|
||||||
|
row_drop_table_for_mysql("test/#sql-ib-garbage",
|
||||||
|
trx, TRUE, TRUE););
|
||||||
|
|
||||||
/* Check which incomplete table definition to drop. */
|
/* Check which incomplete table definition to drop. */
|
||||||
|
|
||||||
if (sys_foreign_err == DB_CORRUPTION) {
|
if (sys_foreign_err == DB_CORRUPTION) {
|
||||||
|
@ -45,6 +45,7 @@ Created 9/17/2000 Heikki Tuuri
|
|||||||
#include "dict0dict.h"
|
#include "dict0dict.h"
|
||||||
#include "dict0crea.h"
|
#include "dict0crea.h"
|
||||||
#include "dict0load.h"
|
#include "dict0load.h"
|
||||||
|
#include "dict0priv.h"
|
||||||
#include "dict0boot.h"
|
#include "dict0boot.h"
|
||||||
#include "dict0stats.h"
|
#include "dict0stats.h"
|
||||||
#include "dict0stats_bg.h"
|
#include "dict0stats_bg.h"
|
||||||
@ -4277,95 +4278,87 @@ row_drop_table_for_mysql(
|
|||||||
|
|
||||||
info = pars_info_create();
|
info = pars_info_create();
|
||||||
|
|
||||||
pars_info_add_str_literal(info, "table_name", name);
|
pars_info_add_str_literal(info, "name", name);
|
||||||
|
|
||||||
err = que_eval_sql(info,
|
if (strcmp(name, "SYS_FOREIGN") && strcmp(name, "SYS_FOREIGN_COLS")
|
||||||
"PROCEDURE DROP_TABLE_PROC () IS\n"
|
&& dict_table_get_low("SYS_FOREIGN")
|
||||||
"sys_foreign_id CHAR;\n"
|
&& dict_table_get_low("SYS_FOREIGN_COLS")) {
|
||||||
"table_id CHAR;\n"
|
err = que_eval_sql(
|
||||||
"index_id CHAR;\n"
|
info,
|
||||||
"foreign_id CHAR;\n"
|
"PROCEDURE DROP_FOREIGN_PROC () IS\n"
|
||||||
"space_id INT;\n"
|
"fid CHAR;\n"
|
||||||
"found INT;\n"
|
|
||||||
|
|
||||||
"DECLARE CURSOR cur_fk IS\n"
|
"DECLARE CURSOR fk IS\n"
|
||||||
"SELECT ID FROM SYS_FOREIGN\n"
|
"SELECT ID FROM SYS_FOREIGN\n"
|
||||||
"WHERE FOR_NAME = :table_name\n"
|
"WHERE FOR_NAME = :name\n"
|
||||||
"AND TO_BINARY(FOR_NAME)\n"
|
"AND TO_BINARY(FOR_NAME) = TO_BINARY(:name)\n"
|
||||||
" = TO_BINARY(:table_name)\n"
|
"FOR UPDATE;\n"
|
||||||
"LOCK IN SHARE MODE;\n"
|
|
||||||
|
|
||||||
"DECLARE CURSOR cur_idx IS\n"
|
"BEGIN\n"
|
||||||
"SELECT ID FROM SYS_INDEXES\n"
|
"OPEN fk;\n"
|
||||||
"WHERE TABLE_ID = table_id\n"
|
"WHILE 1 = 1 LOOP\n"
|
||||||
"LOCK IN SHARE MODE;\n"
|
" FETCH fk INTO fid;\n"
|
||||||
|
" IF (SQL % NOTFOUND) THEN RETURN; END IF;\n"
|
||||||
|
" DELETE FROM SYS_FOREIGN_COLS WHERE ID = fid;\n"
|
||||||
|
" DELETE FROM SYS_FOREIGN WHERE ID = fid;\n"
|
||||||
|
"END LOOP;\n"
|
||||||
|
"CLOSE fk;\n"
|
||||||
|
"END;\n", FALSE, trx);
|
||||||
|
if (err == DB_SUCCESS) {
|
||||||
|
info = pars_info_create();
|
||||||
|
pars_info_add_str_literal(info, "name", name);
|
||||||
|
goto do_drop;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
do_drop:
|
||||||
|
err = que_eval_sql(
|
||||||
|
info,
|
||||||
|
"PROCEDURE DROP_TABLE_PROC () IS\n"
|
||||||
|
"table_id CHAR;\n"
|
||||||
|
"index_id CHAR;\n"
|
||||||
|
|
||||||
"BEGIN\n"
|
"DECLARE CURSOR cur_idx IS\n"
|
||||||
"SELECT ID INTO table_id\n"
|
"SELECT ID FROM SYS_INDEXES\n"
|
||||||
"FROM SYS_TABLES\n"
|
"WHERE TABLE_ID = table_id\n"
|
||||||
"WHERE NAME = :table_name\n"
|
"FOR UPDATE;\n"
|
||||||
"LOCK IN SHARE MODE;\n"
|
|
||||||
"IF (SQL % NOTFOUND) THEN\n"
|
"BEGIN\n"
|
||||||
" RETURN;\n"
|
"SELECT ID INTO table_id\n"
|
||||||
"END IF;\n"
|
"FROM SYS_TABLES WHERE NAME = :name FOR UPDATE;\n"
|
||||||
"SELECT SPACE INTO space_id\n"
|
"IF (SQL % NOTFOUND) THEN RETURN; END IF;\n"
|
||||||
"FROM SYS_TABLES\n"
|
"OPEN cur_idx;\n"
|
||||||
"WHERE NAME = :table_name;\n"
|
"WHILE 1 = 1 LOOP\n"
|
||||||
"IF (SQL % NOTFOUND) THEN\n"
|
" FETCH cur_idx INTO index_id;\n"
|
||||||
" RETURN;\n"
|
" IF (SQL % NOTFOUND) THEN EXIT; END IF;\n"
|
||||||
"END IF;\n"
|
" DELETE FROM SYS_FIELDS\n"
|
||||||
"found := 1;\n"
|
" WHERE INDEX_ID = index_id;\n"
|
||||||
"SELECT ID INTO sys_foreign_id\n"
|
" DELETE FROM SYS_INDEXES\n"
|
||||||
"FROM SYS_TABLES\n"
|
" WHERE ID = index_id AND TABLE_ID = table_id;\n"
|
||||||
"WHERE NAME = 'SYS_FOREIGN'\n"
|
"END LOOP;\n"
|
||||||
"LOCK IN SHARE MODE;\n"
|
"CLOSE cur_idx;\n"
|
||||||
"IF (SQL % NOTFOUND) THEN\n"
|
|
||||||
" found := 0;\n"
|
"DELETE FROM SYS_COLUMNS WHERE TABLE_ID = table_id;\n"
|
||||||
"END IF;\n"
|
"DELETE FROM SYS_TABLES WHERE NAME = :name;\n"
|
||||||
"IF (:table_name = 'SYS_FOREIGN') THEN\n"
|
|
||||||
" found := 0;\n"
|
"END;\n", FALSE, trx);
|
||||||
"END IF;\n"
|
|
||||||
"IF (:table_name = 'SYS_FOREIGN_COLS') THEN\n"
|
if (err == DB_SUCCESS && table->space
|
||||||
" found := 0;\n"
|
&& dict_table_get_low("SYS_TABLESPACES")
|
||||||
"END IF;\n"
|
&& dict_table_get_low("SYS_DATAFILES")) {
|
||||||
"OPEN cur_fk;\n"
|
info = pars_info_create();
|
||||||
"WHILE found = 1 LOOP\n"
|
pars_info_add_int4_literal(info, "id",
|
||||||
" FETCH cur_fk INTO foreign_id;\n"
|
lint(table->space));
|
||||||
" IF (SQL % NOTFOUND) THEN\n"
|
err = que_eval_sql(
|
||||||
" found := 0;\n"
|
info,
|
||||||
" ELSE\n"
|
"PROCEDURE DROP_SPACE_PROC () IS\n"
|
||||||
" DELETE FROM SYS_FOREIGN_COLS\n"
|
"BEGIN\n"
|
||||||
" WHERE ID = foreign_id;\n"
|
"DELETE FROM SYS_TABLESPACES\n"
|
||||||
" DELETE FROM SYS_FOREIGN\n"
|
"WHERE SPACE = :id;\n"
|
||||||
" WHERE ID = foreign_id;\n"
|
"DELETE FROM SYS_DATAFILES\n"
|
||||||
" END IF;\n"
|
"WHERE SPACE = :id;\n"
|
||||||
"END LOOP;\n"
|
"END;\n", FALSE, trx);
|
||||||
"CLOSE cur_fk;\n"
|
}
|
||||||
"found := 1;\n"
|
}
|
||||||
"OPEN cur_idx;\n"
|
|
||||||
"WHILE found = 1 LOOP\n"
|
|
||||||
" FETCH cur_idx INTO index_id;\n"
|
|
||||||
" IF (SQL % NOTFOUND) THEN\n"
|
|
||||||
" found := 0;\n"
|
|
||||||
" ELSE\n"
|
|
||||||
" DELETE FROM SYS_FIELDS\n"
|
|
||||||
" WHERE INDEX_ID = index_id;\n"
|
|
||||||
" DELETE FROM SYS_INDEXES\n"
|
|
||||||
" WHERE ID = index_id\n"
|
|
||||||
" AND TABLE_ID = table_id;\n"
|
|
||||||
" END IF;\n"
|
|
||||||
"END LOOP;\n"
|
|
||||||
"CLOSE cur_idx;\n"
|
|
||||||
"DELETE FROM SYS_TABLESPACES\n"
|
|
||||||
"WHERE SPACE = space_id;\n"
|
|
||||||
"DELETE FROM SYS_DATAFILES\n"
|
|
||||||
"WHERE SPACE = space_id;\n"
|
|
||||||
"DELETE FROM SYS_COLUMNS\n"
|
|
||||||
"WHERE TABLE_ID = table_id;\n"
|
|
||||||
"DELETE FROM SYS_TABLES\n"
|
|
||||||
"WHERE NAME = :table_name;\n"
|
|
||||||
"END;\n"
|
|
||||||
, FALSE, trx);
|
|
||||||
|
|
||||||
switch (err) {
|
switch (err) {
|
||||||
ibool is_temp;
|
ibool is_temp;
|
||||||
|
@ -254,7 +254,7 @@ trx_purge_add_update_undo_to_history(
|
|||||||
fts_drop_orphaned_tables(), and roll back recovered transactions. */
|
fts_drop_orphaned_tables(), and roll back recovered transactions. */
|
||||||
ut_ad(srv_undo_sources
|
ut_ad(srv_undo_sources
|
||||||
|| trx->undo_no == 0
|
|| trx->undo_no == 0
|
||||||
|| ((srv_startup_is_before_trx_rollback_phase
|
|| ((srv_is_being_started
|
||||||
|| trx_rollback_or_clean_is_active)
|
|| trx_rollback_or_clean_is_active)
|
||||||
&& purge_sys->state == PURGE_STATE_INIT));
|
&& purge_sys->state == PURGE_STATE_INIT));
|
||||||
|
|
||||||
|
@ -1363,6 +1363,21 @@ dict_create_or_check_foreign_constraint_tables(void)
|
|||||||
|
|
||||||
row_mysql_lock_data_dictionary(trx);
|
row_mysql_lock_data_dictionary(trx);
|
||||||
|
|
||||||
|
DBUG_EXECUTE_IF(
|
||||||
|
"create_and_drop_garbage",
|
||||||
|
err = que_eval_sql(
|
||||||
|
NULL,
|
||||||
|
"PROCEDURE CREATE_GARBAGE_TABLE_PROC () IS\n"
|
||||||
|
"BEGIN\n"
|
||||||
|
"CREATE TABLE\n"
|
||||||
|
"\"test/#sql-ib-garbage\"(ID CHAR);\n"
|
||||||
|
"CREATE UNIQUE CLUSTERED INDEX PRIMARY"
|
||||||
|
" ON \"test/#sql-ib-garbage\"(ID);\n"
|
||||||
|
"END;\n", FALSE, trx);
|
||||||
|
ut_ad(err == DB_SUCCESS);
|
||||||
|
row_drop_table_for_mysql("test/#sql-ib-garbage",
|
||||||
|
trx, TRUE, TRUE););
|
||||||
|
|
||||||
/* Check which incomplete table definition to drop. */
|
/* Check which incomplete table definition to drop. */
|
||||||
|
|
||||||
if (sys_foreign_err == DB_CORRUPTION) {
|
if (sys_foreign_err == DB_CORRUPTION) {
|
||||||
|
@ -4288,95 +4288,87 @@ row_drop_table_for_mysql(
|
|||||||
|
|
||||||
info = pars_info_create();
|
info = pars_info_create();
|
||||||
|
|
||||||
pars_info_add_str_literal(info, "table_name", name);
|
pars_info_add_str_literal(info, "name", name);
|
||||||
|
|
||||||
err = que_eval_sql(info,
|
if (strcmp(name, "SYS_FOREIGN") && strcmp(name, "SYS_FOREIGN_COLS")
|
||||||
"PROCEDURE DROP_TABLE_PROC () IS\n"
|
&& dict_table_get_low("SYS_FOREIGN")
|
||||||
"sys_foreign_id CHAR;\n"
|
&& dict_table_get_low("SYS_FOREIGN_COLS")) {
|
||||||
"table_id CHAR;\n"
|
err = que_eval_sql(
|
||||||
"index_id CHAR;\n"
|
info,
|
||||||
"foreign_id CHAR;\n"
|
"PROCEDURE DROP_FOREIGN_PROC () IS\n"
|
||||||
"space_id INT;\n"
|
"fid CHAR;\n"
|
||||||
"found INT;\n"
|
|
||||||
|
|
||||||
"DECLARE CURSOR cur_fk IS\n"
|
"DECLARE CURSOR fk IS\n"
|
||||||
"SELECT ID FROM SYS_FOREIGN\n"
|
"SELECT ID FROM SYS_FOREIGN\n"
|
||||||
"WHERE FOR_NAME = :table_name\n"
|
"WHERE FOR_NAME = :name\n"
|
||||||
"AND TO_BINARY(FOR_NAME)\n"
|
"AND TO_BINARY(FOR_NAME) = TO_BINARY(:name)\n"
|
||||||
" = TO_BINARY(:table_name)\n"
|
"FOR UPDATE;\n"
|
||||||
"LOCK IN SHARE MODE;\n"
|
|
||||||
|
|
||||||
"DECLARE CURSOR cur_idx IS\n"
|
"BEGIN\n"
|
||||||
"SELECT ID FROM SYS_INDEXES\n"
|
"OPEN fk;\n"
|
||||||
"WHERE TABLE_ID = table_id\n"
|
"WHILE 1 = 1 LOOP\n"
|
||||||
"LOCK IN SHARE MODE;\n"
|
" FETCH fk INTO fid;\n"
|
||||||
|
" IF (SQL % NOTFOUND) THEN RETURN; END IF;\n"
|
||||||
|
" DELETE FROM SYS_FOREIGN_COLS WHERE ID = fid;\n"
|
||||||
|
" DELETE FROM SYS_FOREIGN WHERE ID = fid;\n"
|
||||||
|
"END LOOP;\n"
|
||||||
|
"CLOSE fk;\n"
|
||||||
|
"END;\n", FALSE, trx);
|
||||||
|
if (err == DB_SUCCESS) {
|
||||||
|
info = pars_info_create();
|
||||||
|
pars_info_add_str_literal(info, "name", name);
|
||||||
|
goto do_drop;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
do_drop:
|
||||||
|
err = que_eval_sql(
|
||||||
|
info,
|
||||||
|
"PROCEDURE DROP_TABLE_PROC () IS\n"
|
||||||
|
"table_id CHAR;\n"
|
||||||
|
"index_id CHAR;\n"
|
||||||
|
|
||||||
"BEGIN\n"
|
"DECLARE CURSOR cur_idx IS\n"
|
||||||
"SELECT ID INTO table_id\n"
|
"SELECT ID FROM SYS_INDEXES\n"
|
||||||
"FROM SYS_TABLES\n"
|
"WHERE TABLE_ID = table_id\n"
|
||||||
"WHERE NAME = :table_name\n"
|
"FOR UPDATE;\n"
|
||||||
"LOCK IN SHARE MODE;\n"
|
|
||||||
"IF (SQL % NOTFOUND) THEN\n"
|
"BEGIN\n"
|
||||||
" RETURN;\n"
|
"SELECT ID INTO table_id\n"
|
||||||
"END IF;\n"
|
"FROM SYS_TABLES WHERE NAME = :name FOR UPDATE;\n"
|
||||||
"SELECT SPACE INTO space_id\n"
|
"IF (SQL % NOTFOUND) THEN RETURN; END IF;\n"
|
||||||
"FROM SYS_TABLES\n"
|
"OPEN cur_idx;\n"
|
||||||
"WHERE NAME = :table_name;\n"
|
"WHILE 1 = 1 LOOP\n"
|
||||||
"IF (SQL % NOTFOUND) THEN\n"
|
" FETCH cur_idx INTO index_id;\n"
|
||||||
" RETURN;\n"
|
" IF (SQL % NOTFOUND) THEN EXIT; END IF;\n"
|
||||||
"END IF;\n"
|
" DELETE FROM SYS_FIELDS\n"
|
||||||
"found := 1;\n"
|
" WHERE INDEX_ID = index_id;\n"
|
||||||
"SELECT ID INTO sys_foreign_id\n"
|
" DELETE FROM SYS_INDEXES\n"
|
||||||
"FROM SYS_TABLES\n"
|
" WHERE ID = index_id AND TABLE_ID = table_id;\n"
|
||||||
"WHERE NAME = 'SYS_FOREIGN'\n"
|
"END LOOP;\n"
|
||||||
"LOCK IN SHARE MODE;\n"
|
"CLOSE cur_idx;\n"
|
||||||
"IF (SQL % NOTFOUND) THEN\n"
|
|
||||||
" found := 0;\n"
|
"DELETE FROM SYS_COLUMNS WHERE TABLE_ID = table_id;\n"
|
||||||
"END IF;\n"
|
"DELETE FROM SYS_TABLES WHERE NAME = :name;\n"
|
||||||
"IF (:table_name = 'SYS_FOREIGN') THEN\n"
|
|
||||||
" found := 0;\n"
|
"END;\n", FALSE, trx);
|
||||||
"END IF;\n"
|
|
||||||
"IF (:table_name = 'SYS_FOREIGN_COLS') THEN\n"
|
if (err == DB_SUCCESS && table->space
|
||||||
" found := 0;\n"
|
&& dict_table_get_low("SYS_TABLESPACES")
|
||||||
"END IF;\n"
|
&& dict_table_get_low("SYS_DATAFILES")) {
|
||||||
"OPEN cur_fk;\n"
|
info = pars_info_create();
|
||||||
"WHILE found = 1 LOOP\n"
|
pars_info_add_int4_literal(info, "id",
|
||||||
" FETCH cur_fk INTO foreign_id;\n"
|
lint(table->space));
|
||||||
" IF (SQL % NOTFOUND) THEN\n"
|
err = que_eval_sql(
|
||||||
" found := 0;\n"
|
info,
|
||||||
" ELSE\n"
|
"PROCEDURE DROP_SPACE_PROC () IS\n"
|
||||||
" DELETE FROM SYS_FOREIGN_COLS\n"
|
"BEGIN\n"
|
||||||
" WHERE ID = foreign_id;\n"
|
"DELETE FROM SYS_TABLESPACES\n"
|
||||||
" DELETE FROM SYS_FOREIGN\n"
|
"WHERE SPACE = :id;\n"
|
||||||
" WHERE ID = foreign_id;\n"
|
"DELETE FROM SYS_DATAFILES\n"
|
||||||
" END IF;\n"
|
"WHERE SPACE = :id;\n"
|
||||||
"END LOOP;\n"
|
"END;\n", FALSE, trx);
|
||||||
"CLOSE cur_fk;\n"
|
}
|
||||||
"found := 1;\n"
|
}
|
||||||
"OPEN cur_idx;\n"
|
|
||||||
"WHILE found = 1 LOOP\n"
|
|
||||||
" FETCH cur_idx INTO index_id;\n"
|
|
||||||
" IF (SQL % NOTFOUND) THEN\n"
|
|
||||||
" found := 0;\n"
|
|
||||||
" ELSE\n"
|
|
||||||
" DELETE FROM SYS_FIELDS\n"
|
|
||||||
" WHERE INDEX_ID = index_id;\n"
|
|
||||||
" DELETE FROM SYS_INDEXES\n"
|
|
||||||
" WHERE ID = index_id\n"
|
|
||||||
" AND TABLE_ID = table_id;\n"
|
|
||||||
" END IF;\n"
|
|
||||||
"END LOOP;\n"
|
|
||||||
"CLOSE cur_idx;\n"
|
|
||||||
"DELETE FROM SYS_TABLESPACES\n"
|
|
||||||
"WHERE SPACE = space_id;\n"
|
|
||||||
"DELETE FROM SYS_DATAFILES\n"
|
|
||||||
"WHERE SPACE = space_id;\n"
|
|
||||||
"DELETE FROM SYS_COLUMNS\n"
|
|
||||||
"WHERE TABLE_ID = table_id;\n"
|
|
||||||
"DELETE FROM SYS_TABLES\n"
|
|
||||||
"WHERE NAME = :table_name;\n"
|
|
||||||
"END;\n"
|
|
||||||
, FALSE, trx);
|
|
||||||
|
|
||||||
switch (err) {
|
switch (err) {
|
||||||
ibool is_temp;
|
ibool is_temp;
|
||||||
@ -4524,7 +4516,6 @@ row_drop_table_for_mysql(
|
|||||||
|
|
||||||
case DB_OUT_OF_FILE_SPACE:
|
case DB_OUT_OF_FILE_SPACE:
|
||||||
err = DB_MUST_GET_MORE_FILE_SPACE;
|
err = DB_MUST_GET_MORE_FILE_SPACE;
|
||||||
|
|
||||||
trx->error_state = err;
|
trx->error_state = err;
|
||||||
row_mysql_handle_errors(&err, trx, NULL, NULL);
|
row_mysql_handle_errors(&err, trx, NULL, NULL);
|
||||||
|
|
||||||
|
@ -258,7 +258,7 @@ trx_purge_add_update_undo_to_history(
|
|||||||
fts_drop_orphaned_tables(), and roll back recovered transactions. */
|
fts_drop_orphaned_tables(), and roll back recovered transactions. */
|
||||||
ut_ad(srv_undo_sources
|
ut_ad(srv_undo_sources
|
||||||
|| trx->undo_no == 0
|
|| trx->undo_no == 0
|
||||||
|| ((srv_startup_is_before_trx_rollback_phase
|
|| ((srv_is_being_started
|
||||||
|| trx_rollback_or_clean_is_active)
|
|| trx_rollback_or_clean_is_active)
|
||||||
&& purge_sys->state == PURGE_STATE_INIT));
|
&& purge_sys->state == PURGE_STATE_INIT));
|
||||||
|
|
||||||
|
@ -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)
|
|||||||
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user