| Bug #112924 | PSI batch mode assertion error | ||
|---|---|---|---|
| Submitted: | 1 Nov 2023 16:09 | Modified: | 21 Dec 2023 17:02 |
| Reporter: | Pedro Ferreira | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: DML | Severity: | S6 (Debug Builds) |
| Version: | 8.2.0 | OS: | Ubuntu (22.04) |
| Assigned to: | CPU Architecture: | x86 (x86_64) | |
[3 Nov 2023 11:26]
MySQL Verification Team
Hello Pedro Ferreira, Thank you for the report and feedback. Tried to reproduce on 8.2.0/8.1.0/8.0.35 debug/release build but not seeing any issues. Could you please share exact cmake options used for the build? Thank you. regards, Umesh
[8 Nov 2023 11:25]
Pedro Ferreira
I used these compilation flags with GCC 11.4.0: -DWITH_DEBUG=1 -DWITH_ASAN=ON -DWITH_UBSAN=ON and boost library version 1.77 This is the configuration file: [mysqld] server_id=1 skip-log-bin character_set_server=utf8mb4 collation_server=utf8mb4_0900_bin slow_query_log=ON long_query_time=5 gtid_mode=ON enforce_gtid_consistency=ON log_bin=ON innodb_extend_and_initialize=ON secure-file-priv=""
[15 Nov 2023 9:54]
MySQL Verification Team
Hello Pedro Ferreira, Thank you for the feedback. Observed that debug build is affected. regards, Umesh
[15 Nov 2023 9:55]
MySQL Verification Team
-bt #0 0x00007fb8a1a4eaa1 in pthread_kill () from /lib64/libpthread.so.0 #1 0x00000000040c60c1 in my_write_core(int) () #2 0x000000000334a9c2 in handle_fatal_signal () #3 <signal handler called> #4 0x00007fb89fd98387 in raise () from /lib64/libc.so.6 #5 0x00007fb89fd99a78 in abort () from /lib64/libc.so.6 #6 0x00007fb89fd911a6 in __assert_fail_base () from /lib64/libc.so.6 #7 0x00007fb89fd91252 in __assert_fail () from /lib64/libc.so.6 #8 0x0000000003458c7d in handler::start_psi_batch_mode() () #9 0x000000000357e7f7 in TableRowIterator::StartPSIBatchMode() () #10 0x0000000003598ee4 in FilterIterator::StartPSIBatchMode() () #11 0x000000000329fa11 in PFSBatchMode::PFSBatchMode(RowIterator*) () #12 0x000000000329e852 in Query_expression::ExecuteIteratorQuery(THD*) () #13 0x000000000329ea1c in Query_expression::execute(THD*) () #14 0x0000000003228b26 in Sql_cmd_dml::execute_inner(THD*) () #15 0x000000000323271d in Sql_cmd_dml::execute(THD*) () #16 0x00000000031d13b9 in mysql_execute_command(THD*, bool) () #17 0x00000000031d284f in dispatch_sql_command(THD*, Parser_state*) () #18 0x00000000031d3f63 in dispatch_command(THD*, COM_DATA const*, enum_server_command) () #19 0x00000000031d5c7b in do_command(THD*) () #20 0x000000000333c9b6 in handle_connection () #21 0x00000000048a7ae8 in pfs_spawn_thread () #22 0x00007fb8a1a49ea5 in start_thread () from /lib64/libpthread.so.0 #23 0x00007fb89fe60b2d in clone () from /lib64/libc.so.6 (gdb)
[21 Dec 2023 17:02]
Erlend Dahl
Fixed in the upcoming 8.3.0 under the heading of: Bug#35703114 Assertion `m_psi_batch_mode == PSI_BATCH_MODE_NONE' failed.

