1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

Removed wrong implementation of CUBE/ROLLUP

Fixed bugfix of INSERT ... SET db_name.table_name.column_name
Changed locking to external-locking
Fix client hangup for some invalid SQL queries.


Docs/manual.texi:
  Changelog & recent incompatible changes to 4.0.3
include/mysqld_error.h:
  New error messages
myisam/ft_boolean_search.c:
  Removed compiler warning
myisam/mi_check.c:
  Change mi_fix_rec_buff_for_blob to mi_alloc_rec_buff
myisam/mi_dynrec.c:
  Change mi_fix_rec_buff_for_blob to mi_alloc_rec_buff
myisam/mi_extra.c:
  Change mi_fix_rec_buff_for_blob to mi_alloc_rec_buff
myisam/mi_key.c:
  Change mi_fix_rec_buff_for_blob to mi_alloc_rec_buff
myisam/mi_open.c:
  Change mi_fix_rec_buff_for_blob to mi_alloc_rec_buff
myisam/mi_packrec.c:
  Change mi_fix_rec_buff_for_blob to mi_alloc_rec_buff
myisam/myisamdef.h:
  Change mi_fix_rec_buff_for_blob to mi_alloc_rec_buff
myisam/sort.c:
  Fixed uninitialized variable
mysql-test/r/insert_set.result:
  Change test case to use database foo
mysql-test/r/union.result:
  Test wrong usage of union
mysql-test/t/insert_set.test:
  Test bug in insert
mysql-test/t/union.test:
  Test wrong usage of union
sql/item.h:
  Indentation cleanup
sql/item_cmpfunc.h:
  Indentation cleanup
sql/item_func.h:
  Indentation cleanup
sql/item_strfunc.h:
  Indentation cleanup
sql/item_sum.h:
  Indentation cleanup
sql/item_timefunc.h:
  Indentation cleanup
sql/item_uniq.h:
  Indentation cleanup
sql/mysql_priv.h:
  Fix that we always generate an error message when calling YYABORT
sql/mysqld.cc:
  Changed command line arguments regarding locking to always use --external-locking
  Disable external locking by default
sql/procedure.h:
  Cleanup
sql/set_var.cc:
  change locking -> external_locking
sql/share/czech/errmsg.txt:
  New error messages
sql/share/danish/errmsg.txt:
  New error messages
sql/share/dutch/errmsg.txt:
  New error messages
sql/share/english/errmsg.txt:
  New error messages
sql/share/estonian/errmsg.txt:
  New error messages
sql/share/french/errmsg.txt:
  New error messages
sql/share/german/errmsg.txt:
  New error messages
sql/share/greek/errmsg.txt:
  New error messages
sql/share/hungarian/errmsg.txt:
  New error messages
sql/share/italian/errmsg.txt:
  New error messages
sql/share/japanese/errmsg.txt:
  New error messages
sql/share/korean/errmsg.txt:
  New error messages
mysql-test/r/olap.result:
  Removed CUBE/ROLLUP
mysql-test/t/olap.test:
  Removed CUBE/ROLLUP
sql/share/norwegian-ny/errmsg.txt:
  New error messages
sql/share/norwegian/errmsg.txt:
  New error messages
sql/share/polish/errmsg.txt:
  New error messages
sql/share/portuguese/errmsg.txt:
  New error messages
sql/share/romanian/errmsg.txt:
  New error messages
sql/share/russian/errmsg.txt:
  New error messages
sql/share/slovak/errmsg.txt:
  New error messages
sql/share/spanish/errmsg.txt:
  New error messages
sql/share/swedish/errmsg.txt:
  New error messages
sql/share/ukrainian/errmsg.txt:
  New error messages
sql/sql_base.cc:
  Removed wrong patch for INSERT...
sql/sql_insert.cc:
  Fix bug in INSERT ... SET db_name.table_name.column_name
sql/sql_lex.h:
  Changed NON_EXISTIONG_ONE -> UNSPECIFIED_OLAP_TYPE
sql/sql_olap.cc:
  Removed wrong implementation of CUBE/ROLLUP
