| Bug #65388 | MySQL server creates invalid VIEW definition | ||
|---|---|---|---|
| Submitted: | 22 May 2012 5:22 | Modified: | 4 Dec 2012 18:34 |
| Reporter: | Shlomi Noach (OCA) | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: DDL | Severity: | S2 (Serious) |
| Version: | >= 5.1 | OS: | Any |
| Assigned to: | CPU Architecture: | Any | |
| Tags: | mysqldump, UNION ALL, VIEW | ||
[22 May 2012 5:22]
Shlomi Noach
[22 May 2012 5:53]
Valeriy Kravchuk
Actually bad view definition is created by server:
macbook-pro:5.1 openxs$ bin/mysql -uroot b
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 17
Server version: 5.1.64-debug Source distribution
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> CREATE VIEW bad_dump AS
-> (SELECT 'hello' AS some_column FROM DUAL) UNION ALL (SELECT '' FROM DUAL)
-> ;
Query OK, 0 rows affected (0.07 sec)
mysql> show create view bad_dump\G
*************************** 1. row ***************************
View: bad_dump
Create View: CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `bad_dump` AS (select 'hello' AS `some_column`) union all (select '' AS ``)
character_set_client: latin1
collation_connection: latin1_swedish_ci
1 row in set (0.04 sec)
and this leads to mysqldump creating a dump that can not be loaded successfully.
[22 May 2012 6:57]
Shlomi Noach
Thank you :) Have edited title to reflect your diagnosis
[19 Jun 2012 20:42]
Valeriy Kravchuk
Bug #65675 was marked as a duplicate of this one.
[4 Dec 2012 18:34]
Paul DuBois
Noted in 5.7.0 changelog. For a view defined on a UNION, the server could create an invalid view definition.
[24 Jan 2013 16:14]
Sveta Smirnova
Bug #68157 was marked as duplicate of this one.
[15 May 2014 9:17]
Arnaud Adant
I can reproduce the problem in 5.6.17 : create view v as select 1 union all select floor(floor(floor(floor(floor(floor(floor(floor(floor(floor(floor(0))))))))))); mysql> CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v` AS select 1 AS `1` union all select floor(floor(floor(floor(floor(floor(floor(floor(floor(floor(floor(0))))))))))) AS `floor(floor(floor(floor(floor(floor(floor(floor(floor(floor(floor(0)))))))))))` -> ; ERROR 1166 (42000): Incorrect column name 'floor(floor(floor(floor(floor(floor(floor(floor(floor(floor(floor(0)))))))))))' It works fine in 5.7.4 : CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v` AS select 1 AS `1` union all select floor(floor(floor(floor(floor(floor(floor(floor(floor(floor(floor(0))))))))))) AS `Name_exp_2` -> ; The workaround is to alias these long columns / expressions before 5.7.
