diff --git a/extra/mariabackup/backup_copy.cc b/extra/mariabackup/backup_copy.cc index d4bad03e313..31790198b19 100644 --- a/extra/mariabackup/backup_copy.cc +++ b/extra/mariabackup/backup_copy.cc @@ -1939,8 +1939,10 @@ copy_back() snprintf(filename, sizeof filename, "%s/%s101", dst_dir, LOG_FILE_NAME_PREFIX); unlink(filename); - } else if (!(ret = copy_or_move_file(ds_tmp, LOG_FILE_NAME, LOG_FILE_NAME, - dst_dir, 1))) { + } + + if (!(ret = copy_or_move_file(ds_tmp, LOG_FILE_NAME, LOG_FILE_NAME, + dst_dir, 1))) { goto cleanup; } ds_destroy(ds_tmp); diff --git a/extra/mariabackup/xtrabackup.cc b/extra/mariabackup/xtrabackup.cc index 83e3806eea1..d042b419d35 100644 --- a/extra/mariabackup/xtrabackup.cc +++ b/extra/mariabackup/xtrabackup.cc @@ -4723,7 +4723,10 @@ fail: goto fail; } - log_sys.create(); + if (!log_sys.create()) { + msg("Error: cannot initialize log subsystem"); + goto fail; + } log_sys.log.create(); log_sys.log.open_file(get_log_file_path()); @@ -6144,8 +6147,10 @@ static bool xtrabackup_prepare_func(char** argv) goto error_cleanup; } + if (!log_sys.create()) { + goto error_cleanup; + } recv_sys.create(); - log_sys.create(); recv_sys.recovery_on = true; xb_fil_io_init(); diff --git a/mysql-test/main/having.result b/mysql-test/main/having.result index d7cbadd5e75..bcb71b644c5 100644 --- a/mysql-test/main/having.result +++ b/mysql-test/main/having.result @@ -906,5 +906,54 @@ SELECT * FROM t HAVING f = 'foo'; f DROP TABLE t; # +# MDEV-29731 Crash when HAVING in a correlated subquery references +# columns in the outer query +# +CREATE TABLE t (a INT, b INT); +SELECT 1 FROM t +WHERE b = (SELECT 1 FROM t GROUP BY a HAVING b = a+1); +1 +DROP TABLE t; +CREATE TABLE t (a INT, b INT, c INT); +SELECT 1 FROM t +WHERE (b,c) = (SELECT 1,1 FROM t GROUP BY a HAVING b = a+1 and c = a-1); +1 +DROP TABLE t; +CREATE TABLE t (a TEXT, b INT UNIQUE); +SELECT 1 FROM t +WHERE b IN (SELECT 1 FROM t +GROUP BY '', a +HAVING (CASE b WHEN 1 +'' THEN 3 ELSE a END) +ORDER BY b) +GROUP BY b HAVING b = 1; +1 +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: '' +DROP TABLE t; +CREATE TABLE t (a INT, b CHAR KEY UNIQUE); +CREATE VIEW v AS SELECT * FROM t WHERE a LIKE '' GROUP BY b HAVING a > a; +SELECT * FROM v AS v1 NATURAL JOIN v AS v5 NATURAL JOIN v +WHERE a LIKE '' AND b IN (SELECT a FROM t +WHERE a LIKE '' + GROUP BY a +HAVING b LIKE (b < +1 OR a > 1) >= b); +a b +DROP VIEW v; +DROP TABLE t; +EXECUTE IMMEDIATE 'SELECT LEAD(c) OVER (ORDER BY c) + FROM (SELECT 0 AS c) AS a NATURAL JOIN (SELECT 0 AS c) AS b;'; +LEAD(c) OVER (ORDER BY c) +NULL +CREATE TABLE t (a INT); +UPDATE t SET a = '' + WHERE 1 IN (SELECT * FROM +(SELECT * FROM +(SELECT * FROM t AS v5 NATURAL JOIN t AS v4 NATURAL JOIN t) AS v3 +NATURAL JOIN t +GROUP BY a) AS v2 +WHERE (0, a) IN ((0,-1),(+1,0)) +ORDER BY 1+AVG(a) OVER (ORDER BY a)) ORDER BY a; +DROP TABLE t; +# # End of 10.4 tests # diff --git a/mysql-test/main/having.test b/mysql-test/main/having.test index 397b220978e..7b8e72cfe1d 100644 --- a/mysql-test/main/having.test +++ b/mysql-test/main/having.test @@ -950,8 +950,53 @@ DROP TABLE t1,t2; CREATE TABLE t (f VARCHAR(512)); INSERT INTO t VALUES ('a'),('b'); SELECT * FROM t HAVING f = 'foo'; +DROP TABLE t; -# Cleanup +--echo # +--echo # MDEV-29731 Crash when HAVING in a correlated subquery references +--echo # columns in the outer query +--echo # +CREATE TABLE t (a INT, b INT); +SELECT 1 FROM t + WHERE b = (SELECT 1 FROM t GROUP BY a HAVING b = a+1); +DROP TABLE t; + +CREATE TABLE t (a INT, b INT, c INT); +SELECT 1 FROM t + WHERE (b,c) = (SELECT 1,1 FROM t GROUP BY a HAVING b = a+1 and c = a-1); +DROP TABLE t; + +CREATE TABLE t (a TEXT, b INT UNIQUE); +SELECT 1 FROM t + WHERE b IN (SELECT 1 FROM t + GROUP BY '', a + HAVING (CASE b WHEN 1 +'' THEN 3 ELSE a END) + ORDER BY b) + GROUP BY b HAVING b = 1; +DROP TABLE t; + +CREATE TABLE t (a INT, b CHAR KEY UNIQUE); +CREATE VIEW v AS SELECT * FROM t WHERE a LIKE '' GROUP BY b HAVING a > a; +SELECT * FROM v AS v1 NATURAL JOIN v AS v5 NATURAL JOIN v + WHERE a LIKE '' AND b IN (SELECT a FROM t + WHERE a LIKE '' + GROUP BY a + HAVING b LIKE (b < +1 OR a > 1) >= b); +DROP VIEW v; +DROP TABLE t; + +EXECUTE IMMEDIATE 'SELECT LEAD(c) OVER (ORDER BY c) + FROM (SELECT 0 AS c) AS a NATURAL JOIN (SELECT 0 AS c) AS b;'; + +CREATE TABLE t (a INT); +UPDATE t SET a = '' + WHERE 1 IN (SELECT * FROM + (SELECT * FROM + (SELECT * FROM t AS v5 NATURAL JOIN t AS v4 NATURAL JOIN t) AS v3 + NATURAL JOIN t + GROUP BY a) AS v2 + WHERE (0, a) IN ((0,-1),(+1,0)) + ORDER BY 1+AVG(a) OVER (ORDER BY a)) ORDER BY a; DROP TABLE t; --echo # diff --git a/mysql-test/main/log_slow.result b/mysql-test/main/log_slow.result index 239aa4a2f34..09a64c8efc4 100644 --- a/mysql-test/main/log_slow.result +++ b/mysql-test/main/log_slow.result @@ -53,15 +53,15 @@ start_time timestamp(6) NO current_timestamp(6) on update current_timestamp(6) user_host mediumtext NO NULL query_time time(6) NO NULL lock_time time(6) NO NULL -rows_sent int(11) NO NULL -rows_examined int(11) NO NULL +rows_sent bigint(20) unsigned NO NULL +rows_examined bigint(20) unsigned NO NULL db varchar(512) NO NULL last_insert_id int(11) NO NULL insert_id int(11) NO NULL server_id int(10) unsigned NO NULL sql_text mediumtext NO NULL thread_id bigint(21) unsigned NO NULL -rows_affected int(11) NO NULL +rows_affected bigint(20) unsigned NO NULL flush slow logs; set long_query_time=0.1; set log_slow_filter=''; @@ -134,3 +134,54 @@ drop table t; # # End of 10.3 tests # +# +# MDEV-31742: incorrect examined rows in case of stored function usage +# +CREATE TABLE `tab_MDEV_30820` ( +`ID` int(11) NOT NULL AUTO_INCREMENT, +`NAME_F` varchar(50) DEFAULT NULL, +PRIMARY KEY (`ID`) +); +CREATE TABLE `tab2` ( +`ID` int(11) NOT NULL AUTO_INCREMENT, +`TAB1_ID` int(11) DEFAULT NULL, +PRIMARY KEY (`id`) +); +CREATE FUNCTION `get_zero`() RETURNS int(11) +BEGIN +RETURN(0) ; +END +// +for i in 1..100 do insert into tab_MDEV_30820 values (i,'qwerty'); end for ; // +for i in 1..1000 do insert into tab2 values (i,i+300); end for ; // +SET @old_slow_query_log= @@global.slow_query_log; +SET @old_log_output= @@global.log_output; +SET @old_long_query_time= @@long_query_time; +SET GLOBAL log_output= "TABLE"; +SET GLOBAL slow_query_log= ON; +SET SESSION slow_query_log=ON; +SET SESSION long_query_time= 0; +SELECT 0 as zero, (SELECT ID FROM tab2 where tab2.TAB1_ID = +tab_MDEV_30820.ID ORDER BY 1 LIMIT 1 ) AS F1 FROM tab_MDEV_30820 ORDER BY 2 DESC LIMIT 2; +zero F1 +0 NULL +0 NULL +SELECT get_zero() as zero, (SELECT ID FROM tab2 where tab2.TAB1_ID = +tab_MDEV_30820.ID ORDER BY 1 LIMIT 1) AS F1 FROM tab_MDEV_30820 ORDER BY 2 DESC LIMIT 2; +zero F1 +0 NULL +0 NULL +# should be the same rows_examined +SELECT rows_examined FROM mysql.slow_log WHERE sql_text LIKE '%SELECT%tab_MDEV_30820%'; +rows_examined +100202 +100202 +SET @@long_query_time= @old_long_query_time; +SET @@global.log_output= @old_log_output; +SET @@global.slow_query_log= @old_slow_query_log; +SET SESSION slow_query_log=default; +drop table tab_MDEV_30820, tab2; +drop function get_zero; +# +# End of 10.4 tests +# diff --git a/mysql-test/main/log_slow.test b/mysql-test/main/log_slow.test index c92dc76a48a..6120ac77756 100644 --- a/mysql-test/main/log_slow.test +++ b/mysql-test/main/log_slow.test @@ -121,3 +121,68 @@ drop table t; --echo # --echo # End of 10.3 tests --echo # + + +--echo # +--echo # MDEV-31742: incorrect examined rows in case of stored function usage +--echo # + + +CREATE TABLE `tab_MDEV_30820` ( +`ID` int(11) NOT NULL AUTO_INCREMENT, +`NAME_F` varchar(50) DEFAULT NULL, + PRIMARY KEY (`ID`) +); + + CREATE TABLE `tab2` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `TAB1_ID` int(11) DEFAULT NULL, + PRIMARY KEY (`id`) +); + +--disable_ps2_protocol + +--delimiter // +CREATE FUNCTION `get_zero`() RETURNS int(11) +BEGIN + RETURN(0) ; +END +// + +for i in 1..100 do insert into tab_MDEV_30820 values (i,'qwerty'); end for ; // +for i in 1..1000 do insert into tab2 values (i,i+300); end for ; // + +--delimiter ; + +SET @old_slow_query_log= @@global.slow_query_log; +SET @old_log_output= @@global.log_output; +SET @old_long_query_time= @@long_query_time; +SET GLOBAL log_output= "TABLE"; +SET GLOBAL slow_query_log= ON; + +SET SESSION slow_query_log=ON; +SET SESSION long_query_time= 0; + +SELECT 0 as zero, (SELECT ID FROM tab2 where tab2.TAB1_ID = +tab_MDEV_30820.ID ORDER BY 1 LIMIT 1 ) AS F1 FROM tab_MDEV_30820 ORDER BY 2 DESC LIMIT 2; + +SELECT get_zero() as zero, (SELECT ID FROM tab2 where tab2.TAB1_ID = +tab_MDEV_30820.ID ORDER BY 1 LIMIT 1) AS F1 FROM tab_MDEV_30820 ORDER BY 2 DESC LIMIT 2; + +--echo # should be the same rows_examined +SELECT rows_examined FROM mysql.slow_log WHERE sql_text LIKE '%SELECT%tab_MDEV_30820%'; + +## Reset to initial values +SET @@long_query_time= @old_long_query_time; +SET @@global.log_output= @old_log_output; +SET @@global.slow_query_log= @old_slow_query_log; +SET SESSION slow_query_log=default; + +drop table tab_MDEV_30820, tab2; +drop function get_zero; + +--enable_ps2_protocol + +--echo # +--echo # End of 10.4 tests +--echo # diff --git a/mysql-test/main/log_slow_debug.result b/mysql-test/main/log_slow_debug.result index c1fc91217f5..6c5071cc908 100644 --- a/mysql-test/main/log_slow_debug.result +++ b/mysql-test/main/log_slow_debug.result @@ -280,3 +280,32 @@ SET @@global.slow_query_log= @org_slow_query_log; SET @@global.log_output= @org_log_output; SET @@global.log_slow_admin_statements= @org_log_slow_admin_statements; DROP PROCEDURE show_slow_log; +# +# MDEV-30820: slow log Rows_examined out of range +# +CREATE TABLE `tab_MDEV_30820` ( +`ID` int(11) NOT NULL AUTO_INCREMENT, +`A` int(11), +PRIMARY KEY(ID) +); +insert into tab_MDEV_30820 values (null, 0),(null, 0); +SET @old_slow_query_log= @@global.slow_query_log; +SET @old_log_output= @@global.log_output; +SET @old_long_query_time= @@long_query_time; +SET @old_dbug= @@GLOBAL.debug_dbug; +SET GLOBAL log_output= "TABLE"; +SET GLOBAL slow_query_log= ON; +SET SESSION long_query_time= 0; +SET GLOBAL debug_dbug="+d,debug_huge_number_of_examined_rows"; +SELECT * FROM tab_MDEV_30820 ORDER BY 1; +ID A +1 0 +2 0 +SET GLOBAL debug_dbug=@old_dbug; +SET @@long_query_time= @old_long_query_time; +SET @@global.log_output= @old_log_output; +SET @@global.slow_query_log= @old_slow_query_log; +drop table tab_MDEV_30820; +# +# End of 10.4 test +# diff --git a/mysql-test/main/log_slow_debug.test b/mysql-test/main/log_slow_debug.test index a1bcb17b324..e11dd3b68ae 100644 --- a/mysql-test/main/log_slow_debug.test +++ b/mysql-test/main/log_slow_debug.test @@ -159,3 +159,41 @@ SET @@global.slow_query_log= @org_slow_query_log; SET @@global.log_output= @org_log_output; SET @@global.log_slow_admin_statements= @org_log_slow_admin_statements; DROP PROCEDURE show_slow_log; + + +--echo # +--echo # MDEV-30820: slow log Rows_examined out of range +--echo # + +CREATE TABLE `tab_MDEV_30820` ( +`ID` int(11) NOT NULL AUTO_INCREMENT, +`A` int(11), +PRIMARY KEY(ID) +); + +insert into tab_MDEV_30820 values (null, 0),(null, 0); + +SET @old_slow_query_log= @@global.slow_query_log; +SET @old_log_output= @@global.log_output; +SET @old_long_query_time= @@long_query_time; +SET @old_dbug= @@GLOBAL.debug_dbug; +SET GLOBAL log_output= "TABLE"; + +SET GLOBAL slow_query_log= ON; +SET SESSION long_query_time= 0; + +SET GLOBAL debug_dbug="+d,debug_huge_number_of_examined_rows"; +SELECT * FROM tab_MDEV_30820 ORDER BY 1; +SET GLOBAL debug_dbug=@old_dbug; + + +## Reset to initial values +SET @@long_query_time= @old_long_query_time; +SET @@global.log_output= @old_log_output; +SET @@global.slow_query_log= @old_slow_query_log; + +drop table tab_MDEV_30820; + +--echo # +--echo # End of 10.4 test +--echo # diff --git a/mysql-test/main/log_tables.result b/mysql-test/main/log_tables.result index d4f1f59ec1c..1d642c0ade1 100644 --- a/mysql-test/main/log_tables.result +++ b/mysql-test/main/log_tables.result @@ -73,15 +73,15 @@ slow_log CREATE TABLE `slow_log` ( `user_host` mediumtext NOT NULL, `query_time` time(6) NOT NULL, `lock_time` time(6) NOT NULL, - `rows_sent` int(11) NOT NULL, - `rows_examined` int(11) NOT NULL, + `rows_sent` bigint(20) unsigned NOT NULL, + `rows_examined` bigint(20) unsigned NOT NULL, `db` varchar(512) NOT NULL, `last_insert_id` int(11) NOT NULL, `insert_id` int(11) NOT NULL, `server_id` int(10) unsigned NOT NULL, `sql_text` mediumtext NOT NULL, `thread_id` bigint(21) unsigned NOT NULL, - `rows_affected` int(11) NOT NULL + `rows_affected` bigint(20) unsigned NOT NULL ) ENGINE=CSV DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci COMMENT='Slow log' show fields from mysql.slow_log; Field Type Null Key Default Extra @@ -89,15 +89,15 @@ start_time timestamp(6) NO current_timestamp(6) on update current_timestamp(6) user_host mediumtext NO NULL query_time time(6) NO NULL lock_time time(6) NO NULL -rows_sent int(11) NO NULL -rows_examined int(11) NO NULL +rows_sent bigint(20) unsigned NO NULL +rows_examined bigint(20) unsigned NO NULL db varchar(512) NO NULL last_insert_id int(11) NO NULL insert_id int(11) NO NULL server_id int(10) unsigned NO NULL sql_text mediumtext NO NULL thread_id bigint(21) unsigned NO NULL -rows_affected int(11) NO NULL +rows_affected bigint(20) unsigned NO NULL flush logs; flush tables; SET GLOBAL GENERAL_LOG=ON; @@ -180,15 +180,15 @@ slow_log CREATE TABLE `slow_log` ( `user_host` mediumtext NOT NULL, `query_time` time(6) NOT NULL, `lock_time` time(6) NOT NULL, - `rows_sent` int(11) NOT NULL, - `rows_examined` int(11) NOT NULL, + `rows_sent` bigint(20) unsigned NOT NULL, + `rows_examined` bigint(20) unsigned NOT NULL, `db` varchar(512) NOT NULL, `last_insert_id` int(11) NOT NULL, `insert_id` int(11) NOT NULL, `server_id` int(10) unsigned NOT NULL, `sql_text` mediumtext NOT NULL, `thread_id` bigint(21) unsigned NOT NULL, - `rows_affected` int(11) NOT NULL + `rows_affected` bigint(20) unsigned NOT NULL ) ENGINE=CSV DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci COMMENT='Slow log' alter table mysql.general_log engine=myisam; alter table mysql.slow_log engine=myisam; @@ -209,15 +209,15 @@ slow_log CREATE TABLE `slow_log` ( `user_host` mediumtext NOT NULL, `query_time` time(6) NOT NULL, `lock_time` time(6) NOT NULL, - `rows_sent` int(11) NOT NULL, - `rows_examined` int(11) NOT NULL, + `rows_sent` bigint(20) unsigned NOT NULL, + `rows_examined` bigint(20) unsigned NOT NULL, `db` varchar(512) NOT NULL, `last_insert_id` int(11) NOT NULL, `insert_id` int(11) NOT NULL, `server_id` int(10) unsigned NOT NULL, `sql_text` mediumtext NOT NULL, `thread_id` bigint(21) unsigned NOT NULL, - `rows_affected` int(11) NOT NULL + `rows_affected` bigint(20) unsigned NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci COMMENT='Slow log' set global general_log='ON'; set global slow_query_log='ON'; @@ -287,15 +287,15 @@ ON UPDATE CURRENT_TIMESTAMP, `user_host` mediumtext NOT NULL, `query_time` time(6) NOT NULL, `lock_time` time(6) NOT NULL, -`rows_sent` int(11) NOT NULL, -`rows_examined` int(11) NOT NULL, +`rows_sent` bigint(20) unsigned NOT NULL, +`rows_examined` bigint(20) unsigned NOT NULL, `db` varchar(512) NOT NULL, `last_insert_id` int(11) NOT NULL, `insert_id` int(11) NOT NULL, `server_id` int(10) unsigned NOT NULL, `sql_text` mediumtext NOT NULL, `thread_id` BIGINT(21) UNSIGNED NOT NULL, -`rows_affected` int(11) NOT NULL +`rows_affected` bigint(20) unsigned NOT NULL ) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log'; set global general_log='ON'; set global slow_query_log='ON'; @@ -580,15 +580,15 @@ CREATE TABLE `db_17876.slow_log_data` ( `user_host` mediumtext , `query_time` time(6) , `lock_time` time(6) , -`rows_sent` int(11) , -`rows_examined` int(11) , +`rows_sent` bigint(20) unsigned, +`rows_examined` bigint(20) unsigned, `db` varchar(512) default NULL, `last_insert_id` int(11) default NULL, `insert_id` int(11) default NULL, `server_id` int(11) default NULL, `sql_text` mediumtext, `thread_id` bigint(21) unsigned default NULL, -`rows_affected` int(11) default NULL +`rows_affected` bigint(20) unsigned default NULL ); CREATE TABLE `db_17876.general_log_data` ( `event_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, diff --git a/mysql-test/main/log_tables.test b/mysql-test/main/log_tables.test index 3ce49a21e7d..1eee6be0524 100644 --- a/mysql-test/main/log_tables.test +++ b/mysql-test/main/log_tables.test @@ -307,15 +307,15 @@ CREATE TABLE `slow_log` ( `user_host` mediumtext NOT NULL, `query_time` time(6) NOT NULL, `lock_time` time(6) NOT NULL, - `rows_sent` int(11) NOT NULL, - `rows_examined` int(11) NOT NULL, + `rows_sent` bigint(20) unsigned NOT NULL, + `rows_examined` bigint(20) unsigned NOT NULL, `db` varchar(512) NOT NULL, `last_insert_id` int(11) NOT NULL, `insert_id` int(11) NOT NULL, `server_id` int(10) unsigned NOT NULL, `sql_text` mediumtext NOT NULL, `thread_id` BIGINT(21) UNSIGNED NOT NULL, - `rows_affected` int(11) NOT NULL + `rows_affected` bigint(20) unsigned NOT NULL ) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log'; set global general_log='ON'; @@ -743,15 +743,15 @@ CREATE TABLE `db_17876.slow_log_data` ( `user_host` mediumtext , `query_time` time(6) , `lock_time` time(6) , - `rows_sent` int(11) , - `rows_examined` int(11) , + `rows_sent` bigint(20) unsigned, + `rows_examined` bigint(20) unsigned, `db` varchar(512) default NULL, `last_insert_id` int(11) default NULL, `insert_id` int(11) default NULL, `server_id` int(11) default NULL, `sql_text` mediumtext, `thread_id` bigint(21) unsigned default NULL, - `rows_affected` int(11) default NULL + `rows_affected` bigint(20) unsigned default NULL ); CREATE TABLE `db_17876.general_log_data` ( diff --git a/mysql-test/main/mysqldump.result b/mysql-test/main/mysqldump.result index d088572a4d4..f7939a54a05 100644 --- a/mysql-test/main/mysqldump.result +++ b/mysql-test/main/mysqldump.result @@ -5281,15 +5281,15 @@ slow_log CREATE TABLE `slow_log` ( `user_host` mediumtext NOT NULL, `query_time` time(6) NOT NULL, `lock_time` time(6) NOT NULL, - `rows_sent` int(11) NOT NULL, - `rows_examined` int(11) NOT NULL, + `rows_sent` bigint(20) unsigned NOT NULL, + `rows_examined` bigint(20) unsigned NOT NULL, `db` varchar(512) NOT NULL, `last_insert_id` int(11) NOT NULL, `insert_id` int(11) NOT NULL, `server_id` int(10) unsigned NOT NULL, `sql_text` mediumtext NOT NULL, `thread_id` bigint(21) unsigned NOT NULL, - `rows_affected` int(11) NOT NULL + `rows_affected` bigint(20) unsigned NOT NULL ) ENGINE=CSV DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci COMMENT='Slow log' SET @@global.log_output= @old_log_output_state; SET @@global.slow_query_log= @old_slow_query_log_state; @@ -5747,15 +5747,15 @@ CREATE TABLE IF NOT EXISTS `slow_log` ( `user_host` mediumtext NOT NULL, `query_time` time(6) NOT NULL, `lock_time` time(6) NOT NULL, - `rows_sent` int(11) NOT NULL, - `rows_examined` int(11) NOT NULL, + `rows_sent` bigint(20) unsigned NOT NULL, + `rows_examined` bigint(20) unsigned NOT NULL, `db` varchar(512) NOT NULL, `last_insert_id` int(11) NOT NULL, `insert_id` int(11) NOT NULL, `server_id` int(10) unsigned NOT NULL, `sql_text` mediumtext NOT NULL, `thread_id` bigint(21) unsigned NOT NULL, - `rows_affected` int(11) NOT NULL + `rows_affected` bigint(20) unsigned NOT NULL ) ENGINE=CSV DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci COMMENT='Slow log'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `innodb_index_stats`; @@ -5842,15 +5842,15 @@ CREATE TABLE IF NOT EXISTS `slow_log` ( `user_host` mediumtext NOT NULL, `query_time` time(6) NOT NULL, `lock_time` time(6) NOT NULL, - `rows_sent` int(11) NOT NULL, - `rows_examined` int(11) NOT NULL, + `rows_sent` bigint(20) unsigned NOT NULL, + `rows_examined` bigint(20) unsigned NOT NULL, `db` varchar(512) NOT NULL, `last_insert_id` int(11) NOT NULL, `insert_id` int(11) NOT NULL, `server_id` int(10) unsigned NOT NULL, `sql_text` mediumtext NOT NULL, `thread_id` bigint(21) unsigned NOT NULL, - `rows_affected` int(11) NOT NULL + `rows_affected` bigint(20) unsigned NOT NULL ) ENGINE=CSV DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci COMMENT='Slow log'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `innodb_index_stats`; @@ -5947,15 +5947,15 @@ CREATE TABLE IF NOT EXISTS `slow_log` ( `user_host` mediumtext NOT NULL, `query_time` time(6) NOT NULL, `lock_time` time(6) NOT NULL, - `rows_sent` int(11) NOT NULL, - `rows_examined` int(11) NOT NULL, + `rows_sent` bigint(20) unsigned NOT NULL, + `rows_examined` bigint(20) unsigned NOT NULL, `db` varchar(512) NOT NULL, `last_insert_id` int(11) NOT NULL, `insert_id` int(11) NOT NULL, `server_id` int(10) unsigned NOT NULL, `sql_text` mediumtext NOT NULL, `thread_id` bigint(21) unsigned NOT NULL, - `rows_affected` int(11) NOT NULL + `rows_affected` bigint(20) unsigned NOT NULL ) ENGINE=CSV DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci COMMENT='Slow log'; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `innodb_index_stats`; @@ -6395,15 +6395,15 @@ DROP TABLE IF EXISTS mysql.column_stats; - - + + - + diff --git a/mysql-test/main/system_mysql_db.result b/mysql-test/main/system_mysql_db.result index a14f8c8108d..34d4f89a0e5 100644 --- a/mysql-test/main/system_mysql_db.result +++ b/mysql-test/main/system_mysql_db.result @@ -204,15 +204,15 @@ slow_log CREATE TABLE `slow_log` ( `user_host` mediumtext NOT NULL, `query_time` time(6) NOT NULL, `lock_time` time(6) NOT NULL, - `rows_sent` int(11) NOT NULL, - `rows_examined` int(11) NOT NULL, + `rows_sent` bigint(20) unsigned NOT NULL, + `rows_examined` bigint(20) unsigned NOT NULL, `db` varchar(512) NOT NULL, `last_insert_id` int(11) NOT NULL, `insert_id` int(11) NOT NULL, `server_id` int(10) unsigned NOT NULL, `sql_text` mediumtext NOT NULL, `thread_id` bigint(21) unsigned NOT NULL, - `rows_affected` int(11) NOT NULL + `rows_affected` bigint(20) unsigned NOT NULL ) ENGINE=CSV DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci COMMENT='Slow log' show create table table_stats; Table Create Table diff --git a/mysql-test/main/system_mysql_db_fix40123.result b/mysql-test/main/system_mysql_db_fix40123.result index 686c53d212d..3586cf54e18 100644 --- a/mysql-test/main/system_mysql_db_fix40123.result +++ b/mysql-test/main/system_mysql_db_fix40123.result @@ -242,15 +242,15 @@ slow_log CREATE TABLE `slow_log` ( `user_host` mediumtext NOT NULL, `query_time` time(6) NOT NULL, `lock_time` time(6) NOT NULL, - `rows_sent` int(11) NOT NULL, - `rows_examined` int(11) NOT NULL, + `rows_sent` bigint(20) unsigned NOT NULL, + `rows_examined` bigint(20) unsigned NOT NULL, `db` varchar(512) NOT NULL, `last_insert_id` int(11) NOT NULL, `insert_id` int(11) NOT NULL, `server_id` int(10) unsigned NOT NULL, `sql_text` mediumtext NOT NULL, `thread_id` bigint(21) unsigned NOT NULL, - `rows_affected` int(11) NOT NULL + `rows_affected` bigint(20) unsigned NOT NULL ) ENGINE=CSV DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci COMMENT='Slow log' show create table table_stats; Table Create Table diff --git a/mysql-test/main/system_mysql_db_fix50030.result b/mysql-test/main/system_mysql_db_fix50030.result index 33920279c23..387ae31ce06 100644 --- a/mysql-test/main/system_mysql_db_fix50030.result +++ b/mysql-test/main/system_mysql_db_fix50030.result @@ -246,15 +246,15 @@ slow_log CREATE TABLE `slow_log` ( `user_host` mediumtext NOT NULL, `query_time` time(6) NOT NULL, `lock_time` time(6) NOT NULL, - `rows_sent` int(11) NOT NULL, - `rows_examined` int(11) NOT NULL, + `rows_sent` bigint(20) unsigned NOT NULL, + `rows_examined` bigint(20) unsigned NOT NULL, `db` varchar(512) NOT NULL, `last_insert_id` int(11) NOT NULL, `insert_id` int(11) NOT NULL, `server_id` int(10) unsigned NOT NULL, `sql_text` mediumtext NOT NULL, `thread_id` bigint(21) unsigned NOT NULL, - `rows_affected` int(11) NOT NULL + `rows_affected` bigint(20) unsigned NOT NULL ) ENGINE=CSV DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci COMMENT='Slow log' show create table table_stats; Table Create Table diff --git a/mysql-test/main/system_mysql_db_fix50117.result b/mysql-test/main/system_mysql_db_fix50117.result index ce657d433f9..411c8b47f67 100644 --- a/mysql-test/main/system_mysql_db_fix50117.result +++ b/mysql-test/main/system_mysql_db_fix50117.result @@ -226,15 +226,15 @@ slow_log CREATE TABLE `slow_log` ( `user_host` mediumtext NOT NULL, `query_time` time(6) NOT NULL, `lock_time` time(6) NOT NULL, - `rows_sent` int(11) NOT NULL, - `rows_examined` int(11) NOT NULL, + `rows_sent` bigint(20) unsigned NOT NULL, + `rows_examined` bigint(20) unsigned NOT NULL, `db` varchar(512) NOT NULL, `last_insert_id` int(11) NOT NULL, `insert_id` int(11) NOT NULL, `server_id` int(10) unsigned NOT NULL, `sql_text` mediumtext NOT NULL, `thread_id` bigint(21) unsigned NOT NULL, - `rows_affected` int(11) NOT NULL + `rows_affected` bigint(20) unsigned NOT NULL ) ENGINE=CSV DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci COMMENT='Slow log' show create table table_stats; Table Create Table diff --git a/mysql-test/main/system_mysql_db_fix50568.result b/mysql-test/main/system_mysql_db_fix50568.result index 264e1e8739f..16ff841b886 100644 --- a/mysql-test/main/system_mysql_db_fix50568.result +++ b/mysql-test/main/system_mysql_db_fix50568.result @@ -247,15 +247,15 @@ slow_log CREATE TABLE `slow_log` ( `user_host` mediumtext NOT NULL, `query_time` time(6) NOT NULL, `lock_time` time(6) NOT NULL, - `rows_sent` int(11) NOT NULL, - `rows_examined` int(11) NOT NULL, + `rows_sent` bigint(20) unsigned NOT NULL, + `rows_examined` bigint(20) unsigned NOT NULL, `db` varchar(512) NOT NULL, `last_insert_id` int(11) NOT NULL, `insert_id` int(11) NOT NULL, `server_id` int(10) unsigned NOT NULL, `sql_text` mediumtext NOT NULL, `thread_id` bigint(21) unsigned NOT NULL, - `rows_affected` int(11) NOT NULL + `rows_affected` bigint(20) unsigned NOT NULL ) ENGINE=CSV DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci COMMENT='Slow log' show create table table_stats; Table Create Table diff --git a/mysql-test/suite/funcs_1/r/is_columns_mysql.result b/mysql-test/suite/funcs_1/r/is_columns_mysql.result index ef4832cdb8a..30320b0f59f 100644 --- a/mysql-test/suite/funcs_1/r/is_columns_mysql.result +++ b/mysql-test/suite/funcs_1/r/is_columns_mysql.result @@ -171,9 +171,9 @@ def mysql slow_log insert_id 9 NULL NO int NULL NULL 10 0 NULL NULL NULL int(11) def mysql slow_log last_insert_id 8 NULL NO int NULL NULL 10 0 NULL NULL NULL int(11) select,insert,update,references NEVER NULL def mysql slow_log lock_time 4 NULL NO time NULL NULL NULL NULL 6 NULL NULL time(6) select,insert,update,references NEVER NULL def mysql slow_log query_time 3 NULL NO time NULL NULL NULL NULL 6 NULL NULL time(6) select,insert,update,references NEVER NULL -def mysql slow_log rows_affected 13 NULL NO int NULL NULL 10 0 NULL NULL NULL int(11) select,insert,update,references NEVER NULL -def mysql slow_log rows_examined 6 NULL NO int NULL NULL 10 0 NULL NULL NULL int(11) select,insert,update,references NEVER NULL -def mysql slow_log rows_sent 5 NULL NO int NULL NULL 10 0 NULL NULL NULL int(11) select,insert,update,references NEVER NULL +def mysql slow_log rows_affected 13 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(20) unsigned select,insert,update,references NEVER NULL +def mysql slow_log rows_examined 6 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(20) unsigned select,insert,update,references NEVER NULL +def mysql slow_log rows_sent 5 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(20) unsigned select,insert,update,references NEVER NULL def mysql slow_log server_id 10 NULL NO int NULL NULL 10 0 NULL NULL NULL int(10) unsigned select,insert,update,references NEVER NULL def mysql slow_log sql_text 11 NULL NO mediumtext 16777215 16777215 NULL NULL NULL utf8mb3 utf8mb3_general_ci mediumtext select,insert,update,references NEVER NULL def mysql slow_log start_time 1 current_timestamp(6) NO timestamp NULL NULL NULL NULL 6 NULL NULL timestamp(6) on update current_timestamp(6) select,insert,update,references NEVER NULL @@ -497,15 +497,15 @@ NULL mysql slow_log start_time timestamp NULL NULL NULL NULL timestamp(6) 1.0000 mysql slow_log user_host mediumtext 16777215 16777215 utf8mb3 utf8mb3_general_ci mediumtext NULL mysql slow_log query_time time NULL NULL NULL NULL time(6) NULL mysql slow_log lock_time time NULL NULL NULL NULL time(6) -NULL mysql slow_log rows_sent int NULL NULL NULL NULL int(11) -NULL mysql slow_log rows_examined int NULL NULL NULL NULL int(11) +NULL mysql slow_log rows_sent bigint NULL NULL NULL NULL bigint(20) unsigned +NULL mysql slow_log rows_examined bigint NULL NULL NULL NULL bigint(20) unsigned 3.0000 mysql slow_log db varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) NULL mysql slow_log last_insert_id int NULL NULL NULL NULL int(11) NULL mysql slow_log insert_id int NULL NULL NULL NULL int(11) NULL mysql slow_log server_id int NULL NULL NULL NULL int(10) unsigned 1.0000 mysql slow_log sql_text mediumtext 16777215 16777215 utf8mb3 utf8mb3_general_ci mediumtext NULL mysql slow_log thread_id bigint NULL NULL NULL NULL bigint(21) unsigned -NULL mysql slow_log rows_affected int NULL NULL NULL NULL int(11) +NULL mysql slow_log rows_affected bigint NULL NULL NULL NULL bigint(20) unsigned 3.0000 mysql tables_priv Host char 255 765 utf8mb3 utf8mb3_bin char(255) 3.0000 mysql tables_priv Db char 64 192 utf8mb3 utf8mb3_bin char(64) 3.0000 mysql tables_priv User char 128 384 utf8mb3 utf8mb3_bin char(128) diff --git a/mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result b/mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result index 1a794c2828d..bd9504011c2 100644 --- a/mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result +++ b/mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result @@ -157,9 +157,9 @@ def mysql slow_log insert_id 9 NULL NO int NULL NULL 10 0 NULL NULL NULL int(11) def mysql slow_log last_insert_id 8 NULL NO int NULL NULL 10 0 NULL NULL NULL int(11) NEVER NULL def mysql slow_log lock_time 4 NULL NO time NULL NULL NULL NULL 6 NULL NULL time(6) NEVER NULL def mysql slow_log query_time 3 NULL NO time NULL NULL NULL NULL 6 NULL NULL time(6) NEVER NULL -def mysql slow_log rows_affected 13 NULL NO int NULL NULL 10 0 NULL NULL NULL int(11) NEVER NULL -def mysql slow_log rows_examined 6 NULL NO int NULL NULL 10 0 NULL NULL NULL int(11) NEVER NULL -def mysql slow_log rows_sent 5 NULL NO int NULL NULL 10 0 NULL NULL NULL int(11) NEVER NULL +def mysql slow_log rows_affected 13 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(20) unsigned NEVER NULL +def mysql slow_log rows_examined 6 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(20) unsigned NEVER NULL +def mysql slow_log rows_sent 5 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(20) unsigned NEVER NULL def mysql slow_log server_id 10 NULL NO int NULL NULL 10 0 NULL NULL NULL int(10) unsigned NEVER NULL def mysql slow_log sql_text 11 NULL NO mediumtext 16777215 16777215 NULL NULL NULL utf8mb3 utf8mb3_general_ci mediumtext NEVER NULL def mysql slow_log start_time 1 current_timestamp(6) NO timestamp NULL NULL NULL NULL 6 NULL NULL timestamp(6) on update current_timestamp(6) NEVER NULL @@ -480,15 +480,15 @@ NULL mysql slow_log start_time timestamp NULL NULL NULL NULL timestamp(6) 1.0000 mysql slow_log user_host mediumtext 16777215 16777215 utf8mb3 utf8mb3_general_ci mediumtext NULL mysql slow_log query_time time NULL NULL NULL NULL time(6) NULL mysql slow_log lock_time time NULL NULL NULL NULL time(6) -NULL mysql slow_log rows_sent int NULL NULL NULL NULL int(11) -NULL mysql slow_log rows_examined int NULL NULL NULL NULL int(11) +NULL mysql slow_log rows_sent bigint NULL NULL NULL NULL bigint(20) unsigned +NULL mysql slow_log rows_examined bigint NULL NULL NULL NULL bigint(20) unsigned 3.0000 mysql slow_log db varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) NULL mysql slow_log last_insert_id int NULL NULL NULL NULL int(11) NULL mysql slow_log insert_id int NULL NULL NULL NULL int(11) NULL mysql slow_log server_id int NULL NULL NULL NULL int(10) unsigned 1.0000 mysql slow_log sql_text mediumtext 16777215 16777215 utf8mb3 utf8mb3_general_ci mediumtext NULL mysql slow_log thread_id bigint NULL NULL NULL NULL bigint(21) unsigned -NULL mysql slow_log rows_affected int NULL NULL NULL NULL int(11) +NULL mysql slow_log rows_affected bigint NULL NULL NULL NULL bigint(20) unsigned 3.0000 mysql tables_priv Host char 255 765 utf8mb3 utf8mb3_bin char(255) 3.0000 mysql tables_priv Db char 64 192 utf8mb3 utf8mb3_bin char(64) 3.0000 mysql tables_priv User char 128 384 utf8mb3 utf8mb3_bin char(128) diff --git a/mysql-test/suite/innodb/r/log_buffer_size.result b/mysql-test/suite/innodb/r/log_buffer_size.result new file mode 100644 index 00000000000..5e1c6c25cb9 --- /dev/null +++ b/mysql-test/suite/innodb/r/log_buffer_size.result @@ -0,0 +1,6 @@ +# restart: --innodb-log-buffer-size=1125899906842624 +SELECT * FROM INFORMATION_SCHEMA.ENGINES WHERE engine = 'innodb' +AND support IN ('YES', 'DEFAULT', 'ENABLED'); +ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS +FOUND 1 /InnoDB: Cannot allocate memory; too large innodb_log_buffer_size\?/ in mysqld.1.err +# restart diff --git a/mysql-test/suite/innodb/t/log_buffer_size.test b/mysql-test/suite/innodb/t/log_buffer_size.test new file mode 100644 index 00000000000..7fed6079de6 --- /dev/null +++ b/mysql-test/suite/innodb/t/log_buffer_size.test @@ -0,0 +1,23 @@ +--source include/have_innodb.inc +--source include/no_valgrind_without_big.inc +# the parameter is only 32-bit on Windows +--source include/not_windows.inc + +--disable_query_log +call mtr.add_suppression("\\[Warning\\] option 'innodb-log-buffer-size': unsigned value 1125899906842624 adjusted"); +call mtr.add_suppression("InnoDB: Cannot allocate memory; too large innodb_log_buffer_size\\?"); +call mtr.add_suppression("\\[ERROR\\] InnoDB: Plugin initialization aborted"); +call mtr.add_suppression("\\[ERROR\\] Plugin 'InnoDB' registration as a STORAGE ENGINE failed"); +--enable_query_log + +--let $restart_parameters= --innodb-log-buffer-size=1125899906842624 +--source include/restart_mysqld.inc +SELECT * FROM INFORMATION_SCHEMA.ENGINES WHERE engine = 'innodb' +AND support IN ('YES', 'DEFAULT', 'ENABLED'); + +--let SEARCH_FILE = $MYSQLTEST_VARDIR/log/mysqld.1.err +--let SEARCH_PATTERN=InnoDB: Cannot allocate memory; too large innodb_log_buffer_size\\? +--source include/search_pattern_in_file.inc + +--let $restart_parameters= +--source include/restart_mysqld.inc diff --git a/mysql-test/suite/rpl/r/rpl_mysql_upgrade.result b/mysql-test/suite/rpl/r/rpl_mysql_upgrade.result index f3cffb6c4d8..621097e9ff8 100644 --- a/mysql-test/suite/rpl/r/rpl_mysql_upgrade.result +++ b/mysql-test/suite/rpl/r/rpl_mysql_upgrade.result @@ -28,8 +28,8 @@ slow_log CREATE TABLE `slow_log` ( `user_host` mediumtext NOT NULL, `query_time` time(6) NOT NULL, `lock_time` time(6) NOT NULL, - `rows_sent` int(11) NOT NULL, - `rows_examined` int(11) NOT NULL, + `rows_sent` bigint(20) unsigned NOT NULL, + `rows_examined` bigint(20) unsigned NOT NULL, `db` varchar(512) NOT NULL, `last_insert_id` int(11) NOT NULL, `insert_id` int(11) NOT NULL, @@ -48,15 +48,15 @@ slow_log CREATE TABLE `slow_log` ( `user_host` mediumtext NOT NULL, `query_time` time(6) NOT NULL, `lock_time` time(6) NOT NULL, - `rows_sent` int(11) NOT NULL, - `rows_examined` int(11) NOT NULL, + `rows_sent` bigint(20) unsigned NOT NULL, + `rows_examined` bigint(20) unsigned NOT NULL, `db` varchar(512) NOT NULL, `last_insert_id` int(11) NOT NULL, `insert_id` int(11) NOT NULL, `server_id` int(10) unsigned NOT NULL, `sql_text` mediumtext NOT NULL, `thread_id` bigint(21) unsigned NOT NULL, - `rows_affected` int(11) NOT NULL + `rows_affected` bigint(20) unsigned NOT NULL ) ENGINE=CSV DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci COMMENT='Slow log' SET GLOBAL general_log = 'OFF'; SET GLOBAL slow_query_log = 'OFF'; diff --git a/scripts/mysql_system_tables.sql b/scripts/mysql_system_tables.sql index bc0b6347e86..37da215588a 100644 --- a/scripts/mysql_system_tables.sql +++ b/scripts/mysql_system_tables.sql @@ -161,7 +161,7 @@ DROP PREPARE stmt; -- Create slow_log if CSV is enabled. -SET @str = IF (@have_csv = 'YES', 'CREATE TABLE IF NOT EXISTS slow_log (start_time TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, user_host MEDIUMTEXT NOT NULL, query_time TIME(6) NOT NULL, lock_time TIME(6) NOT NULL, rows_sent INTEGER NOT NULL, rows_examined INTEGER NOT NULL, db VARCHAR(512) NOT NULL, last_insert_id INTEGER NOT NULL, insert_id INTEGER NOT NULL, server_id INTEGER UNSIGNED NOT NULL, sql_text MEDIUMTEXT NOT NULL, thread_id BIGINT(21) UNSIGNED NOT NULL, rows_affected INTEGER NOT NULL) engine=CSV CHARACTER SET utf8mb3 comment="Slow log"', 'SET @dummy = 0'); +SET @str = IF (@have_csv = 'YES', 'CREATE TABLE IF NOT EXISTS slow_log (start_time TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, user_host MEDIUMTEXT NOT NULL, query_time TIME(6) NOT NULL, lock_time TIME(6) NOT NULL, rows_sent BIGINT UNSIGNED NOT NULL, rows_examined BIGINT UNSIGNED NOT NULL, db VARCHAR(512) NOT NULL, last_insert_id INTEGER NOT NULL, insert_id INTEGER NOT NULL, server_id INTEGER UNSIGNED NOT NULL, sql_text MEDIUMTEXT NOT NULL, thread_id BIGINT(21) UNSIGNED NOT NULL, rows_affected BIGINT UNSIGNED NOT NULL) engine=CSV CHARACTER SET utf8mb3 comment="Slow log"', 'SET @dummy = 0'); PREPARE stmt FROM @str; EXECUTE stmt; diff --git a/scripts/mysql_system_tables_fix.sql b/scripts/mysql_system_tables_fix.sql index 8edefc9dd20..f850a2d8dd6 100644 --- a/scripts/mysql_system_tables_fix.sql +++ b/scripts/mysql_system_tables_fix.sql @@ -286,23 +286,23 @@ SET GLOBAL general_log = @old_log_state; SET @old_log_state = @@global.slow_query_log; SET GLOBAL slow_query_log = 'OFF'; -ALTER TABLE slow_log - ADD COLUMN thread_id BIGINT(21) UNSIGNED NOT NULL AFTER sql_text; -ALTER TABLE slow_log - ADD COLUMN rows_affected INTEGER NOT NULL AFTER thread_id; ALTER TABLE slow_log MODIFY start_time TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, MODIFY user_host MEDIUMTEXT NOT NULL, MODIFY query_time TIME(6) NOT NULL, MODIFY lock_time TIME(6) NOT NULL, - MODIFY rows_sent INTEGER NOT NULL, - MODIFY rows_examined INTEGER NOT NULL, + MODIFY rows_sent BIGINT UNSIGNED NOT NULL, + MODIFY rows_examined BIGINT UNSIGNED NOT NULL, MODIFY db VARCHAR(512) NOT NULL, MODIFY last_insert_id INTEGER NOT NULL, MODIFY insert_id INTEGER NOT NULL, MODIFY server_id INTEGER UNSIGNED NOT NULL, - MODIFY sql_text MEDIUMTEXT NOT NULL, - MODIFY thread_id BIGINT(21) UNSIGNED NOT NULL; + MODIFY sql_text MEDIUMTEXT NOT NULL; +ALTER TABLE slow_log + ADD COLUMN thread_id BIGINT(21) UNSIGNED NOT NULL AFTER sql_text; +ALTER TABLE slow_log + MODIFY thread_id BIGINT(21) UNSIGNED NOT NULL, + ADD COLUMN rows_affected BIGINT UNSIGNED NOT NULL AFTER thread_id; SET GLOBAL slow_query_log = @old_log_state; ALTER TABLE plugin diff --git a/scripts/wsrep_sst_mysqldump.sh b/scripts/wsrep_sst_mysqldump.sh index e1efcbf11ad..5bd2e9ff656 100644 --- a/scripts/wsrep_sst_mysqldump.sh +++ b/scripts/wsrep_sst_mysqldump.sh @@ -85,7 +85,7 @@ PREPARE stmt FROM @stmt; EXECUTE stmt; DROP PREPARE stmt; -SET @stmt = IF (@cond = '1', 'CREATE TABLE IF NOT EXISTS slow_log ( start_time timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), user_host mediumtext NOT NULL, query_time time(6) NOT NULL, lock_time time(6) NOT NULL, rows_sent int(11) NOT NULL, rows_examined int(11) NOT NULL, db varchar(512) NOT NULL, last_insert_id int(11) NOT NULL, insert_id int(11) NOT NULL, server_id int(10) unsigned NOT NULL, sql_text mediumtext NOT NULL, thread_id bigint(21) unsigned NOT NULL) ENGINE=CSV DEFAULT CHARSET=utf8mb3 COMMENT=\"Slow log\"', 'SET @dummy = 0'); +SET @stmt = IF (@cond = '1', 'CREATE TABLE IF NOT EXISTS slow_log ( start_time timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), user_host mediumtext NOT NULL, query_time time(6) NOT NULL, lock_time time(6) NOT NULL, rows_sent bigint(20) UNSIGNED NOT NULL, rows_examined bigint(20) UNSIGNED NOT NULL, db varchar(512) NOT NULL, last_insert_id int(11) NOT NULL, insert_id int(11) NOT NULL, server_id int(10) unsigned NOT NULL, sql_text mediumtext NOT NULL, thread_id bigint(21) unsigned NOT NULL) ENGINE=CSV DEFAULT CHARSET=utf8mb3 COMMENT=\"Slow log\"', 'SET @dummy = 0'); PREPARE stmt FROM @stmt; EXECUTE stmt; diff --git a/sql/item.cc b/sql/item.cc index bf0426322ed..1e03614ebf9 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -8133,7 +8133,7 @@ bool Item_ref::fix_fields(THD *thd, Item **reference) if (from_field != not_found_field) { Item_field* fld; - if (!(fld= new (thd->mem_root) Item_field(thd, from_field))) + if (!(fld= new (thd->mem_root) Item_field(thd, context, from_field))) goto error; thd->change_item_tree(reference, fld); mark_as_dependent(thd, last_checked_context->select_lex, diff --git a/sql/sql_class.cc b/sql/sql_class.cc index d86f79fb5fe..1b78f88bd3c 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -68,8 +68,6 @@ #include "wsrep_thd.h" #include "wsrep_trans_observer.h" #include "wsrep_server_state.h" -#else -static inline bool wsrep_is_bf_aborted(THD* thd) { return false; } #endif /* WITH_WSREP */ #include "opt_trace.h" #include @@ -5860,7 +5858,6 @@ void THD::restore_sub_statement_state(Sub_statement_state *backup) The following is added to the old values as we are interested in the total complexity of the query */ - inc_examined_row_count(backup->examined_row_count); cuted_fields+= backup->cuted_fields; DBUG_VOID_RETURN; } @@ -5943,6 +5940,8 @@ void THD::set_examined_row_count(ha_rows count) void THD::inc_sent_row_count(ha_rows count) { m_sent_row_count+= count; + DBUG_EXECUTE_IF("debug_huge_number_of_examined_rows", + m_examined_row_count= (ULONGLONG_MAX - 1000000);); MYSQL_SET_STATEMENT_ROWS_SENT(m_statement_psi, m_sent_row_count); } diff --git a/sql/sql_tvc.cc b/sql/sql_tvc.cc index bd6e09d3ab9..70657291271 100644 --- a/sql/sql_tvc.cc +++ b/sql/sql_tvc.cc @@ -258,7 +258,7 @@ bool table_value_constr::prepare(THD *thd, SELECT_LEX *sl, List_item *first_elem= li++; uint cnt= first_elem->elements; - Type_holder *holders; + Type_holder *holders= type_holders; if (cnt == 0) { @@ -269,32 +269,35 @@ bool table_value_constr::prepare(THD *thd, SELECT_LEX *sl, if (fix_fields_for_tvc(thd, li)) DBUG_RETURN(true); - if (!(holders= new (thd->stmt_arena->mem_root) Type_holder[cnt]) || - join_type_handlers_for_tvc(thd, li, holders, cnt) || - get_type_attributes_for_tvc(thd, li, holders, - lists_of_values.elements, cnt)) - DBUG_RETURN(true); - - List_iterator_fast it(*first_elem); - Item *item; - Query_arena *arena, backup; - arena=thd->activate_stmt_arena_if_needed(&backup); - - sl->item_list.empty(); - for (uint pos= 0; (item= it++); pos++) + if (!holders) { - /* Error's in 'new' will be detected after loop */ - Item_type_holder *new_holder= new (thd->mem_root) - Item_type_holder(thd, item, holders[pos].type_handler(), - &holders[pos]/*Type_all_attributes*/, - holders[pos].get_maybe_null()); - sl->item_list.push_back(new_holder); + holders= type_holders= new (thd->stmt_arena->mem_root) Type_holder[cnt]; + if (!holders || + join_type_handlers_for_tvc(thd, li, holders, cnt) || + get_type_attributes_for_tvc(thd, li, holders, + lists_of_values.elements, cnt)) + DBUG_RETURN(true); + List_iterator_fast it(*first_elem); + Item *item; + Query_arena *arena, backup; + arena=thd->activate_stmt_arena_if_needed(&backup); + + sl->item_list.empty(); + for (uint pos= 0; (item= it++); pos++) + { + /* Error's in 'new' will be detected after loop */ + Item_type_holder *new_holder= new (thd->mem_root) + Item_type_holder(thd, item, holders[pos].type_handler(), + &holders[pos]/*Type_all_attributes*/, + holders[pos].get_maybe_null()); + sl->item_list.push_back(new_holder); + } + if (arena) + thd->restore_active_arena(arena, &backup); + + if (unlikely(thd->is_fatal_error)) + DBUG_RETURN(true); // out of memory } - if (arena) - thd->restore_active_arena(arena, &backup); - - if (unlikely(thd->is_fatal_error)) - DBUG_RETURN(true); // out of memory result= tmp_result; diff --git a/sql/sql_tvc.h b/sql/sql_tvc.h index b5b8b979f43..710557f7aa2 100644 --- a/sql/sql_tvc.h +++ b/sql/sql_tvc.h @@ -25,6 +25,7 @@ class Explain_query; class Item_func_in; class st_select_lex_unit; typedef class st_select_lex SELECT_LEX; +class Type_holder; /** @class table_value_constr @@ -39,6 +40,7 @@ public: List lists_of_values; select_result *result; SELECT_LEX *select_lex; + Type_holder *type_holders; enum { QEP_NOT_PRESENT_YET, QEP_AVAILABLE} have_query_plan; @@ -47,7 +49,7 @@ public: table_value_constr(List tvc_values, SELECT_LEX *sl, ulonglong select_options_arg) : - lists_of_values(tvc_values), result(0), select_lex(sl), + lists_of_values(tvc_values), result(0), select_lex(sl), type_holders(0), have_query_plan(QEP_NOT_PRESENT_YET), explain(0), select_options(select_options_arg) { }; diff --git a/storage/innobase/include/log0log.h b/storage/innobase/include/log0log.h index ba1cdb0f0cb..c26ab35c1ac 100644 --- a/storage/innobase/include/log0log.h +++ b/storage/innobase/include/log0log.h @@ -675,8 +675,9 @@ public: return flushes.load(std::memory_order_relaxed); } - /** Initialise the redo log subsystem. */ - void create(); + /** Initialise the redo log subsystem. + @return whether the initialisation succeeded */ + bool create(); /** Shut down the redo log subsystem. */ void close(); diff --git a/storage/innobase/log/log0log.cc b/storage/innobase/log/log0log.cc index 2e63958d4e4..bfe94ec6292 100644 --- a/storage/innobase/log/log0log.cc +++ b/storage/innobase/log/log0log.cc @@ -161,11 +161,10 @@ log_set_capacity(ulonglong file_size) } /** Initialize the redo log subsystem. */ -void log_t::create() +bool log_t::create() { ut_ad(this == &log_sys); ut_ad(!is_initialised()); - m_initialised= true; #if defined(__aarch64__) mysql_mutex_init(log_sys_mutex_key, &mutex, MY_MUTEX_INIT_FAST); @@ -187,9 +186,18 @@ void log_t::create() buf= static_cast(ut_malloc_dontdump(srv_log_buffer_size, PSI_INSTRUMENT_ME)); - TRASH_ALLOC(buf, srv_log_buffer_size); + if (!buf) + return false; flush_buf= static_cast(ut_malloc_dontdump(srv_log_buffer_size, PSI_INSTRUMENT_ME)); + if (!flush_buf) + { + ut_free_dodump(buf, srv_log_buffer_size); + buf= nullptr; + return false; + } + + TRASH_ALLOC(buf, srv_log_buffer_size); TRASH_ALLOC(flush_buf, srv_log_buffer_size); max_buf_free= srv_log_buffer_size / LOG_BUF_FLUSH_RATIO - @@ -216,6 +224,8 @@ void log_t::create() buf_free= LOG_BLOCK_HDR_SIZE; checkpoint_buf= static_cast (aligned_malloc(OS_FILE_LOG_BLOCK_SIZE, OS_FILE_LOG_BLOCK_SIZE)); + m_initialised= true; + return true; } file_os_io::file_os_io(file_os_io &&rhs) : m_fd(rhs.m_fd) diff --git a/storage/innobase/os/os0file.cc b/storage/innobase/os/os0file.cc index 906ce79e8fd..48731c03315 100644 --- a/storage/innobase/os/os0file.cc +++ b/storage/innobase/os/os0file.cc @@ -4019,36 +4019,40 @@ static bool is_volume_on_ssd(const char *volume_mount_point) } #include -static bool is_file_on_ssd(char *file_path) +static bool is_path_on_ssd(char *file_path) { - /* Cache of volume_path => volume_info, protected by rwlock.*/ - static std::unordered_map cache; - static SRWLOCK lock= SRWLOCK_INIT; - /* Preset result, in case something fails, e.g we're on network drive.*/ char volume_path[MAX_PATH]; if (!GetVolumePathName(file_path, volume_path, array_elements(volume_path))) return false; + return is_volume_on_ssd(volume_path); +} - /* Try cached volume info first.*/ - std::string volume_path_str(volume_path); +static bool is_file_on_ssd(HANDLE handle, char *file_path) +{ + ULONGLONG volume_serial_number; + FILE_ID_INFO info; + if(!GetFileInformationByHandleEx(handle, FileIdInfo, &info, sizeof(info))) + return false; + volume_serial_number= info.VolumeSerialNumber; + + static std::unordered_map cache; + static SRWLOCK lock= SRWLOCK_INIT; bool found; bool result; AcquireSRWLockShared(&lock); - auto e= cache.find(volume_path_str); + auto e= cache.find(volume_serial_number); if ((found= e != cache.end())) result= e->second; ReleaseSRWLockShared(&lock); - - if (found) - return result; - - result= is_volume_on_ssd(volume_path); - - /* Update cache */ - AcquireSRWLockExclusive(&lock); - cache[volume_path_str]= result; - ReleaseSRWLockExclusive(&lock); + if (!found) + { + result= is_path_on_ssd(file_path); + /* Update cache */ + AcquireSRWLockExclusive(&lock); + cache[volume_serial_number]= result; + ReleaseSRWLockExclusive(&lock); + } return result; } @@ -4074,7 +4078,7 @@ void fil_node_t::find_metadata(os_file_t file punch_hole= IF_WIN(, !create ||) os_is_sparse_file_supported(file); #ifdef _WIN32 - on_ssd= is_file_on_ssd(name); + on_ssd= is_file_on_ssd(file, name); FILE_STORAGE_INFO info; if (GetFileInformationByHandleEx(file, FileStorageInfo, &info, sizeof info)) block_size= info.PhysicalBytesPerSectorForAtomicity; diff --git a/storage/innobase/srv/srv0start.cc b/storage/innobase/srv/srv0start.cc index 5275db2a13e..af538c99215 100644 --- a/storage/innobase/srv/srv0start.cc +++ b/storage/innobase/srv/srv0start.cc @@ -90,6 +90,7 @@ Created 2/16/1996 Heikki Tuuri #include "btr0pcur.h" #include "zlib.h" #include "ut0crc32.h" +#include "log.h" /** We are prepared for a situation that we have this many threads waiting for a transactional lock inside InnoDB. srv_start() sets the value. */ @@ -1228,7 +1229,12 @@ dberr_t srv_start(bool create_new_db) } #endif /* UNIV_DEBUG */ - log_sys.create(); + if (!log_sys.create()) { + sql_print_error("InnoDB: Cannot allocate memory;" + " too large innodb_log_buffer_size?"); + return srv_init_abort(DB_ERROR); + } + recv_sys.create(); lock_sys.create(srv_lock_table_size); diff --git a/storage/rocksdb/CMakeLists.txt b/storage/rocksdb/CMakeLists.txt index 0b15e107793..ea0f16014a1 100644 --- a/storage/rocksdb/CMakeLists.txt +++ b/storage/rocksdb/CMakeLists.txt @@ -1,5 +1,10 @@ # TODO: Copyrights +IF(PLUGIN_ROCKSDB STREQUAL "NO") + ADD_FEATURE_INFO(ROCKSDB "OFF" "Storage Engine") + RETURN() +ENDIF() + SET(CPACK_RPM_rocksdb-engine_PACKAGE_SUMMARY "RocksDB storage engine for MariaDB server" PARENT_SCOPE) SET(CPACK_RPM_rocksdb-engine_PACKAGE_DESCRIPTION "The RocksDB storage engine is a high performance storage engine, aimed at maximising storage efficiency while maintaining InnoDB-like performance." PARENT_SCOPE) diff --git a/storage/spider/mysql-test/spider/include/deinit_spider.inc b/storage/spider/mysql-test/spider/include/deinit_spider.inc index 1d55e3b3d5f..23c8c2e2dc6 100644 --- a/storage/spider/mysql-test/spider/include/deinit_spider.inc +++ b/storage/spider/mysql-test/spider/include/deinit_spider.inc @@ -1,93 +1,8 @@ -let $SERVER_NAME= - `SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(version(), '-', 2), '-', -1)`; -let $SERVER_MAJOR_VERSION= - `SELECT SUBSTRING_INDEX(version(), '.', 1)`; -let $SERVER_MINOR_VERSION= - `SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(version(), '.', 2), '.', -1)`; -let $PLUGIN_VERSION= - `SELECT SUBSTRING_INDEX(plugin_version, '.', 1) - FROM information_schema.plugins - WHERE plugin_name = 'SPIDER'`; -if (`SELECT IF($PLUGIN_VERSION = 3, 1, 0)`) -{ - let $HAS_REWRITE= - `SELECT IF (STRCMP('$SERVER_NAME', 'MariaDB') = 0, - IF ($SERVER_MAJOR_VERSION = 10, - IF ($SERVER_MINOR_VERSION < 4, 0, 1), - IF ($SERVER_MAJOR_VERSION < 10, 0, 1)), - 0)`; - let $HAS_REWRITE= 0; - if ($HAS_REWRITE) - { - DROP FUNCTION spider_flush_rewrite_cache; - UNINSTALL PLUGIN spider_rewrite; - DROP TABLE IF EXISTS mysql.spider_rewrite_tables; - DROP TABLE IF EXISTS mysql.spider_rewrite_table_tables; - DROP TABLE IF EXISTS mysql.spider_rewrite_table_partitions; - DROP TABLE IF EXISTS mysql.spider_rewrite_table_subpartitions; - DROP TABLE IF EXISTS mysql.spider_rewritten_tables; - } -} --source clean_up_spider.inc -if ($VERSION_COMPILE_OS_WIN) -{ - if ($MASTER_1_MYPORT) - { - DROP SERVER s_1; - } - if ($CHILD2_1_MYPORT) - { - DROP SERVER s_2_1; - } - if ($CHILD2_2_MYPORT) - { - DROP SERVER s_2_2; - } - if ($CHILD2_3_MYPORT) - { - DROP SERVER s_2_3; - } - if ($CHILD3_1_MYPORT) - { - DROP SERVER s_3_1; - } - if ($CHILD3_2_MYPORT) - { - DROP SERVER s_3_2; - } - if ($CHILD2_3_MYPORT) - { - DROP SERVER s_3_3; - } -} -if (!$VERSION_COMPILE_OS_WIN) -{ - if ($MASTER_1_MYSOCK) - { - DROP SERVER s_1; - } - if ($CHILD2_1_MYSOCK) - { - DROP SERVER s_2_1; - } - if ($CHILD2_2_MYSOCK) - { - DROP SERVER s_2_2; - } - if ($CHILD2_3_MYSOCK) - { - DROP SERVER s_2_3; - } - if ($CHILD3_1_MYSOCK) - { - DROP SERVER s_3_1; - } - if ($CHILD3_2_MYSOCK) - { - DROP SERVER s_3_2; - } - if ($CHILD3_3_MYSOCK) - { - DROP SERVER s_3_3; - } -} +DROP SERVER IF EXISTS s_1; +DROP SERVER IF EXISTS s_2_1; +DROP SERVER IF EXISTS s_2_2; +DROP SERVER IF EXISTS s_2_3; +DROP SERVER IF EXISTS s_3_1; +DROP SERVER IF EXISTS s_3_2; +DROP SERVER IF EXISTS s_3_3;