Commit 2aeb0ae4 authored by unknown's avatar unknown

Merge mysql.com:/home/elkin/MySQL/BARE/5.0

into  mysql.com:/home/elkin/MySQL/MERGE/5.1-new


mysql-test/mysql-test-run.pl:
  Auto merged
mysql-test/r/case.result:
  Auto merged
mysql-test/r/rpl_temporary.result:
  Auto merged
mysql-test/t/case.test:
  Auto merged
mysql-test/t/rpl_temporary.test:
  Auto merged
sql/item_cmpfunc.cc:
  Auto merged
sql/item_strfunc.cc:
  Auto merged
storage/myisam/myisam_ftdump.c:
  Auto merged
sql/sql_base.cc:
  manual merge use local. Another changeset for 5.1 is following.
parents 0634ff6f d71a03a0
...@@ -3580,7 +3580,7 @@ sub valgrind_arguments { ...@@ -3580,7 +3580,7 @@ sub valgrind_arguments {
if ( $opt_valgrind_options ) if ( $opt_valgrind_options )
{ {
mtr_add_arg($args, split(' ', $opt_valgrind_options)); mtr_add_arg($args, '%s', $_) for (split(' ', $opt_valgrind_options));
} }
......
...@@ -175,6 +175,14 @@ SELECT CASE '1' WHEN '2' THEN 'BUG' ELSE 'nobug' END; ...@@ -175,6 +175,14 @@ SELECT CASE '1' WHEN '2' THEN 'BUG' ELSE 'nobug' END;
case+union+test case+union+test
case+union+test case+union+test
nobug nobug
create table t1(a float, b int default 3);
insert into t1 (a) values (2), (11), (8);
select min(a), min(case when 1=1 then a else NULL end),
min(case when 1!=1 then NULL else a end)
from t1 where b=3 group by b;
min(a) min(case when 1=1 then a else NULL end) min(case when 1!=1 then NULL else a end)
2 2 2
drop table t1;
CREATE TABLE t1 (EMPNUM INT); CREATE TABLE t1 (EMPNUM INT);
INSERT INTO t1 VALUES (0), (2); INSERT INTO t1 VALUES (0), (2);
CREATE TABLE t2 (EMPNUM DECIMAL (4, 2)); CREATE TABLE t2 (EMPNUM DECIMAL (4, 2));
......
...@@ -72,3 +72,10 @@ set @@max_allowed_packet=1048576*100; ...@@ -72,3 +72,10 @@ set @@max_allowed_packet=1048576*100;
select compress(repeat('aaaaaaaaaa', IF(XXX, 10, 10000000))) is null; select compress(repeat('aaaaaaaaaa', IF(XXX, 10, 10000000))) is null;
compress(repeat('aaaaaaaaaa', IF(XXX, 10, 10000000))) is null compress(repeat('aaaaaaaaaa', IF(XXX, 10, 10000000))) is null
0 0
create table t1(a blob);
insert into t1 values(NULL), (compress('a'));
select uncompress(a), uncompressed_length(a) from t1;
uncompress(a) uncompressed_length(a)
NULL NULL
a 1
drop table t1;
...@@ -88,3 +88,17 @@ f ...@@ -88,3 +88,17 @@ f
1 1
drop temporary table t4; drop temporary table t4;
drop table t5; drop table t5;
set @session.pseudo_thread_id=100;
create temporary table t101 (id int);
create temporary table t102 (id int);
set @session.pseudo_thread_id=200;
create temporary table t201 (id int);
create temporary table `#not_user_table_prefixed_with_hash_sign_no_harm` (id int);
set @con1_id=connection_id();
kill @con1_id;
create table t1(f int);
insert into t1 values (1);
select * from t1 /* must be 1 */;
f
1
drop table t1;
...@@ -122,6 +122,17 @@ SELECT 'case+union+test' ...@@ -122,6 +122,17 @@ SELECT 'case+union+test'
UNION UNION
SELECT CASE '1' WHEN '2' THEN 'BUG' ELSE 'nobug' END; SELECT CASE '1' WHEN '2' THEN 'BUG' ELSE 'nobug' END;
#
# Bug #17896: problem with MIN(CASE...)
#
create table t1(a float, b int default 3);
insert into t1 (a) values (2), (11), (8);
select min(a), min(case when 1=1 then a else NULL end),
min(case when 1!=1 then NULL else a end)
from t1 where b=3 group by b;
drop table t1;
# End of 4.1 tests # End of 4.1 tests
......
...@@ -47,4 +47,13 @@ set @@max_allowed_packet=1048576*100; ...@@ -47,4 +47,13 @@ set @@max_allowed_packet=1048576*100;
--replace_result "''" XXX "'1'" XXX --replace_result "''" XXX "'1'" XXX
eval select compress(repeat('aaaaaaaaaa', IF('$LOW_MEMORY', 10, 10000000))) is null; eval select compress(repeat('aaaaaaaaaa', IF('$LOW_MEMORY', 10, 10000000))) is null;
#
# Bug #18643: problem with null values
#
create table t1(a blob);
insert into t1 values(NULL), (compress('a'));
select uncompress(a), uncompressed_length(a) from t1;
drop table t1;
# End of 4.1 tests # End of 4.1 tests
...@@ -131,6 +131,8 @@ drop table t1,t2; ...@@ -131,6 +131,8 @@ drop table t1,t2;
create temporary table t3 (f int); create temporary table t3 (f int);
sync_with_master; sync_with_master;
# The server will now close done
# #
# Bug#17284 erroneous temp table cleanup on slave # Bug#17284 erroneous temp table cleanup on slave
# #
...@@ -156,5 +158,31 @@ connection master; ...@@ -156,5 +158,31 @@ connection master;
drop temporary table t4; drop temporary table t4;
drop table t5; drop table t5;
# The server will now close done #
# BUG#17263 incorrect generation DROP temp tables
# Temporary tables of connection are dropped in batches
# where a batch correspond to pseudo_thread_id
# value was set up at the moment of temp table creation
#
connection con1;
set @session.pseudo_thread_id=100;
create temporary table t101 (id int);
create temporary table t102 (id int);
set @session.pseudo_thread_id=200;
create temporary table t201 (id int);
create temporary table `#not_user_table_prefixed_with_hash_sign_no_harm` (id int);
set @con1_id=connection_id();
kill @con1_id;
#now do something to show that slave is ok after DROP temp tables
connection master;
create table t1(f int);
insert into t1 values (1);
sync_slave_with_master;
#connection slave;
select * from t1 /* must be 1 */;
connection master;
drop table t1;
# End of 5.1 tests # End of 5.1 tests
...@@ -41,10 +41,25 @@ static Item_result item_store_type(Item_result a,Item_result b) ...@@ -41,10 +41,25 @@ static Item_result item_store_type(Item_result a,Item_result b)
static void agg_result_type(Item_result *type, Item **items, uint nitems) static void agg_result_type(Item_result *type, Item **items, uint nitems)
{ {
uint i; Item **item, **item_end;
type[0]= items[0]->result_type();
for (i=1 ; i < nitems ; i++) *type= STRING_RESULT;
type[0]= item_store_type(type[0], items[i]->result_type()); /* Skip beginning NULL items */
for (item= items, item_end= item + nitems; item < item_end; item++)
{
if ((*item)->type() != Item::NULL_ITEM)
{
*type= (*item)->result_type();
item++;
break;
}
}
/* Combine result types. Note: NULL items don't affect the result */
for (; item < item_end; item++)
{
if ((*item)->type() != Item::NULL_ITEM)
*type= item_store_type(type[0], (*item)->result_type());
}
} }
......
...@@ -2941,6 +2941,7 @@ String *Item_func_uncompress::val_str(String *str) ...@@ -2941,6 +2941,7 @@ String *Item_func_uncompress::val_str(String *str)
if (!res) if (!res)
goto err; goto err;
null_value= 0;
if (res->is_empty()) if (res->is_empty())
return res; return res;
......
...@@ -34,20 +34,20 @@ static uint lengths[256]; ...@@ -34,20 +34,20 @@ static uint lengths[256];
static struct my_option my_long_options[] = static struct my_option my_long_options[] =
{ {
{"dump", 'd', "Dump index (incl. data offsets and word weights).", {"help", 'h', "Display help and exit.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"stats", 's', "Report global stats.", {"help", '?', "Synonym for -h.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"verbose", 'v', "Be verbose.",
(gptr*) &verbose, (gptr*) &verbose, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"count", 'c', "Calculate per-word stats (counts and global weights).", {"count", 'c', "Calculate per-word stats (counts and global weights).",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"length", 'l', "Report length distribution.", {"dump", 'd', "Dump index (incl. data offsets and word weights).",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"help", 'h', "Display help and exit.", {"length", 'l', "Report length distribution.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"help", '?', "Synonym for -h.", {"stats", 's', "Report global stats.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"verbose", 'v', "Be verbose.",
(gptr*) &verbose, (gptr*) &verbose, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0} { 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
}; };
......
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