Details
Description
Simplified sample query
SELECT greet FROM (SELECT 'hi' AS greet
UNION SELECT 'hello'
FROM (SELECT '') AS _ GROUP BY NULL) AS tbl WHERE greet != ''
Actual result
[mysqli: 1054] Unknown column 'greet' in 'order clause'
Expected result
Query passes (returns 'hihello')
Additional info
The following changes each make the query pass:
- Change line 2 to UNION SELECT 'hello' AS greet
- Remove the GROUP BY NULL clause
Attachments
Issue Links
- duplicates
-
MDEV-19179 Regression: SELECT ... UNION ... with inconsistent column names fails
-
- Closed
-
Thank you for the report!
It was fixed by commit 1248c654c494df6d (
MDEV-19179, the patch is in 10.3.28), on current 10.2-10.5 results are as expected. A temporary workaround for the issue:MariaDB [test]> SELECT greet FROM (SELECT 'hi' AS greet
-> UNION SELECT 'hello'
-> FROM (SELECT '') AS _ GROUP BY NULL) AS tbl WHERE greet != ''
-> ;
ERROR 1054 (42S22): Unknown column 'greet' in 'order clause'
MariaDB [test]> set optimizer_switch='condition_pushdown_for_derived=off';
Query OK, 0 rows affected (0.000 sec)
MariaDB [test]> SELECT greet FROM (SELECT 'hi' AS greet UNION SELECT 'hello' FROM (SELECT '') AS _ GROUP BY NULL) AS tbl WHERE greet != '';
+-------+
| greet |
+-------+
| hi |
| hello |
+-------+
2 rows in set (0.000 sec)