Description: I don't have time to reduce this script further, my apologies. Run these queries: CREATE TABLE t3 (c0 DATETIME(6), c1 DATETIME(3), c2 MEDIUMBLOB); CREATE TABLE t7 (c0 TINYINT UNSIGNED, c1 INT, c2 BOOLEAN, CONSTRAINT k1 UNIQUE KEY (c0)); INSERT INTO t7(c0,c1,c2) VALUES (94,97,0),(27,41,0),(72,-60,0),(82,58,0),(46,42,1),(58,87,0),(52,NULL,0),(73,-30,1),(35,-81,1),(17,46,0); CREATE TABLE t0 (c0 VARBINARY(100), c1 TIMESTAMP(2), c2 TIMESTAMP(3), c3 MEDIUMINT AUTO_INCREMENT UNIQUE KEY, CONSTRAINT k2 PRIMARY KEY (c0(3), c2, c1)); INSERT IGNORE INTO t0 (c0, c1, c2) VALUES ROW('a', NULL, TIMESTAMP '1998-1-31 14:44:16'); INSERT INTO t3 (c0, c1, c2) VALUES ROW(CAST('1096-3-26 16:5:39.000022' AS DATETIME), CAST('1096-3-26 16:5:39.000022' AS DATETIME), 1); CREATE INDEX i4 ON t0 (c2); CREATE VIEW t1 (c0, c1, c2, c3, c4) AS (SELECT lag(DATE '1072-7-18', 51) OVER (PARTITION BY t0d0n1.c3, (SELECT pi() pd1c0 FROM ((SELECT t3d2n0.c1 pd2c0 FROM t3 t3d2n0 WHERE (NOT b'10001000000000000000') LIMIT 98) subd1n0 (c0) LEFT JOIN t3 t3d1n1 ON (t3d1n1.c2 = subd1n0.c0)) WHERE (t3d1n1.c1 = t3d1n1.c2))) pd0c0, t0d0n1.c3 pd0c1, t7d0n2.c2 pd0c2, insert(CAST(NULL AS SIGNED), t0d0n0.c3, t7d0n2.c0, CONVERT(CASE WHEN t7d0n2.c1 THEN 1 END USING utf32)) pd0c3, b'00000110000000000000000' pd0c4 FROM ((t0 t0d0n0 JOIN t0 t0d0n1 USE INDEX FOR ORDER BY (i4) ON (t0d0n0.c0 = t0d0n1.c3)) RIGHT JOIN t7 t7d0n2 ON (t0d0n0.c2 = t7d0n2.c0))); INSERT INTO t0 (c2, c0, c1) (VALUES ROW(TIMESTAMP '2006-2-6 4:23:35.000052', CAST(X'6865' AS CHAR), date_sub(TIMESTAMP '1979-1-28 18:30:12.000037', INTERVAL '-49 86:9:-47.1' DAY_MICROSECOND)),ROW((SELECT CAST(unix_timestamp() AS DATETIME(5)) pd2c0 FROM (t7 t7d2n0 JOIN t3 t3d2n1 ON ((t7d2n0.c2 = t3d2n1.c0) AND (t7d2n0.c1 = t3d2n1.c0)))), uuid_short(), CASE WHEN CAST(X'69D0768B' AS CHAR) THEN TIMESTAMP '2028-11-23 3:59:25.000012' WHEN rtrim(CAST(X'68696D' AS CHAR)) THEN utc_date() WHEN CAST(X'6E6577' AS CHAR) THEN now() END)); INSERT INTO t0 (c1, c0, c2) (SELECT timestampadd(WEEK, CAST(t7d1n2.c0 AS SIGNED), t3d1n0.c2), CAST(X'74' AS CHAR), DATE '1072-7-18' FROM t3 t3d1n0 LEFT JOIN t1 ON (t3d1n0.c0 < t1.c0) RIGHT JOIN t7 t7d1n2 ON (t3d1n0.c0 = t7d1n2.c0)); SELECT 1 FROM t7 WHERE greatest(t7.c0, t7.c1) = t7.c0; The SELECT query will trigger an assertion error at sql/handler.cc:2749 assert(m_psi_batch_mode == PSI_BATCH_MODE_NONE); How to repeat: Run the queries above.