Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions mysql-test/r/func_str.result
Original file line number Diff line number Diff line change
Expand Up @@ -673,6 +673,15 @@ latin2_general_ci 4
select collation(replace(_latin2'abcd',_latin2'b',_latin2'B')), coercibility(replace(_latin2'abcd',_latin2'b',_latin2'B'));
collation(replace(_latin2'abcd',_latin2'b',_latin2'B')) coercibility(replace(_latin2'abcd',_latin2'b',_latin2'B'))
latin2_general_ci 4
select collation(greatest(date'2010-01-01', date'2011-01-01'));
collation(greatest(date'2010-01-01', date'2011-01-01'))
binary
select collation(least(date'2010-01-01', date'2011-01-01'));
collation(least(date'2010-01-01', date'2011-01-01'))
binary
select collation(coalesce(null, date'2010-01-01', date'2011-01-01'));
collation(coalesce(null, date'2010-01-01', date'2011-01-01'))
binary
create table t1 charset latin1
select
bin(130),
Expand Down
3 changes: 3 additions & 0 deletions mysql-test/t/func_str.test
Original file line number Diff line number Diff line change
Expand Up @@ -352,6 +352,9 @@ select collation(soundex(_latin2'ab')), coercibility(soundex(_latin2'ab'));
select collation(substring(_latin2'ab',1)), coercibility(substring(_latin2'ab',1));
select collation(insert(_latin2'abcd',2,3,_latin2'ef')), coercibility(insert(_latin2'abcd',2,3,_latin2'ef'));
select collation(replace(_latin2'abcd',_latin2'b',_latin2'B')), coercibility(replace(_latin2'abcd',_latin2'b',_latin2'B'));
select collation(greatest(date'2010-01-01', date'2011-01-01'));
select collation(least(date'2010-01-01', date'2011-01-01'));
select collation(coalesce(null, date'2010-01-01', date'2011-01-01'));

create table t1 charset latin1
select
Expand Down
5 changes: 5 additions & 0 deletions sql/item_func.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1888,6 +1888,11 @@ bool Item_func_numhybrid::get_time(MYSQL_TIME *ltime) {
}
}

const CHARSET_INFO *Item_func_numhybrid::charset_for_protocol() {
if (is_temporal_type(data_type())) return &my_charset_bin;
return Item_func::charset_for_protocol();
}

void Item_typecast_signed::print(const THD *thd, String *str,
enum_query_type query_type) const {
str->append(STRING_WITH_LEN("cast("));
Expand Down
1 change: 1 addition & 0 deletions sql/item_func.h
Original file line number Diff line number Diff line change
Expand Up @@ -909,6 +909,7 @@ class Item_func_numhybrid : public Item_func {
bool resolve_type_inner(THD *thd) override;
void fix_num_length_and_dec() override;
virtual void set_numeric_type() = 0; // To be called from resolve_type()
const CHARSET_INFO *charset_for_protocol() override;

double val_real() override;
longlong val_int() override;
Expand Down