Bug #9962 making UNION with order by does not work properly
Submitted: 17 Apr 2005 19:05 Modified: 17 Apr 2005 19:38
Reporter: Rudenko Ilya Email Updates:
Status: Won't fix Impact on me:
None 
Category:MySQL Server: MyISAM storage engine Severity:S3 (Non-critical)
Version:5.0.3-beta-log / 4.1.11-log OS:Linux (Fedora Core 3)
Assigned to: CPU Architecture:Any

[17 Apr 2005 19:05] Rudenko Ilya
Description:
When I use UNION with ORDER BY in each table, sorting does not work at all.

How to repeat:
DROP TABLE IF EXISTS `cms_db`;
CREATE TABLE `cms_db` (
  `id` tinyint(3) unsigned NOT NULL auto_increment,
  `server_id` smallint(5) unsigned NOT NULL default '0',
  `name` varchar(20) collate cp1251_ukrainian_ci NOT NULL default '',
  `description_ru` varchar(255) collate cp1251_ukrainian_ci NOT NULL default '',
  PRIMARY KEY  (`id`),
  KEY `server_id` (`server_id`,`name`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 COLLATE=cp1251_ukrainian_ci COMMENT='Databases list';
INSERT INTO `cms_db` VALUES (1, 1, 'nau', 'Основная база данных');

DROP TABLE IF EXISTS `cms_table`;
CREATE TABLE `cms_table` (
  `id` smallint(5) unsigned NOT NULL auto_increment,
  `db_id` smallint(5) unsigned NOT NULL default '0',
  `name` char(50) collate cp1251_ukrainian_ci NOT NULL default '',
  PRIMARY KEY  (`id`),
  UNIQUE KEY `name` (`name`),
  UNIQUE KEY `name_2` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 COLLATE=cp1251_ukrainian_ci COMMENT='Таблицы которые обрабатываются';

INSERT INTO `cms_table` VALUES (1, 1, 'admin_structure');
INSERT INTO `cms_table` VALUES (3, 1, 'admin_auth_group');
INSERT INTO `cms_table` VALUES (7, 1, 'admin_auth_user');
INSERT INTO `cms_table` VALUES (11, 1, 'cms_table');
INSERT INTO `cms_table` VALUES (14, 1, 'admin_vocabulary');
INSERT INTO `cms_table` VALUES (15, 1, 'cms_field');
INSERT INTO `cms_table` VALUES (18, 1, 'cms_regexp');
INSERT INTO `cms_table` VALUES (20, 1, 'admin_auth_action');
INSERT INTO `cms_table` VALUES (29, 1, 'site_structure');
INSERT INTO `cms_table` VALUES (187, 1, 'news_message');
INSERT INTO `cms_table` VALUES (190, 1, 'template_design');
INSERT INTO `cms_table` VALUES (222, 1, 'cms_db');
INSERT INTO `cms_table` VALUES (231, 1, 'cms_server');
INSERT INTO `cms_table` VALUES (265, 1, 'template_page');
INSERT INTO `cms_table` VALUES (292, 1, 'admin_auth_action_change');
INSERT INTO `cms_table` VALUES (293, 1, 'admin_auth_action_view');
INSERT INTO `cms_table` VALUES (296, 1, 'admin_auth_action_event');
INSERT INTO `cms_table` VALUES (297, 1, 'admin_auth_event_group');
INSERT INTO `cms_table` VALUES (298, 1, 'admin_auth_event_file');
INSERT INTO `cms_table` VALUES (299, 1, 'admin_auth_group_action');
INSERT INTO `cms_table` VALUES (353, 1, 'news_nauka');
INSERT INTO `cms_table` VALUES (350, 1, 'language_interface');
INSERT INTO `cms_table` VALUES (351, 1, 'language_list');
INSERT INTO `cms_table` VALUES (352, 1, 'language_usage');

(
SELECT CONCAT( 'cms_table', id ) AS id, id AS real_id, CONCAT( 'cms_db', db_id ) AS parent, name AS name
FROM cms_table
ORDER BY name ASC 
)
UNION (

SELECT CONCAT( 'cms_db', id ) AS id, 0 AS real_id, CONCAT( 'cms_server', server_id ) AS parent, name AS name
FROM cms_db
ORDER BY name ASC 
)
[17 Apr 2005 19:38] MySQL Verification Team
Thank you very much for writting to us.

This feature was supported in 4.0 and some time in 4.1, but it was decided not to support it any more.

This decision was based on the fact that this feature is not based on standard ANSI SQL, while in the same time it made difficulties in defining new parsing rules with some nested queries, derived tables etc ....