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;