Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Not a Bug
-
11.4.10
-
None
-
11.4.10-MariaDB
-
Not for Release Notes
Description
UPDATE ... SET ... IN (SELECT ...) statement causes inconsistent behavior in MariaDB compared to MySQL, TiDB, and PostgreSQL.
Results:
PostgreSQL: No error, 0 rows updated.
MySQL: No error, 0 rows updated.
TiDB: No error, 0 rows updated.
MariaDB: Error: ERROR 1054 (42S22): Unknown column 'v1' in 'SELECT'.
Details:
1. Results from pg:
postgres@cn001=# drop table v0;
CREATE TABLE v0 ( v1 CHAR );
UPDATE v0 SET v1 = 'x' IN (
SELECT v1 FROM (
SELECT v1
UNION
SELECT DISTINCT 'a'
) AS v2
);
DROP TABLE
CREATE TABLE
UPDATE 0
2. Results from mysql:
mysql> drop table v0;
Query OK, 0 rows affected (0.04 sec)
mysql> CREATE TABLE v0 ( v1 CHAR );
Query OK, 0 rows affected (0.07 sec)
mysql> UPDATE v0 SET v1 = 'x' IN (
-> SELECT v1 FROM (
-> SELECT v1
-> UNION
-> SELECT DISTINCT 'a'
-> ) AS v2
-> );
Query OK, 0 rows affected (0.01 sec)
Rows matched: 0 Changed: 0 Warnings: 0
3. Results from tidb:
mysql> CREATE TABLE v0 ( v1 CHAR );
Query OK, 0 rows affected (0.07 sec)
mysql> UPDATE v0 SET v1 = 'x' IN (
-> SELECT v1 FROM (
-> SELECT v1
-> UNION
-> SELECT DISTINCT 'a'
-> ) AS v2
-> );
Query OK, 0 rows affected (0.00 sec)
Rows matched: 0 Changed: 0 Warnings: 0
4. Results from mariadb:
mysql> CREATE TABLE v0 ( v1 CHAR );
Query OK, 0 rows affected (0.01 sec)
mysql> UPDATE v0 SET v1 = 'x' IN (
-> SELECT v1 FROM (
-> SELECT v1
-> UNION
-> SELECT DISTINCT 'a'
-> ) AS v2
-> );
ERROR 1054 (42S22): Unknown column 'v1' in 'SELECT'
5. Steps to reproduce:
```
drop table v0;
CREATE TABLE v0 ( v1 CHAR );
UPDATE v0 SET v1 = 'x' IN (
SELECT v1 FROM (
SELECT v1
UNION
SELECT DISTINCT 'a'
) AS v2
);
```
Attachments
Issue Links
- relates to
-
MDEV-19078 Support lateral derived tables
-
- Open
-