Merge bk-internal.mysql.com:/home/bk/mysql-4.1
into mysql.com:/home/my/mysql-4.1
This commit is contained in:
commit
1c172c3bc4
@ -26,6 +26,7 @@ bar@deer.(none)
|
|||||||
bar@gw.udmsearch.izhnet.ru
|
bar@gw.udmsearch.izhnet.ru
|
||||||
bar@mysql.com
|
bar@mysql.com
|
||||||
bar@noter.intranet.mysql.r18.ru
|
bar@noter.intranet.mysql.r18.ru
|
||||||
|
bell@51.0.168.192.in-addr.arpa
|
||||||
bell@laptop.sanja.is.com.ua
|
bell@laptop.sanja.is.com.ua
|
||||||
bell@sanja.is.com.ua
|
bell@sanja.is.com.ua
|
||||||
bk@admin.bk
|
bk@admin.bk
|
||||||
|
@ -339,3 +339,22 @@ select distinct sum(b) from (select a,b from t1) y group by a;
|
|||||||
sum(b)
|
sum(b)
|
||||||
4
|
4
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1(a int);
|
||||||
|
create table t2(a int);
|
||||||
|
create table t3(a int);
|
||||||
|
insert into t1 values(1),(1);
|
||||||
|
insert into t2 values(2),(2);
|
||||||
|
insert into t3 values(3),(3);
|
||||||
|
select * from t1 union distinct select * from t2 union all select * from t3;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
3
|
||||||
|
select * from (select * from t1 union distinct select * from t2 union all select * from t3) X;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
3
|
||||||
|
drop table t1, t2, t3;
|
||||||
|
@ -123,7 +123,7 @@ drop table t1;
|
|||||||
set @a=_latin2'test';
|
set @a=_latin2'test';
|
||||||
select charset(@a),collation(@a),coercibility(@a);
|
select charset(@a),collation(@a),coercibility(@a);
|
||||||
charset(@a) collation(@a) coercibility(@a)
|
charset(@a) collation(@a) coercibility(@a)
|
||||||
latin2 latin2_general_ci 3
|
latin2 latin2_general_ci 2
|
||||||
select @a=_latin2'TEST';
|
select @a=_latin2'TEST';
|
||||||
@a=_latin2'TEST'
|
@a=_latin2'TEST'
|
||||||
1
|
1
|
||||||
@ -133,12 +133,13 @@ select @a=_latin2'TEST' collate latin2_bin;
|
|||||||
set @a=_latin2'test' collate latin2_general_ci;
|
set @a=_latin2'test' collate latin2_general_ci;
|
||||||
select charset(@a),collation(@a),coercibility(@a);
|
select charset(@a),collation(@a),coercibility(@a);
|
||||||
charset(@a) collation(@a) coercibility(@a)
|
charset(@a) collation(@a) coercibility(@a)
|
||||||
latin2 latin2_general_ci 0
|
latin2 latin2_general_ci 2
|
||||||
select @a=_latin2'TEST';
|
select @a=_latin2'TEST';
|
||||||
@a=_latin2'TEST'
|
@a=_latin2'TEST'
|
||||||
1
|
1
|
||||||
select @a=_latin2'TEST' collate latin2_bin;
|
select @a=_latin2'TEST' collate latin2_bin;
|
||||||
ERROR HY000: Illegal mix of collations (latin2_general_ci,EXPLICIT) and (latin2_bin,EXPLICIT) for operation '='
|
@a=_latin2'TEST' collate latin2_bin
|
||||||
|
0
|
||||||
select charset(@a:=_latin2'test');
|
select charset(@a:=_latin2'test');
|
||||||
charset(@a:=_latin2'test')
|
charset(@a:=_latin2'test')
|
||||||
latin2
|
latin2
|
||||||
@ -147,21 +148,22 @@ collation(@a:=_latin2'test')
|
|||||||
latin2_general_ci
|
latin2_general_ci
|
||||||
select coercibility(@a:=_latin2'test');
|
select coercibility(@a:=_latin2'test');
|
||||||
coercibility(@a:=_latin2'test')
|
coercibility(@a:=_latin2'test')
|
||||||
3
|
2
|
||||||
select collation(@a:=_latin2'test' collate latin2_bin);
|
select collation(@a:=_latin2'test' collate latin2_bin);
|
||||||
collation(@a:=_latin2'test' collate latin2_bin)
|
collation(@a:=_latin2'test' collate latin2_bin)
|
||||||
latin2_bin
|
latin2_bin
|
||||||
select coercibility(@a:=_latin2'test' collate latin2_bin);
|
select coercibility(@a:=_latin2'test' collate latin2_bin);
|
||||||
coercibility(@a:=_latin2'test' collate latin2_bin)
|
coercibility(@a:=_latin2'test' collate latin2_bin)
|
||||||
0
|
2
|
||||||
select (@a:=_latin2'test' collate latin2_bin) = _latin2'TEST';
|
select (@a:=_latin2'test' collate latin2_bin) = _latin2'TEST';
|
||||||
(@a:=_latin2'test' collate latin2_bin) = _latin2'TEST'
|
(@a:=_latin2'test' collate latin2_bin) = _latin2'TEST'
|
||||||
0
|
0
|
||||||
select charset(@a),collation(@a),coercibility(@a);
|
select charset(@a),collation(@a),coercibility(@a);
|
||||||
charset(@a) collation(@a) coercibility(@a)
|
charset(@a) collation(@a) coercibility(@a)
|
||||||
latin2 latin2_bin 0
|
latin2 latin2_bin 2
|
||||||
select (@a:=_latin2'test' collate latin2_bin) = _latin2'TEST' collate latin2_general_ci;
|
select (@a:=_latin2'test' collate latin2_bin) = _latin2'TEST' collate latin2_general_ci;
|
||||||
ERROR HY000: Illegal mix of collations (latin2_bin,EXPLICIT) and (latin2_general_ci,EXPLICIT) for operation '='
|
(@a:=_latin2'test' collate latin2_bin) = _latin2'TEST' collate latin2_general_ci
|
||||||
|
1
|
||||||
create table t1 (a varchar(50));
|
create table t1 (a varchar(50));
|
||||||
reset master;
|
reset master;
|
||||||
SET TIMESTAMP=10000;
|
SET TIMESTAMP=10000;
|
||||||
|
@ -224,3 +224,15 @@ select distinct sum(b) from t1 group by a;
|
|||||||
select distinct sum(b) from (select a,b from t1) y group by a;
|
select distinct sum(b) from (select a,b from t1) y group by a;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# test of union subquery in the FROM clause with complex distinct/all (BUG#6565)
|
||||||
|
#
|
||||||
|
create table t1(a int);
|
||||||
|
create table t2(a int);
|
||||||
|
create table t3(a int);
|
||||||
|
insert into t1 values(1),(1);
|
||||||
|
insert into t2 values(2),(2);
|
||||||
|
insert into t3 values(3),(3);
|
||||||
|
select * from t1 union distinct select * from t2 union all select * from t3;
|
||||||
|
select * from (select * from t1 union distinct select * from t2 union all select * from t3) X;
|
||||||
|
drop table t1, t2, t3;
|
||||||
|
@ -84,7 +84,6 @@ select @a=_latin2'TEST' collate latin2_bin;
|
|||||||
set @a=_latin2'test' collate latin2_general_ci;
|
set @a=_latin2'test' collate latin2_general_ci;
|
||||||
select charset(@a),collation(@a),coercibility(@a);
|
select charset(@a),collation(@a),coercibility(@a);
|
||||||
select @a=_latin2'TEST';
|
select @a=_latin2'TEST';
|
||||||
--error 1267
|
|
||||||
select @a=_latin2'TEST' collate latin2_bin;
|
select @a=_latin2'TEST' collate latin2_bin;
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -97,7 +96,6 @@ select collation(@a:=_latin2'test' collate latin2_bin);
|
|||||||
select coercibility(@a:=_latin2'test' collate latin2_bin);
|
select coercibility(@a:=_latin2'test' collate latin2_bin);
|
||||||
select (@a:=_latin2'test' collate latin2_bin) = _latin2'TEST';
|
select (@a:=_latin2'test' collate latin2_bin) = _latin2'TEST';
|
||||||
select charset(@a),collation(@a),coercibility(@a);
|
select charset(@a),collation(@a),coercibility(@a);
|
||||||
--error 1267
|
|
||||||
select (@a:=_latin2'test' collate latin2_bin) = _latin2'TEST' collate latin2_general_ci;
|
select (@a:=_latin2'test' collate latin2_bin) = _latin2'TEST' collate latin2_general_ci;
|
||||||
|
|
||||||
# Check that user variables are binlogged correctly (BUG#3875)
|
# Check that user variables are binlogged correctly (BUG#3875)
|
||||||
|
@ -2361,7 +2361,7 @@ static user_var_entry *get_variable(HASH *hash, LEX_STRING &name,
|
|||||||
entry->value=0;
|
entry->value=0;
|
||||||
entry->length=0;
|
entry->length=0;
|
||||||
entry->update_query_id=0;
|
entry->update_query_id=0;
|
||||||
entry->collation.set(NULL, DERIVATION_NONE);
|
entry->collation.set(NULL, DERIVATION_IMPLICIT);
|
||||||
/*
|
/*
|
||||||
If we are here, we were called from a SET or a query which sets a
|
If we are here, we were called from a SET or a query which sets a
|
||||||
variable. Imagine it is this:
|
variable. Imagine it is this:
|
||||||
@ -2419,8 +2419,8 @@ bool Item_func_set_user_var::fix_fields(THD *thd, TABLE_LIST *tables,
|
|||||||
and the variable has previously been initialized.
|
and the variable has previously been initialized.
|
||||||
*/
|
*/
|
||||||
if (!entry->collation.collation || !args[0]->null_value)
|
if (!entry->collation.collation || !args[0]->null_value)
|
||||||
entry->collation.set(args[0]->collation);
|
entry->collation.set(args[0]->collation.collation, DERIVATION_IMPLICIT);
|
||||||
collation.set(entry->collation);
|
collation.set(entry->collation.collation, DERIVATION_IMPLICIT);
|
||||||
cached_result_type= args[0]->result_type();
|
cached_result_type= args[0]->result_type();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -2432,7 +2432,7 @@ Item_func_set_user_var::fix_length_and_dec()
|
|||||||
maybe_null=args[0]->maybe_null;
|
maybe_null=args[0]->maybe_null;
|
||||||
max_length=args[0]->max_length;
|
max_length=args[0]->max_length;
|
||||||
decimals=args[0]->decimals;
|
decimals=args[0]->decimals;
|
||||||
collation.set(args[0]->collation);
|
collation.set(args[0]->collation.collation, DERIVATION_IMPLICIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2659,7 +2659,7 @@ Item_func_set_user_var::update()
|
|||||||
res= update_hash((void*) save_result.vstr->ptr(),
|
res= update_hash((void*) save_result.vstr->ptr(),
|
||||||
save_result.vstr->length(), STRING_RESULT,
|
save_result.vstr->length(), STRING_RESULT,
|
||||||
save_result.vstr->charset(),
|
save_result.vstr->charset(),
|
||||||
args[0]->collation.derivation);
|
DERIVATION_IMPLICIT);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case ROW_RESULT:
|
case ROW_RESULT:
|
||||||
|
@ -132,10 +132,16 @@ static int mysql_derived(THD *thd, LEX *lex, SELECT_LEX_UNIT *unit,
|
|||||||
/*
|
/*
|
||||||
Temp table is created so that it hounours if UNION without ALL is to be
|
Temp table is created so that it hounours if UNION without ALL is to be
|
||||||
processed
|
processed
|
||||||
|
|
||||||
|
As 'distinct' parameter we always pass FALSE (0), because underlying
|
||||||
|
query will control distinct condition by itself. Correct test of
|
||||||
|
distinct underlying query will be is_union &&
|
||||||
|
!unit->union_distinct->next_select() (i.e. it is union and last distinct
|
||||||
|
SELECT is last SELECT of UNION).
|
||||||
*/
|
*/
|
||||||
if (!(table= create_tmp_table(thd, &derived_result->tmp_table_param,
|
if (!(table= create_tmp_table(thd, &derived_result->tmp_table_param,
|
||||||
unit->types, (ORDER*) 0,
|
unit->types, (ORDER*) 0,
|
||||||
is_union && unit->union_distinct, 1,
|
FALSE, 1,
|
||||||
(first_select->options | thd->options |
|
(first_select->options | thd->options |
|
||||||
TMP_TABLE_ALL_COLUMNS),
|
TMP_TABLE_ALL_COLUMNS),
|
||||||
HA_POS_ERROR,
|
HA_POS_ERROR,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user