mirror of
https://github.com/MariaDB/server.git
synced 2025-01-28 17:54:16 +01:00
Merge branch '10.4' into 10.5
This commit is contained in:
commit
db8019ef00
6 changed files with 61 additions and 14 deletions
|
@ -1 +1 @@
|
|||
Subproject commit f1e2165c591f074feb47872a8ff712713ec411e1
|
||||
Subproject commit 4fbd4fd36a21efd9d1a7e17aba390e91c78693b1
|
|
@ -1 +1 @@
|
|||
Subproject commit 7fdb3eab66384a355475704332d11cc1ab82499a
|
||||
Subproject commit d204e83104222844251b221e9be7eb3dd9f8d63d
|
|
@ -9,4 +9,3 @@
|
|||
# Do not use any TAB characters for whitespace.
|
||||
#
|
||||
##############################################################################
|
||||
innodb_rc_insert_before_delete : MDEV-30490 2023-01-28 andrei see the MDEV description
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
connection default;
|
||||
set @@global.binlog_checksum=none;
|
||||
set @@session.debug_dbug='d,crash_before_write_second_checkpoint_event';
|
||||
set @@global.binlog_checksum=crc32;
|
||||
ERROR HY000: Lost connection to MySQL server during query
|
||||
connection default;
|
||||
NOT FOUND /Replication event checksum verification failed/ in mysqld.1.err
|
||||
End of the tests
|
|
@ -0,0 +1,52 @@
|
|||
connect pause_purge,localhost,root;
|
||||
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
||||
connection default;
|
||||
CREATE TABLE t (pk int PRIMARY KEY, sk INT UNIQUE) ENGINE=InnoDB;
|
||||
INSERT INTO t VALUES (10, 100);
|
||||
connect con1,localhost,root;
|
||||
BEGIN;
|
||||
SELECT * FROM t WHERE sk = 100 FOR UPDATE;
|
||||
pk sk
|
||||
10 100
|
||||
connect con2,localhost,root;
|
||||
SET DEBUG_SYNC="lock_wait_suspend_thread_enter SIGNAL insert_wait_started";
|
||||
INSERT INTO t VALUES (5, 100) # trx 1;
|
||||
connect con3,localhost,root;
|
||||
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
||||
SET DEBUG_SYNC="now WAIT_FOR insert_wait_started";
|
||||
SET DEBUG_SYNC="lock_wait_suspend_thread_enter SIGNAL delete_started_waiting";
|
||||
BEGIN;
|
||||
UPDATE t SET sk = 200 WHERE sk = 100; # trx 2;
|
||||
connection con1;
|
||||
SET DEBUG_SYNC="now WAIT_FOR delete_started_waiting";
|
||||
DELETE FROM t WHERE sk=100;
|
||||
COMMIT;
|
||||
disconnect con1;
|
||||
connection con2;
|
||||
disconnect con2;
|
||||
connection con3;
|
||||
must be logged in ROW format as the only event of trx 2 (con3)
|
||||
INSERT INTO t VALUES (11, 101);
|
||||
COMMIT;
|
||||
include/show_binlog_events.inc
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
||||
master-bin.000001 # Query # # use `test`; DELETE FROM t WHERE sk=100
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO t VALUES (5, 100) # trx 1
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
||||
master-bin.000001 # Annotate_rows # # INSERT INTO t VALUES (11, 101)
|
||||
master-bin.000001 # Table_map # # table_id: # (test.t)
|
||||
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
disconnect con3;
|
||||
connection default;
|
||||
SELECT * FROM t;
|
||||
pk sk
|
||||
5 100
|
||||
11 101
|
||||
disconnect pause_purge;
|
||||
SET DEBUG_SYNC="RESET";
|
||||
DROP TABLE t;
|
|
@ -7657,6 +7657,7 @@ best_access_path(JOIN *join,
|
|||
rec= MATCHING_ROWS_IN_OTHER_TABLE; // Fix for small tables
|
||||
|
||||
Json_writer_object trace_access_idx(thd);
|
||||
double eq_ref_rows= 0.0, eq_ref_cost= 0.0;
|
||||
/*
|
||||
full text keys require special treatment
|
||||
*/
|
||||
|
@ -7701,7 +7702,10 @@ best_access_path(JOIN *join,
|
|||
tmp= adjust_quick_cost(table->opt_range[key].cost, 1);
|
||||
else
|
||||
tmp= table->file->avg_io_cost();
|
||||
tmp*= prev_record_reads(join_positions, idx, found_ref);
|
||||
eq_ref_rows= prev_record_reads(join_positions, idx,
|
||||
found_ref);
|
||||
tmp*= eq_ref_rows;
|
||||
eq_ref_cost= tmp;
|
||||
records=1.0;
|
||||
}
|
||||
else
|
||||
|
@ -8019,8 +8023,8 @@ best_access_path(JOIN *join,
|
|||
|
||||
Set the effective number of rows from "tmp" here.
|
||||
*/
|
||||
keyread_tmp= tmp/ 2;
|
||||
rows= tmp;
|
||||
keyread_tmp= COST_ADD(eq_ref_cost / 2, s->startup_cost);
|
||||
rows= eq_ref_rows;
|
||||
}
|
||||
else
|
||||
rows= record_count * records;
|
||||
|
|
Loading…
Add table
Reference in a new issue