Under REPEATABLE-READ isolation level, if two transactions concurrently modify the same row to the same value, the transaction that modifies later does not see the modified content.
The result of final SELECT should be (10, 0), (10, 1), (10, 2).
I think it is so weird for session 1 to see the second row is still (1, 1) after the successful execution of an UPDATE with the "WHERE TRUE" predicate.
So I think it will be better for s1 to see all records it updates regardless of whether the values before and after the UPDATE are the same.
Attachments
Issue Links
blocks
MDEV-33802Weird read view after ROLLBACK of other transactions.
Closed
relates to
MDEV-32898Phantom rows caused by UPDATE of PRIMARY KEY
Closed
MDEV-35124Set innodb_snapshot_isolation=ON by default
Closed
MDEV-35262INT violation when two transactions modify a record to the same value concurrently
Open
MDEV-14589InnoDB should not lock a delete-marked record
Closed
MDEV-26643Inconsistent behaviors of UPDATE under RU & RC isolation level
Closed
MDEV-26671Inconsistent SELECT View when modify a record added by another transaction
Closed
MDEV-29565Inconsistent read and write, which use the same predicate (WHERE clause)
Closed
MDEV-35140Support innodb-snapshot-isolation in Galera cluster
I think that this must be addressed in the documentation. This is the impact of a design decision of the InnoDB REPEATABLE READ, probably present since the very first release (MySQL 3.23.49). If we changed this now after all these years, some applications could be broken.
I wrote a simpler mtr test to demonstrate this:
--source include/have_innodb.inc
CREATETABLE t(a INT) ENGINE=InnoDB;
INSERTINTO t VALUES (0);
connect (con1,localhost,root);
#SETTRANSACTIONISOLATIONLEVELREADUNCOMMITTED;
#SETTRANSACTIONISOLATIONLEVELREADCOMMITTED;
#SETTRANSACTIONISOLATIONLEVELSERIALIZABLE;
#SETTRANSACTIONISOLATIONLEVELREPEATABLEREAD;
START TRANSACTIONWITH CONSISTENT SNAPSHOT;
connectiondefault;
UPDATE t SET a=1;
connection con1;
SELECT * FROM t;
UPDATE t SET a=1;
SELECT * FROM t;
COMMIT;
disconnect con1;
connectiondefault;
SELECT * FROM t;
DROPTABLE t;
Only for the default REPEATABLE READ isolation level, the second-but-last SELECT in the test will return 0 instead of 1.
With READ COMMITTED, the read view will be reset at the start of each statement. So, that statement will observe the impact of the first UPDATE, which had been committed.
READ UNCOMMITTED will display the latest state of the table. SERIALIZABLE will do that too, but with the difference that the accessed records will be locked first. (See MDEV-14589 for some discussion on isolation levels.)
In InnoDB, a read view will observe the changes of all transactions that had been committed at the time the read view was created, as well as the changes that the transaction performed itself. In this case, the second UPDATE did not modify the record, and the first UPDATE had not been committed before the read view was created. So, there is no bug; it is working as designed.
Here is a more complex test, with 2 columns, more similar to the described scenario. Note that after we actually modify the record in that transaction, then we will read back the "correct" result.
--source include/have_innodb.inc
CREATETABLE t(a INT, b INT) ENGINE=InnoDB;
INSERTINTO t VALUES (0,0);
connect (con1,localhost,root);
START TRANSACTIONWITH CONSISTENT SNAPSHOT;
connectiondefault;
UPDATE t SET a=1; # updateto (1,0) iscommitted, but not visible in the above readview
connection con1;
SELECT * FROM t;
UPDATE t SET a=1;
SELECT * FROM t; # returns"unexpected" (0,0)
UPDATE t SET b=1;
SELECT * FROM t; # returns (1,1) because we modified the record
ROLLBACK;
disconnect con1;
connectiondefault;
SELECT * FROM t; # returns (1,0)
DROPTABLE t;
Marko Mäkelä
added a comment - I think that this must be addressed in the documentation. This is the impact of a design decision of the InnoDB REPEATABLE READ , probably present since the very first release (MySQL 3.23.49). If we changed this now after all these years, some applications could be broken.
I wrote a simpler mtr test to demonstrate this:
--source include/have_innodb.inc
CREATE TABLE t(a INT ) ENGINE=InnoDB;
INSERT INTO t VALUES (0);
connect (con1,localhost,root);
# SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
# SET TRANSACTION ISOLATION LEVEL READ COMMITTED ;
# SET TRANSACTION ISOLATION LEVEL SERIALIZABLE ;
# SET TRANSACTION ISOLATION LEVEL REPEATABLE READ ;
START TRANSACTION WITH CONSISTENT SNAPSHOT;
connection default ;
UPDATE t SET a=1;
connection con1;
SELECT * FROM t;
UPDATE t SET a=1;
SELECT * FROM t;
COMMIT ;
disconnect con1;
connection default ;
SELECT * FROM t;
DROP TABLE t;
Only for the default REPEATABLE READ isolation level, the second-but-last SELECT in the test will return 0 instead of 1 .
With READ COMMITTED , the read view will be reset at the start of each statement. So, that statement will observe the impact of the first UPDATE , which had been committed.
READ UNCOMMITTED will display the latest state of the table. SERIALIZABLE will do that too, but with the difference that the accessed records will be locked first. (See MDEV-14589 for some discussion on isolation levels.)
In InnoDB, a read view will observe the changes of all transactions that had been committed at the time the read view was created, as well as the changes that the transaction performed itself. In this case, the second UPDATE did not modify the record, and the first UPDATE had not been committed before the read view was created. So, there is no bug; it is working as designed.
Here is a more complex test, with 2 columns, more similar to the described scenario. Note that after we actually modify the record in that transaction, then we will read back the "correct" result.
--source include/have_innodb.inc
CREATE TABLE t(a INT , b INT ) ENGINE=InnoDB;
INSERT INTO t VALUES (0,0);
connect (con1,localhost,root);
START TRANSACTION WITH CONSISTENT SNAPSHOT;
connection default ;
UPDATE t SET a=1; # update to (1,0) is committed , but not visible in the above read view
connection con1;
SELECT * FROM t;
UPDATE t SET a=1;
SELECT * FROM t; # returns "unexpected" (0,0)
UPDATE t SET b=1;
SELECT * FROM t; # returns (1,1) because we modified the record
ROLLBACK ;
disconnect con1;
connection default ;
SELECT * FROM t; # returns (1,0)
DROP TABLE t;
Thank you for your reply. I think your explanation is reasonable. And I agree with you on MDEV-26671 is a duplicate of this. In my opinion, if this issue will not be fixed due to compatibility, then the documentation notes are needed.
dinary
added a comment - Thank you for your reply. I think your explanation is reasonable. And I agree with you on MDEV-26671 is a duplicate of this. In my opinion, if this issue will not be fixed due to compatibility, then the documentation notes are needed.
In the modified version, we can see that, the last select of session s1 correctly returns the excepted result after the successful execution of an UPDATE with the "WHERE TRUE" predicate.
However, in the original version, the return result seems wrong.
So, the result of the last select of session s1 depends on the update's values in session s2.
This is very weird.
Should the result of the last select of session s1 be the same, no matter the values in the update of session s2?
Jason
added a comment - - edited I slightly modify the test case in the description, and obtain weird result.
The modified test case:
/* init */ create table t(a int , b int );
/* init */ insert into t values (0, 0), (1, 1), (2, 2);
/* s1 */ begin ;
/* s1 */ select * from t; -- [(0, 0), (1, 1), (2, 2)]
/* s2 */ begin ;
/* s2 */ update t set *a = 11* where b = 1;
/* s2 */ commit ;
/* s1 */ select * from t; -- [(0, 0), (1, 1), (2, 2)]
/* s1 */ update t set a = 10 where true ;
/* s1 */ select * from t; -- [(10, 0), *(10, 1)*, (10, 2)]
/* s1 */ commit ;
The original test case:
/* init */ create table t(a int , b int );
/* init */ insert into t values (0, 0), (1, 1), (2, 2);
/* s1 */ begin ;
/* s1 */ select * from t; -- [(0, 0), (1, 1), (2, 2)]
/* s2 */ begin ;
/* s2 */ update t set *a = 10* where b = 1;
/* s2 */ commit ;
/* s1 */ select * from t; -- [(0, 0), (1, 1), (2, 2)]
/* s1 */ update t set a = 10 where true ;
/* s1 */ select * from t; -- [(10, 0), *(1, 1)*, (10, 2)]
/* s1 */ commit ;
In the modified version, we can see that, the last select of session s1 correctly returns the excepted result after the successful execution of an UPDATE with the "WHERE TRUE" predicate.
However, in the original version, the return result seems wrong.
So, the result of the last select of session s1 depends on the update's values in session s2.
This is very weird.
Should the result of the last select of session s1 be the same, no matter the values in the update of session s2?
Marko Mäkelä
added a comment - With the crude fix that I posted in MDEV-32898 , my first and second mtr test fail like this:
bb-10.6-MDEV-32898-pkgtest c0db57157bdb87f10dbe7fab094bbc53f5abbb8f
mysqltest: At line 18: query 'UPDATE t SET a=1' failed: ER_LOCK_DEADLOCK (1213): Deadlock found when trying to get lock; try restarting transaction
mysqltest: At line 14: query 'UPDATE t SET a=1' failed: ER_LOCK_DEADLOCK (1213): Deadlock found when trying to get lock; try restarting transaction
We might want to use a better error code than ER_LOCK_DEADLOCK for this.
Readily built packages of my work-in-progress fix should (soon) be available for download at https://ci.mariadb.org/42468/ . I am eager to see if you can reproduce more issues around this. I am also in contact with the author of https://jepsen.io/analyses/mysql-8.0.34 ; see this mailing list archive .
This was fixed together with MDEV-32898. If SET innodb_snapshot_isolation=ON is executed before starting a transaction, then any transaction that uses read views (such as REPEATABLE READ transactions) will fail with ER_CHECKREAD in case the latest version of a being-locked record is not in the read view.
Marko Mäkelä
added a comment - This was fixed together with MDEV-32898 . If SET innodb_snapshot_isolation=ON is executed before starting a transaction, then any transaction that uses read views (such as REPEATABLE READ transactions) will fail with ER_CHECKREAD in case the latest version of a being-locked record is not in the read view.
For what it is worth, below is a mtr version of the scenario of MySQL Bug #116067:
--source include/have_innodb.inc
CREATETABLE simple_table (
id VARCHAR(20) PRIMARYKEY,
unique_col VARCHAR(20),
status VARCHAR(20),
UNIQUEINDEX idx_unique_col (unique_col)
) ENGINE=InnoDB;
START TRANSACTION;
SELECT * FROM simple_table WHERE unique_col = 'unique1';
--connect (con1,localhost,root)
START TRANSACTION;
INSERTINTO simple_table (id, unique_col, status)
VALUES ('id1', 'unique1', 'in_progress')
ON DUPLICATE KEYUPDATE
unique_col = VALUES(unique_col);
COMMIT;
--disconnect con1
--connection default
INSERTINTO simple_table (id, unique_col, status)
VALUES ('id2', 'unique1', 'in_progress')
ON DUPLICATE KEYUPDATE
unique_col = VALUES(unique_col);
# Fails to see just upserted record
SELECT * FROM simple_table WHERE unique_col = 'unique1';
COMMIT;
SELECT * FROM simple_table WHERE unique_col = 'unique1';
DROPTABLE simple_table;
By default, the bug is reproduced, that is, the result of the last-but-one SELECT is empty. If save the above to mysql-test/main/bug-116067.test and run
mysqltest: At line 25: query 'INSERT INTO simple_table (id, unique_col, status)
VALUES ('id2', 'unique1', 'in_progress')
ON DUPLICATE KEY UPDATE
unique_col = VALUES(unique_col)' failed: ER_CHECKREAD (1020): Record has changed since last read in table 'simple_table'
This is because we would notice that the transaction in con1 had modified the data, which would constitute a violation of Snapshot Isolation.
Marko Mäkelä
added a comment - For what it is worth, below is a mtr version of the scenario of MySQL Bug #116067 :
--source include/have_innodb.inc
CREATE TABLE simple_table (
id VARCHAR (20) PRIMARY KEY ,
unique_col VARCHAR (20),
status VARCHAR (20),
UNIQUE INDEX idx_unique_col (unique_col)
) ENGINE=InnoDB;
START TRANSACTION ;
SELECT * FROM simple_table WHERE unique_col = 'unique1' ;
--connect (con1,localhost,root)
START TRANSACTION ;
INSERT INTO simple_table (id, unique_col, status)
VALUES ( 'id1' , 'unique1' , 'in_progress' )
ON DUPLICATE KEY UPDATE
unique_col = VALUES (unique_col);
COMMIT ;
--disconnect con1
--connection default
INSERT INTO simple_table (id, unique_col, status)
VALUES ( 'id2' , 'unique1' , 'in_progress' )
ON DUPLICATE KEY UPDATE
unique_col = VALUES (unique_col);
# Fails to see just upserted record
SELECT * FROM simple_table WHERE unique_col = 'unique1' ;
COMMIT ;
SELECT * FROM simple_table WHERE unique_col = 'unique1' ;
DROP TABLE simple_table;
By default, the bug is reproduced, that is, the result of the last-but-one SELECT is empty. If save the above to mysql-test/main/bug-116067.test and run
./mtr --mysqld=--innodb-snapshot-isolation main.bug-116067
it will fail like this:
10.6 a74bea7ba99a8c215cf085ff7a9dd4bdabab51e8
mysqltest: At line 25: query 'INSERT INTO simple_table (id, unique_col, status)
VALUES ('id2', 'unique1', 'in_progress')
ON DUPLICATE KEY UPDATE
unique_col = VALUES(unique_col)' failed: ER_CHECKREAD (1020): Record has changed since last read in table 'simple_table'
This is because we would notice that the transaction in con1 had modified the data, which would constitute a violation of Snapshot Isolation.
People
Marko Mäkelä
dinary
Votes:
1Vote for this issue
Watchers:
7Start watching this issue
Dates
Created:
Updated:
Resolved:
Git Integration
Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.
{"report":{"fcp":1188.9000000953674,"ttfb":260.1000003814697,"pageVisibility":"visible","entityId":102858,"key":"jira.project.issue.view-issue","isInitial":true,"threshold":1000,"elementTimings":{},"userDeviceMemory":8,"userDeviceProcessors":64,"apdex":0.5,"journeyId":"b057e9de-3579-4335-aa4a-15d242fd890d","navigationType":0,"readyForUser":1274.2000002861023,"redirectCount":0,"resourceLoadedEnd":1015.5,"resourceLoadedStart":265.90000009536743,"resourceTiming":[{"duration":314.09999990463257,"initiatorType":"link","name":"https://jira.mariadb.org/s/2c21342762a6a02add1c328bed317ffd-CDN/lu2cib/820016/12ta74/0a8bac35585be7fc6c9cc5a0464cd4cf/_/download/contextbatch/css/_super/batch.css","startTime":265.90000009536743,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":265.90000009536743,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":580,"responseStart":0,"secureConnectionStart":0},{"duration":314.19999980926514,"initiatorType":"link","name":"https://jira.mariadb.org/s/7ebd35e77e471bc30ff0eba799ebc151-CDN/lu2cib/820016/12ta74/494e4c556ecbb29f90a3d3b4f09cb99c/_/download/contextbatch/css/jira.browse.project,project.issue.navigator,jira.view.issue,jira.general,jira.global,atl.general,-_super/batch.css?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&slack-enabled=true&whisper-enabled=true","startTime":266.2000002861023,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":266.2000002861023,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":580.4000000953674,"responseStart":0,"secureConnectionStart":0},{"duration":456.5,"initiatorType":"script","name":"https://jira.mariadb.org/s/0917945aaa57108d00c5076fea35e069-CDN/lu2cib/820016/12ta74/0a8bac35585be7fc6c9cc5a0464cd4cf/_/download/contextbatch/js/_super/batch.js?locale=en","startTime":266.40000009536743,"connectEnd":266.40000009536743,"connectStart":266.40000009536743,"domainLookupEnd":266.40000009536743,"domainLookupStart":266.40000009536743,"fetchStart":266.40000009536743,"redirectEnd":0,"redirectStart":0,"requestStart":581.8000001907349,"responseEnd":722.9000000953674,"responseStart":603.3000001907349,"secureConnectionStart":266.40000009536743},{"duration":581.2999997138977,"initiatorType":"script","name":"https://jira.mariadb.org/s/2d8175ec2fa4c816e8023260bd8c1786-CDN/lu2cib/820016/12ta74/494e4c556ecbb29f90a3d3b4f09cb99c/_/download/contextbatch/js/jira.browse.project,project.issue.navigator,jira.view.issue,jira.general,jira.global,atl.general,-_super/batch.js?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&locale=en&slack-enabled=true&whisper-enabled=true","startTime":266.6000003814697,"connectEnd":266.6000003814697,"connectStart":266.6000003814697,"domainLookupEnd":266.6000003814697,"domainLookupStart":266.6000003814697,"fetchStart":266.6000003814697,"redirectEnd":0,"redirectStart":0,"requestStart":582.9000000953674,"responseEnd":847.9000000953674,"responseStart":605.5,"secureConnectionStart":266.6000003814697},{"duration":342.59999990463257,"initiatorType":"script","name":"https://jira.mariadb.org/s/a9324d6758d385eb45c462685ad88f1d-CDN/lu2cib/820016/12ta74/c92c0caa9a024ae85b0ebdbed7fb4bd7/_/download/contextbatch/js/atl.global,-_super/batch.js?locale=en","startTime":266.80000019073486,"connectEnd":266.80000019073486,"connectStart":266.80000019073486,"domainLookupEnd":266.80000019073486,"domainLookupStart":266.80000019073486,"fetchStart":266.80000019073486,"redirectEnd":0,"redirectStart":0,"requestStart":584.4000000953674,"responseEnd":609.4000000953674,"responseStart":607.4000000953674,"secureConnectionStart":266.80000019073486},{"duration":342.7000002861023,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2cib/820016/12ta74/1.0/_/download/batch/jira.webresources:calendar-en/jira.webresources:calendar-en.js","startTime":267,"connectEnd":267,"connectStart":267,"domainLookupEnd":267,"domainLookupStart":267,"fetchStart":267,"redirectEnd":0,"redirectStart":0,"requestStart":584.7000002861023,"responseEnd":609.7000002861023,"responseStart":608,"secureConnectionStart":267},{"duration":345.8999996185303,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2cib/820016/12ta74/1.0/_/download/batch/jira.webresources:calendar-localisation-moment/jira.webresources:calendar-localisation-moment.js","startTime":267.1000003814697,"connectEnd":267.1000003814697,"connectStart":267.1000003814697,"domainLookupEnd":267.1000003814697,"domainLookupStart":267.1000003814697,"fetchStart":267.1000003814697,"redirectEnd":0,"redirectStart":0,"requestStart":586.9000000953674,"responseEnd":613,"responseStart":609.8000001907349,"secureConnectionStart":267.1000003814697},{"duration":317.69999980926514,"initiatorType":"link","name":"https://jira.mariadb.org/s/b04b06a02d1959df322d9cded3aeecc1-CDN/lu2cib/820016/12ta74/a2ff6aa845ffc9a1d22fe23d9ee791fc/_/download/contextbatch/css/jira.global.look-and-feel,-_super/batch.css","startTime":267.30000019073486,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":267.30000019073486,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":585,"responseStart":0,"secureConnectionStart":0},{"duration":345.6000003814697,"initiatorType":"script","name":"https://jira.mariadb.org/rest/api/1.0/shortcuts/820016/47140b6e0a9bc2e4913da06536125810/shortcuts.js?context=issuenavigation&context=issueaction","startTime":267.5,"connectEnd":267.5,"connectStart":267.5,"domainLookupEnd":267.5,"domainLookupStart":267.5,"fetchStart":267.5,"redirectEnd":0,"redirectStart":0,"requestStart":588.5,"responseEnd":613.1000003814697,"responseStart":611.9000000953674,"secureConnectionStart":267.5},{"duration":318.80000019073486,"initiatorType":"link","name":"https://jira.mariadb.org/s/3ac36323ba5e4eb0af2aa7ac7211b4bb-CDN/lu2cib/820016/12ta74/d176f0986478cc64f24226b3d20c140d/_/download/contextbatch/css/com.atlassian.jira.projects.sidebar.init,-_super,-project.issue.navigator,-jira.view.issue/batch.css?jira.create.linked.issue=true","startTime":267.80000019073486,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":267.80000019073486,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":586.6000003814697,"responseStart":0,"secureConnectionStart":0},{"duration":355.80000019073486,"initiatorType":"script","name":"https://jira.mariadb.org/s/5d5e8fe91fbc506585e83ea3b62ccc4b-CDN/lu2cib/820016/12ta74/d176f0986478cc64f24226b3d20c140d/_/download/contextbatch/js/com.atlassian.jira.projects.sidebar.init,-_super,-project.issue.navigator,-jira.view.issue/batch.js?jira.create.linked.issue=true&locale=en","startTime":267.90000009536743,"connectEnd":267.90000009536743,"connectStart":267.90000009536743,"domainLookupEnd":267.90000009536743,"domainLookupStart":267.90000009536743,"fetchStart":267.90000009536743,"redirectEnd":0,"redirectStart":0,"requestStart":590.4000000953674,"responseEnd":623.7000002861023,"responseStart":620.9000000953674,"secureConnectionStart":267.90000009536743},{"duration":738.9000000953674,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2cib/820016/12ta74/1.0/_/download/batch/jira.webresources:bigpipe-js/jira.webresources:bigpipe-js.js","startTime":275.7000002861023,"connectEnd":275.7000002861023,"connectStart":275.7000002861023,"domainLookupEnd":275.7000002861023,"domainLookupStart":275.7000002861023,"fetchStart":275.7000002861023,"redirectEnd":0,"redirectStart":0,"requestStart":1000.9000000953674,"responseEnd":1014.6000003814697,"responseStart":1013.5,"secureConnectionStart":275.7000002861023},{"duration":739.6999998092651,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2cib/820016/12ta74/1.0/_/download/batch/jira.webresources:bigpipe-init/jira.webresources:bigpipe-init.js","startTime":275.80000019073486,"connectEnd":275.80000019073486,"connectStart":275.80000019073486,"domainLookupEnd":275.80000019073486,"domainLookupStart":275.80000019073486,"fetchStart":275.80000019073486,"redirectEnd":0,"redirectStart":0,"requestStart":1001.1000003814697,"responseEnd":1015.5,"responseStart":1014.7000002861023,"secureConnectionStart":275.80000019073486},{"duration":223,"initiatorType":"xmlhttprequest","name":"https://jira.mariadb.org/rest/webResources/1.0/resources","startTime":890.6000003814697,"connectEnd":890.6000003814697,"connectStart":890.6000003814697,"domainLookupEnd":890.6000003814697,"domainLookupStart":890.6000003814697,"fetchStart":890.6000003814697,"redirectEnd":0,"redirectStart":0,"requestStart":1077.2000002861023,"responseEnd":1113.6000003814697,"responseStart":1112.2000002861023,"secureConnectionStart":890.6000003814697}],"fetchStart":0,"domainLookupStart":0,"domainLookupEnd":0,"connectStart":0,"connectEnd":0,"requestStart":26,"responseStart":260,"responseEnd":270,"domLoading":264,"domInteractive":1416,"domContentLoadedEventStart":1416,"domContentLoadedEventEnd":1488,"domComplete":2333,"loadEventStart":2333,"loadEventEnd":2334,"userAgent":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)","marks":[{"name":"bigPipe.sidebar-id.start","time":1324.9000000953674},{"name":"bigPipe.sidebar-id.end","time":1325.7000002861023},{"name":"bigPipe.activity-panel-pipe-id.start","time":1325.8000001907349},{"name":"bigPipe.activity-panel-pipe-id.end","time":1332.6000003814697},{"name":"activityTabFullyLoaded","time":1508.6000003814697}],"measures":[],"correlationId":"63fd969980fb35","effectiveType":"4g","downlink":9.4,"rtt":0,"serverDuration":137,"dbReadsTimeInMs":22,"dbConnsTimeInMs":33,"applicationHash":"9d11dbea5f4be3d4cc21f03a88dd11d8c8687422","experiments":[]}}
This bug can also be reproduced in MySQL and has been verified by MySQL Verification Team.
MySQL#100328