summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <Sinisa@sinisa.nasamreza.org>2003-09-12 19:17:30 +0300
committerunknown <Sinisa@sinisa.nasamreza.org>2003-09-12 19:17:30 +0300
commit67dafb011724bcd2ea5762aa6ed36daeffb2aba3 (patch)
treed99b70e327f3202d97b4fd6adaa5ef6bea466062
parentb2a6994b22bff1ee9cb9afd730bd0b88eff978ba (diff)
downloadmariadb-git-67dafb011724bcd2ea5762aa6ed36daeffb2aba3.tar.gz
Fix for a bug #1231
Parse error caused global ORDER BY to be initialized although it should not have been.
-rw-r--r--mysql-test/r/derived.result2
-rw-r--r--mysql-test/t/derived.test2
-rw-r--r--sql/sql_yacc.yy9
3 files changed, 10 insertions, 3 deletions
diff --git a/mysql-test/r/derived.result b/mysql-test/r/derived.result
index 944253bd527..6932e0d5476 100644
--- a/mysql-test/r/derived.result
+++ b/mysql-test/r/derived.result
@@ -204,3 +204,5 @@ select 2 as a from (select * from a1) b;
a
2
drop table a1;
+select mail_id, if(folder.f_description!='', folder.f_description, folder.f_name) as folder_name, date, address_id, phrase, address, subject from folder, (select mail.mail_id as mail_id, date_format(mail.h_date, '%b %e, %Y %h:%i') as date, mail.folder_id, sender.address_id as address_id, sender.phrase as phrase, sender.address as address, mail.h_subject as subject from mail left join mxa as mxa_sender on mail.mail_id=mxa_sender.mail_id and mxa_sender.type='from' left join address as sender on mxa_sender.address_id=sender.address_id mxa as mxa_recipient, address as recipient, where 1 and mail.mail_id=mxa_recipient.mail_id and mxa_recipient.address_id=recipient.address_id and mxa_recipient.type='to' and match(sender.phrase, sender.address, sender.comment) against ('jeremy' in boolean mode) and match(recipient.phrase, recipient.address, recipient.comment) against ('monty' in boolean mode) order by mail.h_date desc limit 0, 25 ) as query where query.folder_id=folder.folder_id;
+ERROR 42000: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'mxa as mxa_recipient, address as recipient, where 1 and mail.mail_id=mxa_r' at line 1
diff --git a/mysql-test/t/derived.test b/mysql-test/t/derived.test
index 3c735878e46..39e61b7caaa 100644
--- a/mysql-test/t/derived.test
+++ b/mysql-test/t/derived.test
@@ -107,3 +107,5 @@ select 2 as a from (select * from a1) b;
use test;
select 2 as a from (select * from a1) b;
drop table a1;
+--error 1064
+select mail_id, if(folder.f_description!='', folder.f_description, folder.f_name) as folder_name, date, address_id, phrase, address, subject from folder, (select mail.mail_id as mail_id, date_format(mail.h_date, '%b %e, %Y %h:%i') as date, mail.folder_id, sender.address_id as address_id, sender.phrase as phrase, sender.address as address, mail.h_subject as subject from mail left join mxa as mxa_sender on mail.mail_id=mxa_sender.mail_id and mxa_sender.type='from' left join address as sender on mxa_sender.address_id=sender.address_id mxa as mxa_recipient, address as recipient, where 1 and mail.mail_id=mxa_recipient.mail_id and mxa_recipient.address_id=recipient.address_id and mxa_recipient.type='to' and match(sender.phrase, sender.address, sender.comment) against ('jeremy' in boolean mode) and match(recipient.phrase, recipient.address, recipient.comment) against ('monty' in boolean mode) order by mail.h_date desc limit 0, 25 ) as query where query.folder_id=folder.folder_id;
diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy
index b84a21b1440..4046aef892b 100644
--- a/sql/sql_yacc.yy
+++ b/sql/sql_yacc.yy
@@ -5267,9 +5267,12 @@ optional_order_or_limit:
SELECT_LEX *sel= lex->current_select;
SELECT_LEX_UNIT *unit= sel->master_unit();
SELECT_LEX *fake= unit->fake_select_lex;
- unit->global_parameters= fake;
- fake->no_table_names_allowed= 1;
- lex->current_select= fake;
+ if (fake)
+ {
+ unit->global_parameters= fake;
+ fake->no_table_names_allowed= 1;
+ lex->current_select= fake;
+ }
thd->where= "global ORDER clause";
}
order_or_limit