sql/sql_parse.cc:
  Removed wrong implementation of CUBE/ROLLUP
  Added function to give better error messages
sql/sql_select.cc:
  Removed wrong implementation of CUBE/ROLLUP
sql/sql_union.cc:
  Added comment
sql/sql_yacc.yy:
  Fix that we always generate an error message when calling YYABORT
This commit is contained in:
unknown
2002-07-24 19:55:08 +03:00
parent c911e9d721
commit 72dec69046
58 changed files with 504 additions and 541 deletions

View File

@ -1,6 +1,6 @@
drop database if exists a;
create database a;
use a;
drop database if exists foo;
create database foo;
use foo;
create table b (c int);
insert into a.b set a.b.c = '1';
drop database a;
insert into foo.b set foo.b.c = '1';
drop database foo;

View File

@ -15,124 +15,13 @@ insert into sales values ( 'Computer', 'India',2000, 1200),
( 'Computer', 'United States', 2000,1500),
( 'Calculator', 'United States', 2000,75);
select product, country , year, sum(profit) from sales group by product, country, year with cube;
product country year sum(profit)
Calculator India 2000 75
Calculator United States 1999 50
Calculator United States 2000 150
Computer India 1999 1200
Computer India 2000 1200
Computer United States 1999 1500
Computer United States 2000 3000
TV India 1999 100
TV India 2000 200
TV United States 1999 150
TV United States 2000 150
Calculator India 0 75
Calculator United States 0 200
Computer India 0 2400
Computer United States 0 4500
TV India 0 300
TV United States 0 300
Calculator ALL 1999 50
Calculator ALL 2000 225
Computer ALL 1999 2700
Computer ALL 2000 4200
TV ALL 1999 250
TV ALL 2000 350
ALL India 1999 1300
ALL India 2000 1475
ALL United States 1999 1700
ALL United States 2000 3300
Calculator ALL 0 275
Computer ALL 0 6900
TV ALL 0 600
ALL India 0 2775
ALL United States 0 5000
ALL ALL 1999 3000
ALL ALL 2000 4775
ALL ALL 0 7775
This version of MySQL doesn't yet support 'CUBE',
explain select product, country , year, sum(profit) from sales group by product, country, year with cube;
table type possible_keys key key_len ref rows Extra
sales ALL NULL NULL NULL NULL 14 Using temporary; Using filesort
sales ALL NULL NULL NULL NULL 14 Using temporary; Using filesort
sales ALL NULL NULL NULL NULL 14 Using temporary; Using filesort
sales ALL NULL NULL NULL NULL 14 Using temporary; Using filesort
sales ALL NULL NULL NULL NULL 14 Using temporary; Using filesort
sales ALL NULL NULL NULL NULL 14 Using temporary; Using filesort
sales ALL NULL NULL NULL NULL 14 Using temporary; Using filesort
sales ALL NULL NULL NULL NULL 14
This version of MySQL doesn't yet support 'CUBE',
select product, country , year, sum(profit) from sales group by product, country, year with rollup;
product country year sum(profit)
Calculator India 2000 75
Calculator United States 1999 50
Calculator United States 2000 150
Computer India 1999 1200
Computer India 2000 1200
Computer United States 1999 1500
Computer United States 2000 3000
TV India 1999 100
TV India 2000 200
TV United States 1999 150
TV United States 2000 150
ALL India 1999 1300
ALL India 2000 1475
ALL United States 1999 1700
ALL United States 2000 3300
ALL ALL 1999 3000
ALL ALL 2000 4775
ALL ALL 0 7775
This version of MySQL doesn't yet support 'ROLLUP',
explain select product, country , year, sum(profit) from sales group by product, country, year with rollup;
table type possible_keys key key_len ref rows Extra
sales ALL NULL NULL NULL NULL 14 Using temporary; Using filesort
sales ALL NULL NULL NULL NULL 14 Using temporary; Using filesort
sales ALL NULL NULL NULL NULL 14 Using temporary; Using filesort
sales ALL NULL NULL NULL NULL 14
This version of MySQL doesn't yet support 'ROLLUP',
select product, country , year, sum(profit) from sales group by product, country, year with cube union all select product, country , year, sum(profit) from sales group by product, country, year with rollup;
product country year sum(profit)
Calculator India 2000 75
Calculator United States 1999 50
Calculator United States 2000 150
Computer India 1999 1200
Computer India 2000 1200
Computer United States 1999 1500
Computer United States 2000 3000
TV India 1999 100
TV India 2000 200
TV United States 1999 150
TV United States 2000 150
Calculator India 0 75
Calculator United States 0 200
Computer India 0 2400
Computer United States 0 4500
TV India 0 300
TV United States 0 300
Calculator ALL 1999 50
Calculator ALL 2000 225
Computer ALL 1999 2700
Computer ALL 2000 4200
TV ALL 1999 250
TV ALL 2000 350
ALL India 1999 1300
ALL India 2000 1475
ALL United States 1999 1700
ALL United States 2000 3300
Calculator ALL 0 275
Computer ALL 0 6900
TV ALL 0 600
ALL India 0 2775
ALL United States 0 5000
ALL ALL 1999 3000
ALL ALL 2000 4775
ALL ALL 0 7775
Calculator India 2000 75
Calculator United States 1999 50
Calculator United States 2000 150
Computer India 1999 1200
Computer India 2000 1200
Computer United States 1999 1500
Computer United States 2000 3000
TV India 1999 100
TV India 2000 200
TV United States 1999 150
TV United States 2000 150
This version of MySQL doesn't yet support 'CUBE',
drop table sales;

