Commit c6325cb0 authored by unknown's avatar unknown

Merge kboortz@bk-internal.mysql.com:/home/bk/mysql-5.0

into mysql.com:/Users/kent/mysql/bk/mysql-5.0-new
parents e345f28b c258358f
...@@ -512,3 +512,24 @@ id IFNULL(dsc, '-') ...@@ -512,3 +512,24 @@ id IFNULL(dsc, '-')
2 line number two 2 line number two
3 line number three 3 line number three
drop table t1; drop table t1;
CREATE TABLE t1 (
ID int(11) NOT NULL auto_increment,
x varchar(20) default NULL,
y decimal(10,0) default NULL,
PRIMARY KEY (ID),
KEY (y)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO t1 VALUES
(1,'ba','-1'),
(2,'ba','1150'),
(306,'ba','-1'),
(307,'ba','1150'),
(611,'ba','-1'),
(612,'ba','1150');
select count(distinct x,y) from t1;
count(distinct x,y)
2
select count(distinct concat(x,y)) from t1;
count(distinct concat(x,y))
2
drop table t1;
...@@ -358,3 +358,27 @@ select distinct id, IFNULL(dsc, '-') from t1; ...@@ -358,3 +358,27 @@ select distinct id, IFNULL(dsc, '-') from t1;
drop table t1; drop table t1;
# End of 4.1 tests # End of 4.1 tests
#
# Bug #15745 ( COUNT(DISTINCT CONCAT(x,y)) returns wrong result)
#
CREATE TABLE t1 (
ID int(11) NOT NULL auto_increment,
x varchar(20) default NULL,
y decimal(10,0) default NULL,
PRIMARY KEY (ID),
KEY (y)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO t1 VALUES
(1,'ba','-1'),
(2,'ba','1150'),
(306,'ba','-1'),
(307,'ba','1150'),
(611,'ba','-1'),
(612,'ba','1150');
select count(distinct x,y) from t1;
select count(distinct concat(x,y)) from t1;
drop table t1;
...@@ -2541,9 +2541,9 @@ bool Item_sum_count_distinct::setup(THD *thd) ...@@ -2541,9 +2541,9 @@ bool Item_sum_count_distinct::setup(THD *thd)
Field *f= *field; Field *f= *field;
enum enum_field_types type= f->type(); enum enum_field_types type= f->type();
tree_key_length+= f->pack_length(); tree_key_length+= f->pack_length();
if (!f->binary() && (type == MYSQL_TYPE_STRING || if ((type == MYSQL_TYPE_VARCHAR) ||
type == MYSQL_TYPE_VAR_STRING || !f->binary() && (type == MYSQL_TYPE_STRING ||
type == MYSQL_TYPE_VARCHAR)) type == MYSQL_TYPE_VAR_STRING))
{ {
all_binary= FALSE; all_binary= FALSE;
break; break;
......
...@@ -223,7 +223,7 @@ static int find_keyword(LEX *lex, uint len, bool function) ...@@ -223,7 +223,7 @@ static int find_keyword(LEX *lex, uint len, bool function)
SYNOPSIS SYNOPSIS
is_keyword() is_keyword()
name checked name name checked name (must not be empty)
len length of checked name len length of checked name
RETURN VALUES RETURN VALUES
...@@ -233,6 +233,7 @@ static int find_keyword(LEX *lex, uint len, bool function) ...@@ -233,6 +233,7 @@ static int find_keyword(LEX *lex, uint len, bool function)
bool is_keyword(const char *name, uint len) bool is_keyword(const char *name, uint len)
{ {
DBUG_ASSERT(len != 0);
return get_hash_symbol(name,len,0)!=0; return get_hash_symbol(name,len,0)!=0;
} }
......
...@@ -713,7 +713,8 @@ append_identifier(THD *thd, String *packet, const char *name, uint length) ...@@ -713,7 +713,8 @@ append_identifier(THD *thd, String *packet, const char *name, uint length)
int get_quote_char_for_identifier(THD *thd, const char *name, uint length) int get_quote_char_for_identifier(THD *thd, const char *name, uint length)
{ {
if (!is_keyword(name,length) && if (!length ||
!is_keyword(name,length) &&
!require_quotes(name, length) && !require_quotes(name, length) &&
!(thd->options & OPTION_QUOTE_SHOW_CREATE)) !(thd->options & OPTION_QUOTE_SHOW_CREATE))
return EOF; return EOF;
......
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