mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 12:32:27 +01:00
Merge mysql.com:/home/ram/work/b31249/b31249.5.0
into mysql.com:/home/ram/work/b31249/b31249.5.1 sql/item_timefunc.h: Auto merged sql/sql_select.cc: Auto merged mysql-test/r/type_datetime.result: manual merge. mysql-test/t/type_datetime.test: manual merge.
This commit is contained in:
commit
12fd56a9da
4 changed files with 52 additions and 5 deletions
|
@ -436,6 +436,20 @@ f1
|
|||
Warnings:
|
||||
Warning 1292 Incorrect datetime value: '0000-00-00 45:44:44'
|
||||
drop table t1;
|
||||
create table t1 (a tinyint);
|
||||
insert into t1 values (), (), ();
|
||||
select sum(a) from t1 group by convert(a, datetime);
|
||||
sum(a)
|
||||
NULL
|
||||
select convert(a, datetime) from t1;
|
||||
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||
def convert(a, datetime) 12 29 0 Y 128 6 63
|
||||
convert(a, datetime)
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
drop table t1;
|
||||
End of 5.0 tests
|
||||
set @org_mode=@@sql_mode;
|
||||
create table t1 (da date default '1962-03-03 23:33:34', dt datetime default '1962-03-03');
|
||||
Warnings:
|
||||
|
|
|
@ -293,6 +293,19 @@ insert into t1 set f1 = '15:44:44';
|
|||
select * from t1 where (convert(f1,datetime)) != 1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #31249: problem with convert(..., datetime)
|
||||
#
|
||||
create table t1 (a tinyint);
|
||||
insert into t1 values (), (), ();
|
||||
select sum(a) from t1 group by convert(a, datetime);
|
||||
--enable_metadata
|
||||
select convert(a, datetime) from t1;
|
||||
--disable_metadata
|
||||
drop table t1;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
||||
#
|
||||
# Test of storing datetime into date fields
|
||||
#
|
||||
|
|
|
@ -847,7 +847,9 @@ public:
|
|||
}
|
||||
void fix_length_and_dec()
|
||||
{
|
||||
Item_typecast_maybe_null::fix_length_and_dec();
|
||||
collation.set(&my_charset_bin);
|
||||
maybe_null= 1;
|
||||
max_length= MAX_DATETIME_FULL_WIDTH * MY_CHARSET_BIN_MB_MAXLEN;
|
||||
decimals= DATETIME_DEC;
|
||||
}
|
||||
bool result_as_longlong() { return TRUE; }
|
||||
|
|
|
@ -14370,13 +14370,31 @@ calc_group_buffer(JOIN *join,ORDER *group)
|
|||
group_item->decimals);
|
||||
break;
|
||||
case STRING_RESULT:
|
||||
{
|
||||
enum enum_field_types type= group_item->field_type();
|
||||
/*
|
||||
Group strings are taken as varstrings and require an length field.
|
||||
A field is not yet created by create_tmp_field()
|
||||
and the sizes should match up.
|
||||
As items represented as DATE/TIME fields in the group buffer
|
||||
have STRING_RESULT result type, we increase the length
|
||||
by 8 as maximum pack length of such fields.
|
||||
*/
|
||||
key_length+= group_item->max_length + HA_KEY_BLOB_LENGTH;
|
||||
if (type == MYSQL_TYPE_TIME ||
|
||||
type == MYSQL_TYPE_DATE ||
|
||||
type == MYSQL_TYPE_DATETIME ||
|
||||
type == MYSQL_TYPE_TIMESTAMP)
|
||||
{
|
||||
key_length+= 8;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
Group strings are taken as varstrings and require an length field.
|
||||
A field is not yet created by create_tmp_field()
|
||||
and the sizes should match up.
|
||||
*/
|
||||
key_length+= group_item->max_length + HA_KEY_BLOB_LENGTH;
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
/* This case should never be choosen */
|
||||
DBUG_ASSERT(0);
|
||||
|
|
Loading…
Reference in a new issue