View File

@ -129,6 +129,8 @@ select * from t1 union select a from t2;
The used SELECT statements have a different number of columns
select a from t1 union select * from t2;
The used SELECT statements have a different number of columns
select * from t1 union select SQL_BUFFER_RESULT * from t2;
Wrong usage/placement of 'SQL_BUFFER_RESULT'
create table t3 select a,b from t1 union all select a,b from t2;
insert into t3 select a,b from t1 union all select a,b from t2;
replace into t3 select a,b as c from t1 union all select a,b from t2;

View File

@ -2,9 +2,9 @@
# Test of mysqld crash with fully qualified column names
#
drop database if exists a;
create database a;
use a;
drop database if exists foo;
create database foo;
use foo;
create table b (c int);
insert into a.b set a.b.c = '1';
drop database a;
insert into foo.b set foo.b.c = '1';
drop database foo;

View File

@ -14,9 +14,14 @@ insert into sales values ( 'Computer', 'India',2000, 1200),
( 'Computer', 'India', 1999,1200),
( 'Computer', 'United States', 2000,1500),
( 'Calculator', 'United States', 2000,75);
--error 1235
select product, country , year, sum(profit) from sales group by product, country, year with cube;
--error 1235
explain select product, country , year, sum(profit) from sales group by product, country, year with cube;
--error 1235
select product, country , year, sum(profit) from sales group by product, country, year with rollup;
--error 1235
explain select product, country , year, sum(profit) from sales group by product, country, year with rollup;
--error 1235
select product, country , year, sum(profit) from sales group by product, country, year with cube union all select product, country , year, sum(profit) from sales group by product, country, year with rollup;
drop table sales;

View File

@ -23,7 +23,11 @@ select 't1',b,count(*) from t1 group by b UNION select 't2',b,count(*) from t2 g
explain (select a,b from t1 limit 2) union all (select a,b from t2 order by a limit 1) order by b desc;
(select sql_calc_found_rows a,b from t1 limit 2) union all (select a,b from t2 order by a) limit 2;
select found_rows();
#
# Test some error conditions with UNION
#
explain select a,b from t1 union all select a,b from t2;
--error 1054
@ -53,6 +57,9 @@ select * from t1 union select a from t2;
--error 1222
select a from t1 union select * from t2;
--error 1234
select * from t1 union select SQL_BUFFER_RESULT * from t2;
# Test CREATE, INSERT and REPLACE
create table t3 select a,b from t1 union all select a,b from t2;
insert into t3 select a,b from t1 union all select a,b from t2;