Details
-
Bug
-
Status: Closed (View Workflow)
-
Blocker
-
Resolution: Fixed
-
10.2.3, 10.2(EOL)
-
10.2.4-1, 10.2.4-2
Description
MariaDB [test]> CREATE OR REPLACE VIEW v1 AS SELECT (2, 3) NOT IN ( SELECT i, j FROM t1 ); |
Query OK, 0 rows affected (0.10 sec) |
|
MariaDB [test]> SELECT * FROM v1; |
ERROR 1241 (21000): Operand should contain 1 column(s) |
MariaDB [test]> SHOW CREATE VIEW v1; |
ERROR 1241 (21000): Operand should contain 1 column(s) |
The problem was introduced with this commit in 10.2:
commit 180065ebb0db78ea5c955b54c9f7997dbcba3121
|
Author: Sergei Golubchik <serg@mariadb.org>
|
Date: Sun Nov 27 19:50:10 2016 +0100
|
|
Item::print(): remove redundant parentheses
|
|
by introducing new Item::precedence() method and using it
|
to decide whether parentheses are required
|
The view is created with this definition in the frm file:
query=select !(2,3) in (select `test`.`t1`.`i`,`test`.`t1`.`j` from `test`.`t1`) AS `(2, 3) NOT IN ( SELECT i, j FROM t1 )` |
Before the change, it was
query=select (not((2,3) in (select `test`.`t1`.`i`,`test`.`t1`.`j` from `test`.`t1`))) AS `(2, 3) NOT IN ( SELECT i, j FROM t1 )` |
Test case |
CREATE TABLE t1 (i INT, j INT); |
INSERT INTO t1 VALUES (1,1),(2,2); |
CREATE OR REPLACE VIEW v1 AS SELECT (2, 3) NOT IN ( SELECT i, j FROM t1 ); |
SELECT * FROM v1; |
DROP VIEW v1; |
DROP TABLE t1; |