Bug#13233
select distinct char(column) fails with utf8 ctype_utf8.result, ctype_utf8.test: Adding test case sql_yacc.yy: Adding new syntax. item_strfunc.h: Fixing wrong max_length calculation. Also, adding CHAR(x USING charset), for easier migrating from 4.1 to 5.0, according to Monty's suggestion. sql/item_strfunc.h: Bug#13233 select distinct char(column) fails with utf8 Also, adding CHAR(x USING charset), for easier migrating from 4.1 to 5.0. sql/sql_yacc.yy: Adding new syntax. mysql-test/t/ctype_utf8.test: Adding test case mysql-test/r/ctype_utf8.result: Adding test case
This commit is contained in:
parent
571d9cdd0b
commit
c9978d8bcb
@ -1061,3 +1061,12 @@ create table t1 (a varchar(255)) default charset=utf8;
|
|||||||
select * from t1 where find_in_set('-1', a);
|
select * from t1 where find_in_set('-1', a);
|
||||||
a
|
a
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1 (a int);
|
||||||
|
insert into t1 values (48),(49),(50);
|
||||||
|
set names utf8;
|
||||||
|
select distinct char(a) from t1;
|
||||||
|
char(a)
|
||||||
|
0
|
||||||
|
1
|
||||||
|
2
|
||||||
|
drop table t1;
|
||||||
|
@ -873,4 +873,13 @@ create table t1 (a varchar(255)) default charset=utf8;
|
|||||||
select * from t1 where find_in_set('-1', a);
|
select * from t1 where find_in_set('-1', a);
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#13233: select distinct char(column) fails with utf8
|
||||||
|
#
|
||||||
|
create table t1 (a int);
|
||||||
|
insert into t1 values (48),(49),(50);
|
||||||
|
set names utf8;
|
||||||
|
select distinct char(a) from t1;
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
# End of 4.1 tests
|
# End of 4.1 tests
|
||||||
|
@ -444,12 +444,15 @@ public:
|
|||||||
class Item_func_char :public Item_str_func
|
class Item_func_char :public Item_str_func
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Item_func_char(List<Item> &list) :Item_str_func(list) {}
|
Item_func_char(List<Item> &list) :Item_str_func(list)
|
||||||
|
{ collation.set(default_charset()); }
|
||||||
|
Item_func_char(List<Item> &list, CHARSET_INFO *cs) :Item_str_func(list)
|
||||||
|
{ collation.set(cs); }
|
||||||
String *val_str(String *);
|
String *val_str(String *);
|
||||||
void fix_length_and_dec()
|
void fix_length_and_dec()
|
||||||
{
|
{
|
||||||
collation.set(default_charset());
|
maybe_null=0;
|
||||||
maybe_null=0; max_length=arg_count;
|
max_length=arg_count * collation.collation->mbmaxlen;
|
||||||
}
|
}
|
||||||
const char *func_name() const { return "char"; }
|
const char *func_name() const { return "char"; }
|
||||||
};
|
};
|
||||||
|
@ -2924,6 +2924,8 @@ simple_expr:
|
|||||||
{ $$= new Item_func_atan($3,$5); }
|
{ $$= new Item_func_atan($3,$5); }
|
||||||
| CHAR_SYM '(' expr_list ')'
|
| CHAR_SYM '(' expr_list ')'
|
||||||
{ $$= new Item_func_char(*$3); }
|
{ $$= new Item_func_char(*$3); }
|
||||||
|
| CHAR_SYM '(' expr_list USING charset_name ')'
|
||||||
|
{ $$= new Item_func_char(*$3, $5); }
|
||||||
| CHARSET '(' expr ')'
|
| CHARSET '(' expr ')'
|
||||||
{ $$= new Item_func_charset($3); }
|
{ $$= new Item_func_charset($3); }
|
||||||
| COALESCE '(' expr_list ')'
|
| COALESCE '(' expr_list ')'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user