Merge remote-tracking branch 'origin/10.2' into 10.3
This commit is contained in:
commit
b6bb64e54a
@ -26,9 +26,9 @@ SET(CMAKE_REQUIRED_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS} -D_GNU_SOURCE=1)
|
|||||||
|
|
||||||
# Fix CMake (< 2.8) flags. -rdynamic exports too many symbols.
|
# Fix CMake (< 2.8) flags. -rdynamic exports too many symbols.
|
||||||
FOREACH(LANG C CXX)
|
FOREACH(LANG C CXX)
|
||||||
STRING(REPLACE "-rdynamic" ""
|
STRING(REPLACE "-rdynamic" ""
|
||||||
CMAKE_SHARED_LIBRARY_LINK_${LANG}_FLAGS
|
CMAKE_SHARED_LIBRARY_LINK_${LANG}_FLAGS
|
||||||
${CMAKE_SHARED_LIBRARY_LINK_${LANG}_FLAGS}
|
"${CMAKE_SHARED_LIBRARY_LINK_${LANG}_FLAGS}"
|
||||||
)
|
)
|
||||||
ENDFOREACH()
|
ENDFOREACH()
|
||||||
|
|
||||||
|
@ -102,7 +102,7 @@ create table t1 as select concat(1 % 2) as c1;
|
|||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`c1` varbinary(1) DEFAULT NULL
|
`c1` varbinary(2) DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
select hex(concat(-1));
|
select hex(concat(-1));
|
||||||
|
@ -511,7 +511,7 @@ create table t1 as select concat(1 % 2) as c1;
|
|||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`c1` varchar(1) CHARACTER SET cp1251 DEFAULT NULL
|
`c1` varchar(2) CHARACTER SET cp1251 DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
select hex(concat(-1));
|
select hex(concat(-1));
|
||||||
|
@ -820,7 +820,7 @@ create table t1 as select concat(1 % 2) as c1;
|
|||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`c1` varchar(1) DEFAULT NULL
|
`c1` varchar(2) DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
select hex(concat(-1));
|
select hex(concat(-1));
|
||||||
|
@ -1700,7 +1700,7 @@ create table t1 as select concat(1 % 2) as c1;
|
|||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`c1` varchar(1) CHARACTER SET ucs2 DEFAULT NULL
|
`c1` varchar(2) CHARACTER SET ucs2 DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
select hex(concat(-1));
|
select hex(concat(-1));
|
||||||
|
@ -2571,7 +2571,7 @@ create table t1 as select concat(1 % 2) as c1;
|
|||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`c1` varchar(1) CHARACTER SET utf8 DEFAULT NULL
|
`c1` varchar(2) CHARACTER SET utf8 DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
select hex(concat(-1));
|
select hex(concat(-1));
|
||||||
|
@ -817,6 +817,64 @@ STDDEV_SAMP(ROUND('0', 309))
|
|||||||
0
|
0
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
#
|
#
|
||||||
|
# MDEV-20495 Assertion `precision > 0' failed in decimal_bin_size upon CREATE .. SELECT with zerofilled decimal
|
||||||
|
#
|
||||||
|
# Testing that dyadic arithmetic operations are symmetric
|
||||||
|
# for (+1) and (-1) and produce the same length in CONCAT(),
|
||||||
|
# because (+1) and (-1) have the same data type: signed int.
|
||||||
|
CREATE TABLE t1 AS SELECT
|
||||||
|
CONCAT(+1%2.0),
|
||||||
|
CONCAT(-1%2.0),
|
||||||
|
CONCAT(+1/2.0),
|
||||||
|
CONCAT(-1/2.0),
|
||||||
|
CONCAT(+1*2.0),
|
||||||
|
CONCAT(-1*2.0),
|
||||||
|
CONCAT(+1+2.0),
|
||||||
|
CONCAT(-1+2.0),
|
||||||
|
CONCAT(+1-2.0),
|
||||||
|
CONCAT(-1-2.0);
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`CONCAT(+1%2.0)` varchar(4) DEFAULT NULL,
|
||||||
|
`CONCAT(-1%2.0)` varchar(4) DEFAULT NULL,
|
||||||
|
`CONCAT(+1/2.0)` varchar(8) DEFAULT NULL,
|
||||||
|
`CONCAT(-1/2.0)` varchar(8) DEFAULT NULL,
|
||||||
|
`CONCAT(+1*2.0)` varchar(5) DEFAULT NULL,
|
||||||
|
`CONCAT(-1*2.0)` varchar(5) DEFAULT NULL,
|
||||||
|
`CONCAT(+1+2.0)` varchar(5) DEFAULT NULL,
|
||||||
|
`CONCAT(-1+2.0)` varchar(5) DEFAULT NULL,
|
||||||
|
`CONCAT(+1-2.0)` varchar(5) DEFAULT NULL,
|
||||||
|
`CONCAT(-1-2.0)` varchar(5) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 AS SELECT
|
||||||
|
CONCAT(+1%2),
|
||||||
|
CONCAT(-1%2),
|
||||||
|
CONCAT(+1/2),
|
||||||
|
CONCAT(-1/2),
|
||||||
|
CONCAT(+1*2),
|
||||||
|
CONCAT(-1*2),
|
||||||
|
CONCAT(+1+2),
|
||||||
|
CONCAT(-1+2),
|
||||||
|
CONCAT(+1-2),
|
||||||
|
CONCAT(-1-2);
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`CONCAT(+1%2)` varchar(2) DEFAULT NULL,
|
||||||
|
`CONCAT(-1%2)` varchar(2) DEFAULT NULL,
|
||||||
|
`CONCAT(+1/2)` varchar(7) DEFAULT NULL,
|
||||||
|
`CONCAT(-1/2)` varchar(7) DEFAULT NULL,
|
||||||
|
`CONCAT(+1*2)` varchar(3) DEFAULT NULL,
|
||||||
|
`CONCAT(-1*2)` varchar(3) DEFAULT NULL,
|
||||||
|
`CONCAT(+1+2)` varchar(3) DEFAULT NULL,
|
||||||
|
`CONCAT(-1+2)` varchar(3) DEFAULT NULL,
|
||||||
|
`CONCAT(+1-2)` varchar(3) DEFAULT NULL,
|
||||||
|
`CONCAT(-1-2)` varchar(3) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
# End of 5.5 tests
|
# End of 5.5 tests
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
|
@ -589,6 +589,44 @@ INSERT INTO t1 VALUES (1),(2);
|
|||||||
SELECT STDDEV_SAMP(ROUND('0', 309)) FROM t1;
|
SELECT STDDEV_SAMP(ROUND('0', 309)) FROM t1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-20495 Assertion `precision > 0' failed in decimal_bin_size upon CREATE .. SELECT with zerofilled decimal
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
--echo # Testing that dyadic arithmetic operations are symmetric
|
||||||
|
--echo # for (+1) and (-1) and produce the same length in CONCAT(),
|
||||||
|
--echo # because (+1) and (-1) have the same data type: signed int.
|
||||||
|
|
||||||
|
CREATE TABLE t1 AS SELECT
|
||||||
|
CONCAT(+1%2.0),
|
||||||
|
CONCAT(-1%2.0),
|
||||||
|
CONCAT(+1/2.0),
|
||||||
|
CONCAT(-1/2.0),
|
||||||
|
CONCAT(+1*2.0),
|
||||||
|
CONCAT(-1*2.0),
|
||||||
|
CONCAT(+1+2.0),
|
||||||
|
CONCAT(-1+2.0),
|
||||||
|
CONCAT(+1-2.0),
|
||||||
|
CONCAT(-1-2.0);
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
CREATE TABLE t1 AS SELECT
|
||||||
|
CONCAT(+1%2),
|
||||||
|
CONCAT(-1%2),
|
||||||
|
CONCAT(+1/2),
|
||||||
|
CONCAT(-1/2),
|
||||||
|
CONCAT(+1*2),
|
||||||
|
CONCAT(-1*2),
|
||||||
|
CONCAT(+1+2),
|
||||||
|
CONCAT(-1+2),
|
||||||
|
CONCAT(+1-2),
|
||||||
|
CONCAT(-1-2);
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # End of 5.5 tests
|
--echo # End of 5.5 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -2153,7 +2153,7 @@ Warning 1292 Truncated incorrect DECIMAL value: '2005-05-0410'
|
|||||||
SHOW CREATE TABLE t2;
|
SHOW CREATE TABLE t2;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t2 CREATE TABLE `t2` (
|
t2 CREATE TABLE `t2` (
|
||||||
`f2` varchar(26) DEFAULT NULL
|
`f2` varchar(22) DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
SELECT * FROM t2;
|
SELECT * FROM t2;
|
||||||
f2
|
f2
|
||||||
|
@ -647,17 +647,17 @@ SELECT
|
|||||||
1111111111 MOD 1,
|
1111111111 MOD 1,
|
||||||
11111111111 MOD 1 LIMIT 0;
|
11111111111 MOD 1 LIMIT 0;
|
||||||
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||||
def 1 MOD 1 3 1 0 Y 32896 0 63
|
def 1 MOD 1 3 2 0 Y 32896 0 63
|
||||||
def 11 MOD 1 3 2 0 Y 32896 0 63
|
def 11 MOD 1 3 3 0 Y 32896 0 63
|
||||||
def 111 MOD 1 3 3 0 Y 32896 0 63
|
def 111 MOD 1 3 4 0 Y 32896 0 63
|
||||||
def 1111 MOD 1 3 4 0 Y 32896 0 63
|
def 1111 MOD 1 3 5 0 Y 32896 0 63
|
||||||
def 11111 MOD 1 3 5 0 Y 32896 0 63
|
def 11111 MOD 1 3 6 0 Y 32896 0 63
|
||||||
def 111111 MOD 1 3 6 0 Y 32896 0 63
|
def 111111 MOD 1 3 7 0 Y 32896 0 63
|
||||||
def 1111111 MOD 1 3 7 0 Y 32896 0 63
|
def 1111111 MOD 1 3 8 0 Y 32896 0 63
|
||||||
def 11111111 MOD 1 3 8 0 Y 32896 0 63
|
def 11111111 MOD 1 3 9 0 Y 32896 0 63
|
||||||
def 111111111 MOD 1 3 9 0 Y 32896 0 63
|
def 111111111 MOD 1 8 10 0 Y 32896 0 63
|
||||||
def 1111111111 MOD 1 8 10 0 Y 32896 0 63
|
def 1111111111 MOD 1 8 11 0 Y 32896 0 63
|
||||||
def 11111111111 MOD 1 8 11 0 Y 32896 0 63
|
def 11111111111 MOD 1 8 12 0 Y 32896 0 63
|
||||||
1 MOD 1 11 MOD 1 111 MOD 1 1111 MOD 1 11111 MOD 1 111111 MOD 1 1111111 MOD 1 11111111 MOD 1 111111111 MOD 1 1111111111 MOD 1 11111111111 MOD 1
|
1 MOD 1 11 MOD 1 111 MOD 1 1111 MOD 1 11111 MOD 1 111111 MOD 1 1111111 MOD 1 11111111 MOD 1 111111111 MOD 1 1111111111 MOD 1 11111111111 MOD 1
|
||||||
SELECT
|
SELECT
|
||||||
-(1),
|
-(1),
|
||||||
|
@ -2038,6 +2038,70 @@ t1 CREATE TABLE `t1` (
|
|||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
#
|
#
|
||||||
|
# MDEV-20495 Assertion `precision > 0' failed in decimal_bin_size upon CREATE .. SELECT with zerofilled decimal
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (d DECIMAL(1,0) ZEROFILL);
|
||||||
|
CREATE TABLE t2 AS SELECT 0 MOD d AS f FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`f` decimal(1,0) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
CREATE TABLE t1 (d DECIMAL(1,0) UNSIGNED);
|
||||||
|
CREATE TABLE t2 AS SELECT 0 MOD d AS f FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`f` decimal(1,0) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE IF EXISTS t1,t2;
|
||||||
|
CREATE TABLE t1 (d DECIMAL(1,0) ZEROFILL);
|
||||||
|
CREATE TABLE t2 AS SELECT CAST(0 AS UNSIGNED) MOD d AS f FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`f` decimal(1,0) unsigned DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
CREATE TABLE t1 (d DECIMAL(1,0) UNSIGNED);
|
||||||
|
CREATE TABLE t2 AS SELECT CAST(0 AS UNSIGNED) MOD d AS f FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`f` decimal(1,0) unsigned DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
#
|
||||||
|
# MDEV-20560 Assertion `precision > 0' failed in decimal_bin_size upon SELECT with MOD short unsigned decimal
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a DECIMAL(1,0) UNSIGNED);
|
||||||
|
INSERT INTO t1 VALUES (1.0),(2.0);
|
||||||
|
SELECT DISTINCT 1 MOD a FROM t1;
|
||||||
|
1 MOD a
|
||||||
|
0
|
||||||
|
1
|
||||||
|
CREATE TABLE t2 AS SELECT DISTINCT 1 MOD a AS f FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`f` decimal(1,0) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
CREATE TABLE t1 (a DECIMAL(1,0) UNSIGNED);
|
||||||
|
INSERT INTO t1 VALUES (1.0),(2.0);
|
||||||
|
SELECT DISTINCT 1 MOD a FROM t1;
|
||||||
|
1 MOD a
|
||||||
|
0
|
||||||
|
1
|
||||||
|
CREATE TABLE t2 AS SELECT DISTINCT CAST(1 AS UNSIGNED) MOD a AS f FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`f` decimal(1,0) unsigned DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
#
|
||||||
# End of 5.5 tests
|
# End of 5.5 tests
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
|
@ -1627,6 +1627,49 @@ CREATE TABLE t1 AS SELECT 1.0 * 2.000;
|
|||||||
SHOW CREATE TABLE t1;
|
SHOW CREATE TABLE t1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-20495 Assertion `precision > 0' failed in decimal_bin_size upon CREATE .. SELECT with zerofilled decimal
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1 (d DECIMAL(1,0) ZEROFILL);
|
||||||
|
CREATE TABLE t2 AS SELECT 0 MOD d AS f FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
|
||||||
|
CREATE TABLE t1 (d DECIMAL(1,0) UNSIGNED);
|
||||||
|
CREATE TABLE t2 AS SELECT 0 MOD d AS f FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
DROP TABLE IF EXISTS t1,t2;
|
||||||
|
|
||||||
|
CREATE TABLE t1 (d DECIMAL(1,0) ZEROFILL);
|
||||||
|
CREATE TABLE t2 AS SELECT CAST(0 AS UNSIGNED) MOD d AS f FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
|
||||||
|
CREATE TABLE t1 (d DECIMAL(1,0) UNSIGNED);
|
||||||
|
CREATE TABLE t2 AS SELECT CAST(0 AS UNSIGNED) MOD d AS f FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-20560 Assertion `precision > 0' failed in decimal_bin_size upon SELECT with MOD short unsigned decimal
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a DECIMAL(1,0) UNSIGNED);
|
||||||
|
INSERT INTO t1 VALUES (1.0),(2.0);
|
||||||
|
SELECT DISTINCT 1 MOD a FROM t1;
|
||||||
|
CREATE TABLE t2 AS SELECT DISTINCT 1 MOD a AS f FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a DECIMAL(1,0) UNSIGNED);
|
||||||
|
INSERT INTO t1 VALUES (1.0),(2.0);
|
||||||
|
SELECT DISTINCT 1 MOD a FROM t1;
|
||||||
|
CREATE TABLE t2 AS SELECT DISTINCT CAST(1 AS UNSIGNED) MOD a AS f FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # End of 5.5 tests
|
--echo # End of 5.5 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -22,6 +22,7 @@ flush_caches=0
|
|||||||
numa_interleave=0
|
numa_interleave=0
|
||||||
wsrep_on=0
|
wsrep_on=0
|
||||||
dry_run=0
|
dry_run=0
|
||||||
|
defaults_group_suffix=
|
||||||
|
|
||||||
# Initial logging status: error log is not open, and not using syslog
|
# Initial logging status: error log is not open, and not using syslog
|
||||||
logging=init
|
logging=init
|
||||||
@ -349,6 +350,8 @@ parse_arguments() {
|
|||||||
append_arg_to_args "$arg"
|
append_arg_to_args "$arg"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
--defaults-group-suffix=*) defaults_group_suffix="$arg" ;;
|
||||||
|
|
||||||
--help) usage ;;
|
--help) usage ;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
@ -923,7 +926,7 @@ then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
for i in "$ledir/$MYSQLD" "$defaults" "--basedir=$MY_BASEDIR_VERSION" \
|
for i in "$ledir/$MYSQLD" "$defaults_group_suffix" "$defaults" "--basedir=$MY_BASEDIR_VERSION" \
|
||||||
"--datadir=$DATADIR" "--plugin-dir=$plugin_dir" "$USER_OPTION"
|
"--datadir=$DATADIR" "--plugin-dir=$plugin_dir" "$USER_OPTION"
|
||||||
do
|
do
|
||||||
cmd="$cmd "`shell_quote_string "$i"`
|
cmd="$cmd "`shell_quote_string "$i"`
|
||||||
|
@ -1854,8 +1854,11 @@ my_decimal *Item_func_mod::decimal_op(my_decimal *decimal_value)
|
|||||||
|
|
||||||
void Item_func_mod::result_precision()
|
void Item_func_mod::result_precision()
|
||||||
{
|
{
|
||||||
|
unsigned_flag= args[0]->unsigned_flag;
|
||||||
decimals= MY_MAX(args[0]->decimal_scale(), args[1]->decimal_scale());
|
decimals= MY_MAX(args[0]->decimal_scale(), args[1]->decimal_scale());
|
||||||
max_length= MY_MAX(args[0]->max_length, args[1]->max_length);
|
uint prec= MY_MAX(args[0]->decimal_precision(), args[1]->decimal_precision());
|
||||||
|
fix_char_length(my_decimal_precision_to_length_no_truncation(prec, decimals,
|
||||||
|
unsigned_flag));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1209,14 +1209,13 @@ public:
|
|||||||
}
|
}
|
||||||
void fix_length_and_dec_decimal()
|
void fix_length_and_dec_decimal()
|
||||||
{
|
{
|
||||||
Item_num_op::fix_length_and_dec_decimal();
|
result_precision();
|
||||||
unsigned_flag= args[0]->unsigned_flag;
|
fix_decimals();
|
||||||
}
|
}
|
||||||
void fix_length_and_dec_int()
|
void fix_length_and_dec_int()
|
||||||
{
|
{
|
||||||
max_length= MY_MAX(args[0]->max_length, args[1]->max_length);
|
result_precision();
|
||||||
decimals= 0;
|
DBUG_ASSERT(decimals == 0);
|
||||||
unsigned_flag= args[0]->unsigned_flag;
|
|
||||||
set_handler(type_handler_long_or_longlong());
|
set_handler(type_handler_long_or_longlong());
|
||||||
}
|
}
|
||||||
bool check_partition_func_processor(void *int_arg) {return FALSE;}
|
bool check_partition_func_processor(void *int_arg) {return FALSE;}
|
||||||
|
@ -26,7 +26,7 @@ New features compared to NISAM:
|
|||||||
- Index on BLOB and VARCHAR.
|
- Index on BLOB and VARCHAR.
|
||||||
- One can now have NULL in an index. This takes 0-1 bytes / key.
|
- One can now have NULL in an index. This takes 0-1 bytes / key.
|
||||||
- MYISAM will allow one to specify one AUTO_INCREMENT column; MYISAM will
|
- MYISAM will allow one to specify one AUTO_INCREMENT column; MYISAM will
|
||||||
automaticly update this on INSERT/UPDATE. The AUTO_INCREMENT value can be
|
automatically update this on INSERT/UPDATE. The AUTO_INCREMENT value can be
|
||||||
reset with myisamchk.
|
reset with myisamchk.
|
||||||
- Max key length will be 500 by default; In cases of longer keys than 250,
|
- Max key length will be 500 by default; In cases of longer keys than 250,
|
||||||
a bigger key block size than the default of 1024 byes is used for this key.
|
a bigger key block size than the default of 1024 byes is used for this key.
|
||||||
@ -39,7 +39,7 @@ New features compared to NISAM:
|
|||||||
- 'myisamchk -a' stores statistic for key parts (and not only for whole keys
|
- 'myisamchk -a' stores statistic for key parts (and not only for whole keys
|
||||||
as in NISAM).
|
as in NISAM).
|
||||||
- Dynamic size rows will now be much less fragmented when mixing deletes with
|
- Dynamic size rows will now be much less fragmented when mixing deletes with
|
||||||
update and insert. This is done by automaticly combine adjacent deleted
|
update and insert. This is done by automatically combining adjacent deleted
|
||||||
blocks and by extending blocks if the next block is deleted.
|
blocks and by extending blocks if the next block is deleted.
|
||||||
- For dynamic size rows, the delete link contains a pointer to itself
|
- For dynamic size rows, the delete link contains a pointer to itself
|
||||||
(to make repairs easier).
|
(to make repairs easier).
|
||||||
|
@ -335,7 +335,7 @@ static int _ftb_no_dupes_cmp(void* not_used __attribute__((unused)),
|
|||||||
When performing prefix search (a word with truncation operator), we
|
When performing prefix search (a word with truncation operator), we
|
||||||
must preserve original prefix to ensure that characters which may be
|
must preserve original prefix to ensure that characters which may be
|
||||||
expanded/contracted do not break the prefix. This is done by storing
|
expanded/contracted do not break the prefix. This is done by storing
|
||||||
newly found key immediatly after the original word in ftbw->word
|
newly found key immediately after the original word in ftbw->word
|
||||||
buffer.
|
buffer.
|
||||||
|
|
||||||
ftbw->word= LENGTH WORD [ LENGTH1 WORD1 ] WEIGHT REFERENCE
|
ftbw->word= LENGTH WORD [ LENGTH1 WORD1 ] WEIGHT REFERENCE
|
||||||
|
@ -769,8 +769,8 @@ int ha_myisam::open(const char *name, int mode, uint test_if_locked)
|
|||||||
growing files. Using an open_flag instead of calling mi_extra(...
|
growing files. Using an open_flag instead of calling mi_extra(...
|
||||||
HA_EXTRA_MMAP ...) after mi_open() has the advantage that the
|
HA_EXTRA_MMAP ...) after mi_open() has the advantage that the
|
||||||
mapping is not repeated for every open, but just done on the initial
|
mapping is not repeated for every open, but just done on the initial
|
||||||
open, when the MyISAM share is created. Everytime the server
|
open, when the MyISAM share is created. Every time the server
|
||||||
requires to open a new instance of a table it calls this method. We
|
requires opening a new instance of a table it calls this method. We
|
||||||
will always supply HA_OPEN_MMAP for a permanent table. However, the
|
will always supply HA_OPEN_MMAP for a permanent table. However, the
|
||||||
MyISAM storage engine will ignore this flag if this is a secondary
|
MyISAM storage engine will ignore this flag if this is a secondary
|
||||||
open of a table that is in use by other threads already (if the
|
open of a table that is in use by other threads already (if the
|
||||||
|
@ -282,7 +282,7 @@ static int check_k_link(HA_CHECK *param, register MI_INFO *info, uint nr)
|
|||||||
/*
|
/*
|
||||||
Read the key block with MI_MIN_KEY_BLOCK_LENGTH to find next link.
|
Read the key block with MI_MIN_KEY_BLOCK_LENGTH to find next link.
|
||||||
If the key cache block size is smaller than block_size, we can so
|
If the key cache block size is smaller than block_size, we can so
|
||||||
avoid unecessary eviction of cache block.
|
avoid unnecessary eviction of cache block.
|
||||||
*/
|
*/
|
||||||
if (!(buff=key_cache_read(info->s->key_cache,
|
if (!(buff=key_cache_read(info->s->key_cache,
|
||||||
info->s->kfile, next_link, DFLT_INIT_HITS,
|
info->s->kfile, next_link, DFLT_INIT_HITS,
|
||||||
@ -1896,7 +1896,7 @@ int flush_blocks(HA_CHECK *param, KEY_CACHE *key_cache, File file,
|
|||||||
} /* flush_blocks */
|
} /* flush_blocks */
|
||||||
|
|
||||||
|
|
||||||
/* Sort index for more efficent reads */
|
/* Sort index for more efficient reads */
|
||||||
|
|
||||||
int mi_sort_index(HA_CHECK *param, register MI_INFO *info, char * name)
|
int mi_sort_index(HA_CHECK *param, register MI_INFO *info, char * name)
|
||||||
{
|
{
|
||||||
@ -3051,13 +3051,13 @@ err:
|
|||||||
/*
|
/*
|
||||||
Destroy the write cache. The master thread did already detach from
|
Destroy the write cache. The master thread did already detach from
|
||||||
the share by remove_io_thread() or it was not yet started (if the
|
the share by remove_io_thread() or it was not yet started (if the
|
||||||
error happend before creating the thread).
|
error happened before creating the thread).
|
||||||
*/
|
*/
|
||||||
(void) end_io_cache(&info->rec_cache);
|
(void) end_io_cache(&info->rec_cache);
|
||||||
/*
|
/*
|
||||||
Destroy the new data cache in case of non-quick repair. All slave
|
Destroy the new data cache in case of non-quick repair. All slave
|
||||||
threads did either detach from the share by remove_io_thread()
|
threads did either detach from the share by remove_io_thread()
|
||||||
already or they were not yet started (if the error happend before
|
already or they were not yet started (if the error happened before
|
||||||
creating the threads).
|
creating the threads).
|
||||||
*/
|
*/
|
||||||
if (!rep_quick && my_b_inited(&new_data_cache))
|
if (!rep_quick && my_b_inited(&new_data_cache))
|
||||||
@ -4598,7 +4598,7 @@ void update_auto_increment_key(HA_CHECK *param, MI_INFO *info,
|
|||||||
keypart_k=c_k for arbitrary constants c_1 ... c_k)
|
keypart_k=c_k for arbitrary constants c_1 ... c_k)
|
||||||
|
|
||||||
= {assuming that values have uniform distribution and index contains all
|
= {assuming that values have uniform distribution and index contains all
|
||||||
tuples from the domain (or that {c_1, ..., c_k} tuple is choosen from
|
tuples from the domain (or that {c_1, ..., c_k} tuple is chosen from
|
||||||
index tuples}
|
index tuples}
|
||||||
|
|
||||||
= #tuples-in-the-index / #distinct-tuples-in-the-index.
|
= #tuples-in-the-index / #distinct-tuples-in-the-index.
|
||||||
|
@ -611,7 +611,7 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs,
|
|||||||
klinkname_ptr= klinkname;
|
klinkname_ptr= klinkname;
|
||||||
/*
|
/*
|
||||||
Don't create the table if the link or file exists to ensure that one
|
Don't create the table if the link or file exists to ensure that one
|
||||||
doesn't accidently destroy another table.
|
doesn't accidentally destroy another table.
|
||||||
*/
|
*/
|
||||||
create_flag=0;
|
create_flag=0;
|
||||||
}
|
}
|
||||||
|
@ -326,7 +326,7 @@ static int d_search(register MI_INFO *info, register MI_KEYDEF *keyinfo,
|
|||||||
{
|
{
|
||||||
DBUG_PRINT("error",("Didn't find key"));
|
DBUG_PRINT("error",("Didn't find key"));
|
||||||
mi_print_error(info->s, HA_ERR_CRASHED);
|
mi_print_error(info->s, HA_ERR_CRASHED);
|
||||||
my_errno=HA_ERR_CRASHED; /* This should never happend */
|
my_errno=HA_ERR_CRASHED; /* This should never happen */
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
save_flag=0;
|
save_flag=0;
|
||||||
|
@ -885,8 +885,8 @@ static int update_dynamic_record(MI_INFO *info, my_off_t filepos, uchar *record,
|
|||||||
/*
|
/*
|
||||||
Check if next block is a deleted block
|
Check if next block is a deleted block
|
||||||
Above we have MI_MIN_BLOCK_LENGTH to avoid the problem where
|
Above we have MI_MIN_BLOCK_LENGTH to avoid the problem where
|
||||||
the next block is so small it can't be splited which could
|
the next block is so small it can't be split which could
|
||||||
casue problems
|
cause problems
|
||||||
*/
|
*/
|
||||||
|
|
||||||
MI_BLOCK_INFO del_block;
|
MI_BLOCK_INFO del_block;
|
||||||
|
@ -211,7 +211,7 @@ int mi_extra(MI_INFO *info, enum ha_extra_function function, void *extra_arg)
|
|||||||
info->read_record= share->read_record;
|
info->read_record= share->read_record;
|
||||||
info->opt_flag&= ~(KEY_READ_USED | REMEMBER_OLD_POS);
|
info->opt_flag&= ~(KEY_READ_USED | REMEMBER_OLD_POS);
|
||||||
break;
|
break;
|
||||||
case HA_EXTRA_NO_USER_CHANGE: /* Database is somehow locked agains changes */
|
case HA_EXTRA_NO_USER_CHANGE: /* Database is somehow locked against changes */
|
||||||
info->lock_type= F_EXTRA_LCK; /* Simulate as locked */
|
info->lock_type= F_EXTRA_LCK; /* Simulate as locked */
|
||||||
break;
|
break;
|
||||||
case HA_EXTRA_WAIT_LOCK:
|
case HA_EXTRA_WAIT_LOCK:
|
||||||
@ -352,7 +352,7 @@ int mi_extra(MI_INFO *info, enum ha_extra_function function, void *extra_arg)
|
|||||||
if (share->base.blobs)
|
if (share->base.blobs)
|
||||||
mi_alloc_rec_buff(info, -1, &info->rec_buff);
|
mi_alloc_rec_buff(info, -1, &info->rec_buff);
|
||||||
break;
|
break;
|
||||||
case HA_EXTRA_NORMAL: /* Theese isn't in use */
|
case HA_EXTRA_NORMAL: /* These aren't in use */
|
||||||
info->quick_mode=0;
|
info->quick_mode=0;
|
||||||
break;
|
break;
|
||||||
case HA_EXTRA_QUICK:
|
case HA_EXTRA_QUICK:
|
||||||
|
@ -603,7 +603,7 @@ ulonglong retrieve_auto_increment(MI_INFO *info,const uchar *record)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
The following code works becasue if s_value < 0 then value is 0
|
The following code works because if s_value < 0 then value is 0
|
||||||
and if s_value == 0 then value will contain either s_value or the
|
and if s_value == 0 then value will contain either s_value or the
|
||||||
correct value.
|
correct value.
|
||||||
*/
|
*/
|
||||||
|
@ -446,7 +446,7 @@ my_bool mi_check_status(void *param)
|
|||||||
|
|
||||||
@param org_table
|
@param org_table
|
||||||
@param new_table that should point on org_lock. new_table is 0
|
@param new_table that should point on org_lock. new_table is 0
|
||||||
in case this is the first occurence of the table in the lock
|
in case this is the first occurrence of the table in the lock
|
||||||
structure.
|
structure.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -810,7 +810,7 @@ static void (*get_unpack_function(MI_COLUMNDEF *rec))
|
|||||||
return &uf_varchar2;
|
return &uf_varchar2;
|
||||||
case FIELD_LAST:
|
case FIELD_LAST:
|
||||||
default:
|
default:
|
||||||
return 0; /* This should never happend */
|
return 0; /* This should never happen */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
#include "myisamdef.h"
|
#include "myisamdef.h"
|
||||||
|
|
||||||
/* Read first row through a specfic key */
|
/* Read first row through a specific key */
|
||||||
|
|
||||||
int mi_rfirst(MI_INFO *info, uchar *buf, int inx)
|
int mi_rfirst(MI_INFO *info, uchar *buf, int inx)
|
||||||
{
|
{
|
||||||
|
@ -432,7 +432,7 @@ int _mi_prefix_search(MI_INFO *info, register MI_KEYDEF *keyinfo, uchar *page,
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
If prefix_len > cmplen then we are in the end-space comparison
|
If prefix_len > cmplen then we are in the end-space comparison
|
||||||
phase. Do not try to acces the key any more ==> left= 0.
|
phase. Do not try to access the key any more ==> left= 0.
|
||||||
*/
|
*/
|
||||||
left= ((len <= cmplen) ? suffix_len :
|
left= ((len <= cmplen) ? suffix_len :
|
||||||
((prefix_len < cmplen) ? cmplen - prefix_len : 0));
|
((prefix_len < cmplen) ? cmplen - prefix_len : 0));
|
||||||
|
@ -19,8 +19,8 @@
|
|||||||
# MA 02110-1335 USA
|
# MA 02110-1335 USA
|
||||||
|
|
||||||
#
|
#
|
||||||
# Execute some simple basic test on MyISAM libary to check if things
|
# Execute some simple basic tests on the MyISAM library to check if
|
||||||
# works at all.
|
# things work at all.
|
||||||
|
|
||||||
valgrind="valgrind --alignment=8 --leak-check=yes"
|
valgrind="valgrind --alignment=8 --leak-check=yes"
|
||||||
silent="-s"
|
silent="-s"
|
||||||
|
@ -378,7 +378,7 @@ static void usage(void)
|
|||||||
|
|
||||||
puts("Check options (check is the default action for myisamchk):\n\
|
puts("Check options (check is the default action for myisamchk):\n\
|
||||||
-c, --check Check table for errors.\n\
|
-c, --check Check table for errors.\n\
|
||||||
-e, --extend-check Check the table VERY throughly. Only use this in\n\
|
-e, --extend-check Check the table VERY thoroughly. Only use this in\n\
|
||||||
extreme cases as myisamchk should normally be able to\n\
|
extreme cases as myisamchk should normally be able to\n\
|
||||||
find out if the table is ok even without this switch.\n\
|
find out if the table is ok even without this switch.\n\
|
||||||
-F, --fast Check only tables that haven't been closed properly.\n\
|
-F, --fast Check only tables that haven't been closed properly.\n\
|
||||||
|
@ -197,7 +197,7 @@ typedef struct st_mi_isam_share
|
|||||||
ulong last_process; /* For table-change-check */
|
ulong last_process; /* For table-change-check */
|
||||||
ulong last_version; /* Version on start */
|
ulong last_version; /* Version on start */
|
||||||
ulong options; /* Options used */
|
ulong options; /* Options used */
|
||||||
ulong min_pack_length; /* Theese are used by packed data */
|
ulong min_pack_length; /* These are used by packed data */
|
||||||
ulong max_pack_length;
|
ulong max_pack_length;
|
||||||
ulong state_diff_length;
|
ulong state_diff_length;
|
||||||
uint rec_reflength; /* rec_reflength in use now */
|
uint rec_reflength; /* rec_reflength in use now */
|
||||||
|
@ -415,7 +415,7 @@ static int examine_log(char * file_name, char **table_names)
|
|||||||
left_root_right);
|
left_root_right);
|
||||||
file_info.id=open_param.max_id+1;
|
file_info.id=open_param.max_id+1;
|
||||||
/*
|
/*
|
||||||
* In the line below +10 is added to accomodate '<' and '>' chars
|
* In the line below +10 is added to accommodate '<' and '>' chars
|
||||||
* plus '\0' at the end, so that there is place for 7 digits.
|
* plus '\0' at the end, so that there is place for 7 digits.
|
||||||
* It is improbable that same table can have that many entries in
|
* It is improbable that same table can have that many entries in
|
||||||
* the table cache.
|
* the table cache.
|
||||||
|
@ -110,7 +110,7 @@ typedef struct st_isam_mrg {
|
|||||||
MI_INFO **file,**current,**end;
|
MI_INFO **file,**current,**end;
|
||||||
uint free_file;
|
uint free_file;
|
||||||
uint count;
|
uint count;
|
||||||
uint min_pack_length; /* Theese is used by packed data */
|
uint min_pack_length; /* These are used by packed data */
|
||||||
uint max_pack_length;
|
uint max_pack_length;
|
||||||
uint ref_length;
|
uint ref_length;
|
||||||
uint max_blob_length;
|
uint max_blob_length;
|
||||||
@ -1237,7 +1237,7 @@ static void check_counts(HUFF_COUNTS *huff_counts, uint trees,
|
|||||||
huff_counts->counts[0]=0;
|
huff_counts->counts[0]=0;
|
||||||
goto found_pack;
|
goto found_pack;
|
||||||
}
|
}
|
||||||
/* Remeber the number of significant spaces. */
|
/* Remember the number of significant spaces. */
|
||||||
old_space_count=huff_counts->counts[' '];
|
old_space_count=huff_counts->counts[' '];
|
||||||
/* Add all leading and trailing spaces. */
|
/* Add all leading and trailing spaces. */
|
||||||
huff_counts->counts[' ']+= (huff_counts->tot_end_space +
|
huff_counts->counts[' ']+= (huff_counts->tot_end_space +
|
||||||
|
@ -859,7 +859,7 @@ cleanup:
|
|||||||
buffpek Where to read from
|
buffpek Where to read from
|
||||||
sort_length max length to read
|
sort_length max length to read
|
||||||
RESULT
|
RESULT
|
||||||
> 0 Ammount of bytes read
|
> 0 Number of bytes read
|
||||||
-1 Error
|
-1 Error
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
# This logname can be set in /etc/my.cnf
|
# This logname can be set in /etc/my.cnf
|
||||||
# by setting the variable "err-log"
|
# by setting the variable "log-error"
|
||||||
# in the [safe_mysqld] section as follows:
|
# in the [mysqld] section as follows:
|
||||||
#
|
#
|
||||||
# [safe_mysqld]
|
# [mysqld]
|
||||||
# err-log=@localstatedir@/mysqld.log
|
# log-error=@localstatedir@/mysqld.log
|
||||||
#
|
#
|
||||||
# If the root user has a password you have to create a
|
# If the root user has a password you have to create a
|
||||||
# /root/.my.cnf configuration file with the following
|
# /root/.my.cnf configuration file with the following
|
||||||
@ -21,7 +21,7 @@
|
|||||||
@localstatedir@/mysqld.log {
|
@localstatedir@/mysqld.log {
|
||||||
# create 600 mysql mysql
|
# create 600 mysql mysql
|
||||||
notifempty
|
notifempty
|
||||||
daily
|
daily
|
||||||
rotate 3
|
rotate 3
|
||||||
missingok
|
missingok
|
||||||
compress
|
compress
|
||||||
|
Loading…
x
Reference in New Issue
Block a user