Bug #11399 Use an alias in a select statement on a view
| Submitted: | 16 Jun 2005 21:40 | Modified: | 25 Jul 2005 20:48 |
|---|---|---|---|
| Reporter: | ApplyCation Software | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: Optimizer | Severity: | S3 (Non-critical) |
| Version: | Mysql 5.0.7/5.0.9 | OS: | Windows (Windows XP Home (English)/Linux) |
| Assigned to: | Evgeny Potemkin | CPU Architecture: | Any |
[16 Jun 2005 21:40]
ApplyCation Software
[17 Jun 2005 6:53]
Vasily Kishkin
Sorry...I was not able to reproduce the bug. MySQL administrator returns right name of view field. Please look at attached gif file.
[17 Jun 2005 8:07]
ApplyCation Software
Yes, that's working fine, but what I mean is after creating a view with 2 columns: column1 and column2 (see your GIF). From that point try to do a select statement (for example in your query browser?) on that view. So I type SELECT column1 as "Another_name" ,column2 as "just_antoher_name" FROM test Now, I expect two columns as a result of this select statement: Another_name just_another_name ------------- ------------------ bla...... bla...... But this is what I get: column1 column2 -------------- ------------------ bla...... bla....... So, the statement seems to ignore the alias. Greetings Romke
[17 Jun 2005 16:01]
[ name withheld ]
I have the same problem - also in 5.07 - on Windows XP Home. As a workaround, if I wrap the Select column in a function (i.e. Trim(column1) AS Another_Name) is seems to give me results.
[20 Jun 2005 9:49]
Vasily Kishkin
Could you please try your example query on console client - mysql.exe ? Really I was not reproduce the bug.
[20 Jun 2005 19:04]
[ name withheld ]
I tried on console client with the same result - I logged to an external file and the column name is still the original name not the new name. To recap the problem: Create a view called test Run a select statement against the view using AS on a column select column1 as another_name from test The result set is returned but the COLUMN NAME is still the original column name (column1) not what it should be (another_name) This is with 5.0.7 beta on Windows XP
[27 Jun 2005 7:24]
Vasily Kishkin
Hi ! I don't have any idea about the bug. Could you please update your version of mysql and test again ?
[29 Jun 2005 15:19]
Alex Jacobs
I get this problem as well. The results are exactly as described above. "AS" does not work in views as it does in tables. I created a view, viewname, with a query as simple as "SELECT ID FROM TABLENAME" And ran a simple query on the view: "SELECT ID AS NEW_ID_NAME FROM VIEWNAME" The result is a column of values called "ID", when I expected a column of values called "NEW_ID_NAME"
[29 Jun 2005 15:37]
Paul Furnival
The problem appears to be that in any SELECT statement from a view that uses a
column name alias, the returned result set ignores the ALIAS. I am still getting this problem with an Installation from the Development Source Tree downloaded on
Tuesday 28th June
this can be shown with the following code:
1. Create a new table
Create Table: CREATE TABLE `t1` (
`t1_id` int(10) unsigned NOT NULL auto_increment,
`t1_common` int(10) default NULL,
PRIMARY KEY (`t1_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
2. Populate it
INSERT INTO `t1` VALUES (1,20),(2,30),(3,40);
3. Create a second table
Create Table: CREATE TABLE `t2` (
`t2_id` int(10) unsigned NOT NULL auto_increment,
`t2_common` int(10) default NULL,
`t2_text` varchar(255) default NULL,
PRIMARY KEY (`t2_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
4. Populate it
INSERT INTO `t2` VALUES (1,20,'twenty'),(2,30,'thirty'),(3,40,'forty');
5. Create a view on the data joining the 2 tables
CREATE VIEW `vw_t1_t2` AS
select `t1`.`t1_id` ,
`t1`.`t1_common`,
`t2`.`t2_id`,
`t2`.`t2_common`,
`t2`.`t2_text`
from `t1` join `t2`
where (`t1`.`t1_common` = `t2`.`t2_common`)
6. run a SELECT statement using an ALIAS
select t1_id,t1_common,t2_id,t2_common,t2_text as `changed_name` from vw_t1_t2;
You would expect this to give the result set (note the last field name)
+-------+-----------+-------+-----------+--------------+
| t1_id | t1_common | t2_id | t2_common | changed_name |
+-------+-----------+-------+-----------+--------------+
| 1 | 20 | 1 | 20 | twenty |
| 2 | 30 | 2 | 30 | thirty |
| 3 | 40 | 3 | 40 | forty |
+-------+-----------+-------+-----------+--------------+
But instead it returns (note the last field name)
+-------+-----------+-------+-----------+---------+
| t1_id | t1_common | t2_id | t2_common | t2_text |
+-------+-----------+-------+-----------+---------+
| 1 | 20 | 1 | 20 | twenty |
| 2 | 30 | 2 | 30 | thirty |
| 3 | 40 | 3 | 40 | forty |
+-------+-----------+-------+-----------+---------+
7. If you run the SELECT statement on the two tables seperately:
select `t1`.`t1_id` ,
`t1`.`t1_common`,
`t2`.`t2_id`,
`t2`.`t2_common`,
`t2`.`t2_text` AS `changed_name`
from `t1` join `t2`
where (`t1`.`t1_common` = `t2`.`t2_common`)
it gives the expected result
+-------+-----------+-------+-----------+--------------+
| t1_id | t1_common | t2_id | t2_common | changed_name |
+-------+-----------+-------+-----------+--------------+
| 1 | 20 | 1 | 20 | twenty |
| 2 | 30 | 2 | 30 | thirty |
| 3 | 40 | 3 | 40 | forty |
+-------+-----------+-------+-----------+--------------+
Hope this Helps ;-])
[29 Jun 2005 16:17]
MySQL Verification Team
Thank you for the bug report.
[4 Jul 2005 16:20]
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/internals/26647
[12 Jul 2005 13:34]
Evgeny Potemkin
Fixed in 5.0.10, cset 1.1876.3.1
[12 Jul 2005 13:34]
Evgeny Potemkin
New item created in find_field_in_table() to fix view's item, was created without taking into account original item's alias.
[25 Jul 2005 20:48]
Mike Hillyer
Documented in 5.0.10 changelog: <listitem><para>Aliasing the column names in a <literal>VIEW</literal> did not work when executing a <literal>SELECT</literal> query on the <literal>VIEW</literal>. (Bug #11399)</para></listitem>
Portions of this website are copyright © 2001, 2002 The PHP Group
Page generated in 0.068 sec. using MySQL 8.4.7-u6-cloud
Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the
respective copyright holders.
It is not reviewed in advance
by Oracle and does not necessarily represent the opinion of
Oracle or any other party.