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:
|
Warnings:
|
||||||
Warning 1292 Incorrect datetime value: '0000-00-00 45:44:44'
|
Warning 1292 Incorrect datetime value: '0000-00-00 45:44:44'
|
||||||
drop table t1;
|
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;
|
set @org_mode=@@sql_mode;
|
||||||
create table t1 (da date default '1962-03-03 23:33:34', dt datetime default '1962-03-03');
|
create table t1 (da date default '1962-03-03 23:33:34', dt datetime default '1962-03-03');
|
||||||
Warnings:
|
Warnings:
|
||||||
|
|
|
@ -293,6 +293,19 @@ insert into t1 set f1 = '15:44:44';
|
||||||
select * from t1 where (convert(f1,datetime)) != 1;
|
select * from t1 where (convert(f1,datetime)) != 1;
|
||||||
drop table t1;
|
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
|
# Test of storing datetime into date fields
|
||||||
#
|
#
|
||||||
|
|
|
@ -847,7 +847,9 @@ public:
|
||||||
}
|
}
|
||||||
void fix_length_and_dec()
|
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;
|
decimals= DATETIME_DEC;
|
||||||
}
|
}
|
||||||
bool result_as_longlong() { return TRUE; }
|
bool result_as_longlong() { return TRUE; }
|
||||||
|
|
|
@ -14370,13 +14370,31 @@ calc_group_buffer(JOIN *join,ORDER *group)
|
||||||
group_item->decimals);
|
group_item->decimals);
|
||||||
break;
|
break;
|
||||||
case STRING_RESULT:
|
case STRING_RESULT:
|
||||||
|
{
|
||||||
|
enum enum_field_types type= group_item->field_type();
|
||||||
/*
|
/*
|
||||||
Group strings are taken as varstrings and require an length field.
|
As items represented as DATE/TIME fields in the group buffer
|
||||||
A field is not yet created by create_tmp_field()
|
have STRING_RESULT result type, we increase the length
|
||||||
and the sizes should match up.
|
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;
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
/* This case should never be choosen */
|
/* This case should never be choosen */
|
||||||
DBUG_ASSERT(0);
|
DBUG_ASSERT(0);
|
||||||
|
|
Loading…
Reference in a new issue