| Bug #27695 | View should not be allowed to have all space columns | ||
|---|---|---|---|
| Submitted: | 7 Apr 2007 14:14 | Modified: | 16 Nov 2007 13:42 |
| Reporter: | Hakan Kuecuekyilmaz | ||
| Status: | Closed | ||
| Category: | Server: Views | Severity: | S3 (Non-critical) |
| Version: | 5.0, 5.1, 5.2 | OS: | Any |
| Assigned to: | Gleb Shchepa | Target Version: | |
[7 Apr 2007 14:14]
Hakan Kuecuekyilmaz
[9 Apr 2007 10:47]
Sveta Smirnova
Thank you for the report. Verified as described. All versions are affected.
[5 Sep 2007 14:11]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/33707 ChangeSet@1.2509, 2007-09-05 17:14:11+05:00, gshchepa@gleb.loc +4 -0 Fixed bug #27695. Declaring an all space column name in the SELECT FROM DUAL or in a view leads to truncation of that name to empty string identifier. (This bug doesn't affect table column names because all space names are incorrect table column names.) The Item::set_name method has been modified to truncate such identifiers to the last character of the original string.
[11 Sep 2007 12:52]
Oleksandr Byelkin
Technically the patch is correct, but I can't say something about idealogic. IMHO it will be better to get OK from Trudy or Peter.
[13 Sep 2007 15:34]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/34177 ChangeSet@1.2509, 2007-09-13 18:41:50+05:00, gshchepa@gleb.loc +4 -0 Fixed bug #27695. Declaring an all space column name in the SELECT FROM DUAL or in a view leads to misleading warning message: "Leading spaces are removed from name ' '". The Item::set_name method has been modified to raise warnings like "Name ' ' has become ''" in case of the truncation of an all space identifier to an empty string identifier instead of the "Leading spaces are removed from name ' '" warning message.
[13 Sep 2007 16:22]
Oleksandr Byelkin
It is OK for me
[15 Sep 2007 8:04]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/34310 ChangeSet@1.2529, 2007-09-15 07:04:32+02:00, gshchepa@devsrv-b.mysql.com +1 -0 select.test: Post-fix for bug#27695.
[24 Sep 2007 10:31]
Bugs System
Pushed into 5.0.50
[24 Sep 2007 10:35]
Bugs System
Pushed into 5.1.23-beta
[26 Sep 2007 11:49]
Giuseppe Maxia
A side effect of empty columns in views can be observed in Bug#31202. (scripts created by mysqldump fail to load)
[26 Sep 2007 11:53]
Giuseppe Maxia
A side effect of empty column names in views can be observed in Bug#31202. (scripts created by mysqldump fail to load when dealing with views containing an empty column name)
[8 Oct 2007 14:53]
Jon Stephens
I'm reopening this bug.
1. Why should we allow view columns to be named using all spaces or empty string when we
don't allow this for table columns?
2. The above notwithstanding, SELECT behaviour appears broken.
mysql> select version();
+-------------------+
| version() |
+-------------------+
| 5.1.23-beta-debug |
+-------------------+
1 row in set (0.00 sec)
mysql> use test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> CREATE VIEW v1 AS SELECT 1 AS ` `;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> show warnings;
+---------+------+------------------------+
| Level | Code | Message |
+---------+------+------------------------+
| Warning | 1474 | Name ' ' has become '' |
+---------+------+------------------------+
1 row in set (0.00 sec)
mysql> show create view v1;
+------+--------------------------------------------------------------------------------------------------------+----------------------+----------------------+
| View | Create View
| character_set_client | collation_connection |
+------+--------------------------------------------------------------------------------------------------------+----------------------+----------------------+
| v1 | CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW
`v1` AS select 1 AS `` | latin1 | latin1_swedish_ci |
+------+--------------------------------------------------------------------------------------------------------+----------------------+----------------------+
1 row in set (0.00 sec)
mysql> select * from v1\G
*************************** 1. row ***************************
: 1
1 row in set (0.00 sec)
mysql> select * from v1 where '' = 1\G
Empty set (0.00 sec)
mysql> select * from v1 where '' <> 1\G
*************************** 1. row ***************************
: 1
1 row in set (0.00 sec)
[WTF? This is a fresh pull from 5.1 tree, BTW.]
We should disallow altogether the use of all spaces or an empty string as a view column
identifier.
[8 Oct 2007 16:33]
Gleb Shchepa
> 2. The above notwithstanding, SELECT behaviour appears broken.
No, it is not broken:
> [...]
> mysql> select * from v1 where '' = 1\G
> Empty set (0.00 sec)
>
> mysql> select * from v1 where '' <> 1\G
> *************************** 1. row ***************************
> : 1
> 1 row in set (0.00 sec)
>
> [WTF? This is a fresh pull from 5.1 tree, BTW.]
Please use ` sign to enclose column names instead of ' sign
('' = 1 is always FALSE and '' <> 1 is always TRUE).
mysql> CREATE VIEW v1 AS SELECT 1 AS ` `;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> SELECT * FROM v1 WHERE `` = 1;
+---+
| |
+---+
| 1 |
+---+
1 row in set (0.00 sec)
mysql> SELECT * FROM v1 WHERE `` <> 1;
Empty set (0.00 sec)
[8 Oct 2007 16:35]
Jon Stephens
Disregard the second item in my previous comment; I typed "select * from v1 where '' = 1" where I'd intended to use "select * from v1 where `` = 1". Even so, I still think it's a bad idea to allow empty strings for view column names.
[24 Oct 2007 11:01]
Lars Thalmann
A view should not have all-space column names. Note that this bug has serious consequences, see BUG#31202 (it is not possible to make a correct mysqldump). Therefore increasing the priority to P2.
[24 Oct 2007 23:37]
Giuseppe Maxia
Views should not be allowed to have empty column names either. (See Bug#31202)
[24 Oct 2007 23:55]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/36308 ChangeSet@1.2549, 2007-10-25 03:07:42+05:00, gshchepa@gleb.loc +3 -0 Fixed bug #27695: View should not be allowed to have empty or all space column names. The parser has been modified to check VIEW column names with the check_column_name function and to report an error on empty and all space column names (same as for TABLE column names).
[25 Oct 2007 7:21]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/36319 ChangeSet@1.2549, 2007-10-25 10:32:52+05:00, gshchepa@gleb.loc +3 -0 Fixed bug #27695: View should not be allowed to have empty or all space column names. The parser has been modified to check VIEW column names with the check_column_name function and to report an error on empty and all space column names (same as for TABLE column names).
[12 Nov 2007 19:59]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/37602 ChangeSet@1.2683, 2007-11-12 23:00:43+04:00, gshchepa@gleb.loc +2 -0 falcon_bugs.result, falcon_bugs.test: Updated test case (bug #27695).
[16 Nov 2007 10:30]
Bugs System
Pushed into 5.0.52
[16 Nov 2007 10:33]
Bugs System
Pushed into 5.1.23-rc
[16 Nov 2007 10:35]
Bugs System
Pushed into 6.0.4-alpha
[16 Nov 2007 13:42]
Jon Stephens
Thank you for your bug report. This issue has been committed to our source repository of
that product and will be incorporated into the next release.
If necessary, you can access the source repository and build the latest available
version, including the bug fix. More information about accessing the source trees is
available at
http://dev.mysql.com/doc/en/installing-source.html
Documented bugfix in 5.0.52, 5.1.23, 6.0.4 changelogs.
[7 Apr 20:35]
Paul DuBois
This bug fix can result in incompatibilities for replication or loading dump files. See Bug#36287.
