Wrong result for DELETE over a table with a virtual column
| Affects | Status | Importance | Assigned to | Milestone | |
|---|---|---|---|---|---|
| MariaDB |
Fix Released
|
High
|
Igor Babaev | ||
Bug Description
DELETE over a table containing a virtual column with ORDER BY an index and with a LIMIT clause may return wrong results
if the WHERE clause contains a condition for the virtual column:
MariaDB [test]> create table t1 (a int, b int, v int as (a+1), index idx(b));
Query OK, 0 rows affected (0.00 sec)
MariaDB [test]> insert into t1(a, b) values (4, 40), (3, 30), (5, 50), (7, 70), (8, 80), (2, 20), (1, 10);
Query OK, 7 rows affected (0.00 sec)
Records: 7 Duplicates: 0 Warnings: 0
MariaDB [test]> select * from t1 order by b;
+------
| a | b | v |
+------
| 1 | 10 | 2 |
| 2 | 20 | 3 |
| 3 | 30 | 4 |
| 4 | 40 | 5 |
| 5 | 50 | 6 |
| 7 | 70 | 8 |
| 8 | 80 | 9 |
+------
7 rows in set (0.00 sec)
MariaDB [test]> delete from t1 where v > 6 order by b limit 1;
Query OK, 0 rows affected (6.19 sec)
MariaDB [test]> select * from t1;
+------
| a | b | v |
+------
| 4 | 40 | 5 |
| 3 | 30 | 4 |
| 5 | 50 | 6 |
| 7 | 70 | 8 |
| 8 | 80 | 9 |
| 2 | 20 | 3 |
| 1 | 10 | 2 |
+------
7 rows in set (0.00 sec)
| Changed in maria: | |
| importance: | Undecided → High |
| Changed in maria: | |
| assignee: | nobody → Igor Babaev (igorb-seattle) |
| status: | Confirmed → Fix Committed |
| Changed in maria: | |
| milestone: | none → 5.2 |
| Changed in maria: | |
| status: | Fix Committed → Fix Released |

This bug can be observed in current MariaDB 5.2