1
0
mirror of https://github.com/MariaDB/server.git synced 2026-01-06 05:22:24 +03:00
Files
mariadb/sql
Sergei Golubchik 516f68af9e MDEV-37345 sequences and prelocking
if a bunch of tables are prelocked, when a table is actually
needed in the routine, open_tables picks one table out of the
prelocked list with a smallest "distance". Distance is simply
a difference between the actual table lock and the requested
table lock. Say, if the prelocked set contains both t1 write-locked
and t1 read-locked, than an UPDATE will prefer write-locked t1
and SELECT will prefer read-locked. if there's only write-locked
table in the set, both UPDATE and SELECT will use it.

this doesn't distingush between UPDATE and INSERT, but INSERT
marks tables with tables->for_insert_data=1, which causes
prelocking to invoke add_internal_tables() and prepare sequences
for execution.

in this bug there were two prelocked t1's, one for INSERT (with
for_insert_data=1) and one for UPDATE.
INSERT picks the second (they both are write-locked, so the distance is
the same), its sequence is not prepared and crashes.

Let's add for_insert_data as the lowest bit into the distance.
2025-10-28 17:49:51 +01:00
..
2025-09-04 18:08:39 +03:00
2025-05-21 07:36:35 +03:00
2025-08-08 14:15:04 +03:00
2024-08-12 09:32:30 +01:00
2025-09-04 18:08:39 +03:00
2025-09-04 18:08:39 +03:00
2024-01-17 13:35:05 +02:00
2024-11-29 13:43:17 +02:00
2023-06-27 17:43:31 +03:00
2024-11-29 12:37:46 +02:00
2024-11-29 12:37:46 +02:00
2025-09-04 18:08:39 +03:00
2024-10-29 15:24:38 +01:00
2025-01-29 11:17:38 +01:00
2025-09-04 18:08:39 +03:00
2025-09-04 18:08:39 +03:00
2023-12-17 11:20:43 +01:00
2024-05-30 16:04:00 +03:00
2025-10-22 09:44:15 +02:00
2025-09-04 18:08:39 +03:00
2025-02-27 04:02:33 +01:00
2025-09-04 18:08:39 +03:00
2025-10-23 10:38:55 +03:00
2025-09-24 12:48:56 +03:00
2024-11-29 13:43:17 +02:00
2025-09-04 18:08:39 +03:00
2024-11-29 13:43:17 +02:00
2024-12-05 10:11:58 +01:00
2025-08-26 14:24:31 +03:00
2025-03-27 08:01:47 +02:00
2024-10-29 15:24:38 +01:00
2024-10-29 15:24:38 +01:00
2024-07-16 15:54:22 +08:00
2024-07-16 15:54:22 +08:00
2025-09-04 18:08:39 +03:00
2025-09-04 18:08:39 +03:00
2025-09-04 18:08:39 +03:00
2025-09-04 18:08:39 +03:00
2025-08-26 14:24:31 +03:00
2024-10-29 15:24:38 +01:00
2024-10-29 15:24:38 +01:00
2025-09-30 12:06:31 +03:00
2025-09-04 18:08:39 +03:00
2024-11-29 13:43:17 +02:00
2023-11-08 16:23:30 +01:00
2025-01-08 12:51:26 +02:00
2024-06-27 10:26:09 +03:00
2024-06-24 13:09:47 +03:00
2025-01-30 11:55:13 +01:00
2025-09-04 18:08:39 +03:00
2025-09-04 18:08:39 +03:00
2025-09-04 18:08:39 +03:00
2025-09-04 18:08:39 +03:00
2025-09-04 18:08:39 +03:00
2023-11-08 16:23:30 +01:00
2024-11-29 12:37:46 +02:00
2024-05-30 16:04:00 +03:00
2025-09-04 18:08:39 +03:00
2025-03-27 08:01:47 +02:00
2023-10-14 13:36:11 +03:00
2025-09-04 18:08:39 +03:00
2025-09-04 18:08:39 +03:00
2025-09-04 18:08:39 +03:00
2024-01-17 13:35:05 +02:00
2024-06-24 13:09:47 +03:00
2024-11-29 13:43:17 +02:00
2024-07-16 15:54:22 +08:00
2023-12-18 11:19:04 +01:00
2023-12-18 11:19:04 +01:00
2024-11-29 12:37:46 +02:00
2024-06-24 13:09:47 +03:00
2023-03-24 12:54:05 +11:00
2025-09-04 18:08:39 +03:00
2025-09-04 18:08:39 +03:00
2025-09-04 18:08:39 +03:00
2024-07-22 15:14:50 +02:00
2025-10-22 09:44:15 +02:00
2025-09-04 18:08:39 +03:00
2025-01-30 11:55:13 +01:00
2025-09-04 18:08:39 +03:00
2025-01-29 11:17:38 +01:00
2024-11-29 12:37:46 +02:00
2024-11-29 13:43:17 +02:00
2024-12-04 18:22:31 +03:00
2025-09-04 18:08:39 +03:00
2023-05-02 10:09:27 +02:00
2024-11-23 08:14:22 -07:00
2025-01-30 11:55:13 +01:00
2025-09-04 18:08:39 +03:00
2024-11-29 13:43:17 +02:00
2024-11-29 12:37:46 +02:00
2024-06-24 13:09:47 +03:00
2025-09-04 18:08:39 +03:00
2025-01-10 13:14:42 +01:00
2024-06-24 13:09:47 +03:00
2025-01-30 11:55:13 +01:00
2025-01-30 11:55:13 +01:00
2024-11-29 12:37:46 +02:00
2024-11-29 12:37:46 +02:00
2023-07-10 11:22:21 +03:00
2024-11-29 13:43:17 +02:00
2024-11-29 13:43:17 +02:00
2025-04-26 10:47:03 +02:00
2025-09-04 18:08:39 +03:00
2024-01-18 19:22:23 +02:00
2025-09-04 18:08:39 +03:00
2025-04-26 10:41:52 +02:00
2024-11-23 08:14:22 -07:00
2025-02-02 23:17:20 +01:00
2025-09-04 18:08:39 +03:00
2024-01-10 18:01:46 +11:00
2024-08-20 10:00:39 +02:00
2025-09-04 18:08:39 +03:00
2024-06-27 10:26:09 +03:00
2024-12-17 11:06:09 +11:00
2024-11-29 12:37:46 +02:00
2025-09-19 12:31:14 +03:00
2025-09-04 18:08:39 +03:00
2025-09-04 18:08:39 +03:00
2023-05-23 12:25:39 +03:00
2024-06-11 12:50:10 +03:00
2024-04-15 18:54:30 +02:00
2024-07-03 12:45:30 +02:00
2023-08-04 08:01:06 +02:00
2025-09-19 12:31:14 +03:00
2023-12-17 11:20:43 +01:00
2023-12-17 11:20:43 +01:00
2025-09-04 18:08:39 +03:00
2025-01-30 11:55:13 +01:00
2023-12-02 01:02:50 +01:00
2025-09-04 18:08:39 +03:00
2025-09-24 12:48:56 +03:00
2025-09-04 18:08:39 +03:00
2025-09-04 18:08:39 +03:00
2025-09-04 18:08:39 +03:00
2024-03-27 15:00:56 +02:00
2024-06-17 09:08:07 +03:00
2025-09-04 18:08:39 +03:00
2025-01-20 09:57:37 +02:00
2025-03-27 08:01:47 +02:00
2025-09-04 18:08:39 +03:00
2023-09-25 13:06:57 +10:00
2023-10-14 13:36:11 +03:00
2024-01-18 19:22:23 +02:00
2023-08-01 15:08:52 +02:00
2025-08-26 14:24:31 +03:00
2025-09-04 18:08:39 +03:00
2024-11-23 08:14:22 -07:00
2024-11-23 08:14:23 -07:00
2025-09-12 13:08:40 +02:00
2025-07-28 18:06:31 +02:00
2025-03-27 08:01:47 +02:00
2025-09-15 11:00:01 +02:00
2024-01-10 18:01:46 +11:00
2025-09-24 12:48:56 +03:00
2025-09-04 18:08:39 +03:00
2024-11-05 21:32:48 +01:00
2025-09-04 18:08:39 +03:00
2024-06-24 13:09:47 +03:00
2025-09-04 18:08:39 +03:00
2024-11-29 13:43:17 +02:00
2024-02-21 13:08:23 +02:00
2024-01-02 17:37:58 +02:00
2024-06-27 10:26:09 +03:00
2025-05-26 08:10:47 +03:00
2024-05-10 20:02:18 +02:00
2024-01-03 15:37:57 +02:00
2025-01-30 11:55:13 +01:00
2024-10-03 10:55:08 +03:00
2025-04-02 06:33:39 +02:00
2025-03-27 08:01:47 +02:00
2024-10-29 15:24:38 +01:00
2023-10-14 13:36:11 +03:00
2025-02-02 23:17:20 +01:00