Commit 14e1ed36 authored by malff/marcsql@weblab.(none)'s avatar malff/marcsql@weblab.(none)

Merge weblab.(none):/home/marcsql/TREE/mysql-4.1-base

into  weblab.(none):/home/marcsql/TREE/mysql-4.1-runtime
parents d204dc2d 8f24815a
......@@ -690,3 +690,116 @@ SHOW INDEX FROM bug24219_2;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
bug24219_2 1 a 1 a A NULL NULL NULL YES BTREE disabled
DROP TABLE bug24219_2;
drop table if exists table_24562;
create table table_24562(
section int,
subsection int,
title varchar(50));
insert into table_24562 values
(1, 0, "Introduction"),
(1, 1, "Authors"),
(1, 2, "Acknowledgements"),
(2, 0, "Basics"),
(2, 1, "Syntax"),
(2, 2, "Client"),
(2, 3, "Server"),
(3, 0, "Intermediate"),
(3, 1, "Complex queries"),
(3, 2, "Stored Procedures"),
(3, 3, "Stored Functions"),
(4, 0, "Advanced"),
(4, 1, "Replication"),
(4, 2, "Load balancing"),
(4, 3, "High availability"),
(5, 0, "Conclusion");
select * from table_24562;
section subsection title
1 0 Introduction
1 1 Authors
1 2 Acknowledgements
2 0 Basics
2 1 Syntax
2 2 Client
2 3 Server
3 0 Intermediate
3 1 Complex queries
3 2 Stored Procedures
3 3 Stored Functions
4 0 Advanced
4 1 Replication
4 2 Load balancing
4 3 High availability
5 0 Conclusion
alter table table_24562 add column reviewer varchar(20),
order by title;
select * from table_24562;
section subsection title reviewer
1 2 Acknowledgements NULL
4 0 Advanced NULL
1 1 Authors NULL
2 0 Basics NULL
2 2 Client NULL
3 1 Complex queries NULL
5 0 Conclusion NULL
4 3 High availability NULL
3 0 Intermediate NULL
1 0 Introduction NULL
4 2 Load balancing NULL
4 1 Replication NULL
2 3 Server NULL
3 3 Stored Functions NULL
3 2 Stored Procedures NULL
2 1 Syntax NULL
update table_24562 set reviewer="Me" where section=2;
update table_24562 set reviewer="You" where section=3;
alter table table_24562
order by section ASC, subsection DESC;
select * from table_24562;
section subsection title reviewer
1 2 Acknowledgements NULL
1 1 Authors NULL
1 0 Introduction NULL
2 3 Server Me
2 2 Client Me
2 1 Syntax Me
2 0 Basics Me
3 3 Stored Functions You
3 2 Stored Procedures You
3 1 Complex queries You
3 0 Intermediate You
4 3 High availability NULL
4 2 Load balancing NULL
4 1 Replication NULL
4 0 Advanced NULL
5 0 Conclusion NULL
alter table table_24562
order by table_24562.subsection ASC, table_24562.section DESC;
select * from table_24562;
section subsection title reviewer
5 0 Conclusion NULL
4 0 Advanced NULL
3 0 Intermediate You
2 0 Basics Me
1 0 Introduction NULL
4 1 Replication NULL
3 1 Complex queries You
2 1 Syntax Me
1 1 Authors NULL
4 2 Load balancing NULL
3 2 Stored Procedures You
2 2 Client Me
1 2 Acknowledgements NULL
4 3 High availability NULL
3 3 Stored Functions You
2 3 Server Me
alter table table_24562 order by 12;
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 '12' at line 1
alter table table_24562 order by (section + 12);
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 '(section + 12)' at line 1
alter table table_24562 order by length(title);
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 'length(title)' at line 1
alter table table_24562 order by (select 12 from dual);
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 '(select 12 from dual)' at line 1
alter table table_24562 order by no_such_col;
ERROR 42S22: Unknown column 'no_such_col' in 'order clause'
drop table table_24562;
INSERT INTO init_file.startup VALUES ( NOW() );
SELECT * INTO @X FROM init_file.startup limit 0,1;
SELECT * INTO @Y FROM init_file.startup limit 1,1;
SELECT YEAR(@X)-YEAR(@Y);
YEAR(@X)-YEAR(@Y)
0
DROP DATABASE init_file;
ok
End of 4.1 tests
select * from mysql.user as t1, mysql.user as t2, mysql.user as t3;
#
# Bug#23240 --init-file statements with NOW() reports '1970-01-01 11:00:00'as the date time
#
CREATE DATABASE IF NOT EXISTS init_file;
CREATE TABLE IF NOT EXISTS init_file.startup ( startdate DATETIME );
INSERT INTO init_file.startup VALUES ( NOW() );
......@@ -518,4 +518,70 @@ SHOW INDEX FROM bug24219_2;
DROP TABLE bug24219_2;
#
# Bug#24562 (ALTER TABLE ... ORDER BY ... with complex expression asserts)
#
--disable_warnings
drop table if exists table_24562;
--enable_warnings
create table table_24562(
section int,
subsection int,
title varchar(50));
insert into table_24562 values
(1, 0, "Introduction"),
(1, 1, "Authors"),
(1, 2, "Acknowledgements"),
(2, 0, "Basics"),
(2, 1, "Syntax"),
(2, 2, "Client"),
(2, 3, "Server"),
(3, 0, "Intermediate"),
(3, 1, "Complex queries"),
(3, 2, "Stored Procedures"),
(3, 3, "Stored Functions"),
(4, 0, "Advanced"),
(4, 1, "Replication"),
(4, 2, "Load balancing"),
(4, 3, "High availability"),
(5, 0, "Conclusion");
select * from table_24562;
alter table table_24562 add column reviewer varchar(20),
order by title;
select * from table_24562;
update table_24562 set reviewer="Me" where section=2;
update table_24562 set reviewer="You" where section=3;
alter table table_24562
order by section ASC, subsection DESC;
select * from table_24562;
alter table table_24562
order by table_24562.subsection ASC, table_24562.section DESC;
select * from table_24562;
--error 1064
alter table table_24562 order by 12;
--error 1064
alter table table_24562 order by (section + 12);
--error 1064
alter table table_24562 order by length(title);
--error 1064
alter table table_24562 order by (select 12 from dual);
--error 1054
alter table table_24562 order by no_such_col;
drop table table_24562;
# End of 4.1 tests
......@@ -6,5 +6,14 @@
# mysql-test/t/init_file-master.opt for the actual test
#
#
# Bug#23240 --init-file statements with NOW() reports '1970-01-01 11:00:00'as the date time
#
INSERT INTO init_file.startup VALUES ( NOW() );
SELECT * INTO @X FROM init_file.startup limit 0,1;
SELECT * INTO @Y FROM init_file.startup limit 1,1;
SELECT YEAR(@X)-YEAR(@Y);
DROP DATABASE init_file;
--echo ok
--echo End of 4.1 tests
......@@ -1183,6 +1183,7 @@ extern "C" pthread_handler_decl(handle_bootstrap,arg)
free_root(thd->mem_root,MYF(MY_KEEP_PREALLOC));
break;
}
thd->set_time();
mysql_parse(thd,thd->query,length);
close_thread_tables(thd); // Free tables
if (thd->is_fatal_error)
......
......@@ -2021,7 +2021,7 @@ alter_list_item:
lex->alter_info.is_simple= 0;
lex->alter_info.flags|= ALTER_OPTIONS;
}
| order_clause
| alter_order_clause
{
LEX *lex=Lex;
lex->alter_info.is_simple= 0;
......@@ -3780,6 +3780,29 @@ olap_opt:
}
;
/*
Order by statement in ALTER TABLE
*/
alter_order_clause:
ORDER_SYM BY alter_order_list
;
alter_order_list:
alter_order_list ',' alter_order_item
| alter_order_item
;
alter_order_item:
simple_ident order_dir
{
THD *thd= YYTHD;
bool ascending= ($2 == 1) ? true : false;
if (add_order_to_list(thd, $1, ascending))
YYABORT;
}
;
/*
Order by statement in select
*/
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment