[MDEV-29545] InnoDB replace statement returns "can't find record" error during bulk insert operation. Created: 2022-09-15 Updated: 2023-06-07 Resolved: 2023-03-24 |
|
| Status: | Closed |
| Project: | MariaDB Server |
| Component/s: | Storage Engine - InnoDB |
| Affects Version/s: | 10.6.10, 10.7.6 |
| Fix Version/s: | 11.1.1, 10.11.3, 10.6.13, 10.8.8, 10.9.6, 10.10.4 |
| Type: | Bug | Priority: | Major |
| Reporter: | Matthias Leich | Assignee: | Thirunarayanan Balathandayuthapani |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | regression-10.6, rr-profile-analyzed | ||
| Attachments: |
|
||||||||||||
| Issue Links: |
|
||||||||||||
| Description |
|
InnoDB blindly return "DB_END_OF_INDEX" when bulk insert operation transaction
|
| Comments |
| Comment by Marko Mäkelä [ 2022-09-20 ] | |||||||||||||||||||||||||
|
I started to debug the first trace as follows:
In this build, if you set a breakpoint on a function (such as my_error), the parameter values will initially be incorrect. A breakpoint inside the function body works. Error 1032 is ER_KEY_NOT_FOUND. | |||||||||||||||||||||||||
| Comment by Thirunarayanan Balathandayuthapani [ 2023-02-23 ] | |||||||||||||||||||||||||
|
Test case for the scenario:
mysqltest: At line 22: query 'replace into t1 values(1984), (1984)' failed: ER_KEY_NOT_FOUND (1032): Can't find record in 't1' | |||||||||||||||||||||||||
| Comment by Thirunarayanan Balathandayuthapani [ 2023-03-22 ] | |||||||||||||||||||||||||
|
Patch is in bb-10.6- | |||||||||||||||||||||||||
| Comment by Marko Mäkelä [ 2023-03-22 ] | |||||||||||||||||||||||||
|
Can we check prebuilt->select_lock_type instead of checking whether the current transaction has already modified the table? I think that it would be good to treat all locking reads in the same way. I believe that also without the involvement of |