Merge 5.3 -> 5.5
This commit is contained in:
commit
0ad8eaeb56
@ -2375,6 +2375,30 @@ SELECT EXTRACT(DAY FROM TIME('1 02:00:00')), EXTRACT(DAY FROM TIME('26:00:00'));
|
|||||||
EXTRACT(DAY FROM TIME('1 02:00:00')) EXTRACT(DAY FROM TIME('26:00:00'))
|
EXTRACT(DAY FROM TIME('1 02:00:00')) EXTRACT(DAY FROM TIME('26:00:00'))
|
||||||
1 1
|
1 1
|
||||||
#
|
#
|
||||||
|
# MDEV-5458 RQG hits 'sql/tztime.cc:799: my_time_t sec_since_epoch(int, int, int, int, int, int): Assertion `mon > 0 && mon < 13' failed.'
|
||||||
|
#
|
||||||
|
SET TIMESTAMP=UNIX_TIMESTAMP('2014-01-22 18:19:20');
|
||||||
|
CREATE TABLE t1 (t TIME);
|
||||||
|
INSERT INTO t1 VALUES ('03:22:30'),('18:30:05');
|
||||||
|
SELECT CONVERT_TZ(GREATEST(t, CURRENT_DATE()), '+02:00', '+10:00') FROM t1;
|
||||||
|
CONVERT_TZ(GREATEST(t, CURRENT_DATE()), '+02:00', '+10:00')
|
||||||
|
NULL
|
||||||
|
NULL
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Truncated incorrect time value: '1296:00:00'
|
||||||
|
Warning 1292 Incorrect datetime value: '838:59:59'
|
||||||
|
Warning 1292 Truncated incorrect time value: '1296:00:00'
|
||||||
|
Warning 1292 Incorrect datetime value: '838:59:59'
|
||||||
|
SELECT GREATEST(t, CURRENT_DATE()) FROM t1;
|
||||||
|
GREATEST(t, CURRENT_DATE())
|
||||||
|
838:59:59
|
||||||
|
838:59:59
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Truncated incorrect time value: '1296:00:00'
|
||||||
|
Warning 1292 Truncated incorrect time value: '1296:00:00'
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET TIMESTAMP=DEFAULT;
|
||||||
|
#
|
||||||
# MDEV-5504 Server crashes in String::length on SELECT with MONTHNAME, GROUP BY, ROLLUP
|
# MDEV-5504 Server crashes in String::length on SELECT with MONTHNAME, GROUP BY, ROLLUP
|
||||||
#
|
#
|
||||||
CREATE TABLE t1 (i INT);
|
CREATE TABLE t1 (i INT);
|
||||||
|
@ -309,7 +309,7 @@ SELECT CONVERT_TZ(GREATEST(DATE('2021-00-00'),DATE('2022-00-00')),'+00:00','+7:5
|
|||||||
CONVERT_TZ(GREATEST(DATE('2021-00-00'),DATE('2022-00-00')),'+00:00','+7:5')
|
CONVERT_TZ(GREATEST(DATE('2021-00-00'),DATE('2022-00-00')),'+00:00','+7:5')
|
||||||
NULL
|
NULL
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1292 Incorrect datetime value: '2022-00-00 00:00:00'
|
Warning 1292 Incorrect datetime value: '2022-00-00'
|
||||||
#
|
#
|
||||||
# MDEV-4804 Date comparing false result
|
# MDEV-4804 Date comparing false result
|
||||||
#
|
#
|
||||||
|
@ -181,7 +181,7 @@ SELECT CONVERT_TZ(GREATEST(TIME('00:00:00'),TIME('00:00:00')),'+00:00','+7:5');
|
|||||||
CONVERT_TZ(GREATEST(TIME('00:00:00'),TIME('00:00:00')),'+00:00','+7:5')
|
CONVERT_TZ(GREATEST(TIME('00:00:00'),TIME('00:00:00')),'+00:00','+7:5')
|
||||||
NULL
|
NULL
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1292 Incorrect datetime value: '0000-00-00 00:00:00'
|
Warning 1292 Incorrect datetime value: '00:00:00'
|
||||||
#
|
#
|
||||||
# MDEV-4652 Wrong result for CONCAT(GREATEST(TIME('00:00:01'),TIME('00:00:00')))
|
# MDEV-4652 Wrong result for CONCAT(GREATEST(TIME('00:00:01'),TIME('00:00:00')))
|
||||||
#
|
#
|
||||||
|
@ -1448,6 +1448,17 @@ SELECT EXTRACT(HOUR FROM TIME'1 02:00:00'), EXTRACT(HOUR FROM TIME'26:00:00');
|
|||||||
SELECT EXTRACT(HOUR FROM TIME('1 02:00:00')), EXTRACT(HOUR FROM TIME('26:00:00'));
|
SELECT EXTRACT(HOUR FROM TIME('1 02:00:00')), EXTRACT(HOUR FROM TIME('26:00:00'));
|
||||||
SELECT EXTRACT(DAY FROM TIME('1 02:00:00')), EXTRACT(DAY FROM TIME('26:00:00'));
|
SELECT EXTRACT(DAY FROM TIME('1 02:00:00')), EXTRACT(DAY FROM TIME('26:00:00'));
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-5458 RQG hits 'sql/tztime.cc:799: my_time_t sec_since_epoch(int, int, int, int, int, int): Assertion `mon > 0 && mon < 13' failed.'
|
||||||
|
--echo #
|
||||||
|
SET TIMESTAMP=UNIX_TIMESTAMP('2014-01-22 18:19:20');
|
||||||
|
CREATE TABLE t1 (t TIME);
|
||||||
|
INSERT INTO t1 VALUES ('03:22:30'),('18:30:05');
|
||||||
|
SELECT CONVERT_TZ(GREATEST(t, CURRENT_DATE()), '+02:00', '+10:00') FROM t1;
|
||||||
|
SELECT GREATEST(t, CURRENT_DATE()) FROM t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET TIMESTAMP=DEFAULT;
|
||||||
|
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # MDEV-5504 Server crashes in String::length on SELECT with MONTHNAME, GROUP BY, ROLLUP
|
--echo # MDEV-5504 Server crashes in String::length on SELECT with MONTHNAME, GROUP BY, ROLLUP
|
||||||
|
@ -2947,11 +2947,6 @@ bool Item_func_min_max::get_date(MYSQL_TIME *ltime, ulonglong fuzzy_date)
|
|||||||
}
|
}
|
||||||
unpack_time(min_max, ltime);
|
unpack_time(min_max, ltime);
|
||||||
|
|
||||||
if (!(fuzzy_date & TIME_TIME_ONLY) &&
|
|
||||||
((null_value= check_date_with_warn(ltime, fuzzy_date,
|
|
||||||
MYSQL_TIMESTAMP_ERROR))))
|
|
||||||
return true;
|
|
||||||
|
|
||||||
if (compare_as_dates->field_type() == MYSQL_TYPE_DATE)
|
if (compare_as_dates->field_type() == MYSQL_TYPE_DATE)
|
||||||
{
|
{
|
||||||
ltime->time_type= MYSQL_TIMESTAMP_DATE;
|
ltime->time_type= MYSQL_TIMESTAMP_DATE;
|
||||||
@ -2962,8 +2957,15 @@ bool Item_func_min_max::get_date(MYSQL_TIME *ltime, ulonglong fuzzy_date)
|
|||||||
ltime->time_type= MYSQL_TIMESTAMP_TIME;
|
ltime->time_type= MYSQL_TIMESTAMP_TIME;
|
||||||
ltime->hour+= (ltime->month * 32 + ltime->day) * 24;
|
ltime->hour+= (ltime->month * 32 + ltime->day) * 24;
|
||||||
ltime->month= ltime->day= 0;
|
ltime->month= ltime->day= 0;
|
||||||
|
if (adjust_time_range_with_warn(ltime,
|
||||||
|
min(decimals, TIME_SECOND_PART_DIGITS)))
|
||||||
|
return (null_value= true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!(fuzzy_date & TIME_TIME_ONLY) &&
|
||||||
|
((null_value= check_date_with_warn(ltime, fuzzy_date,
|
||||||
|
MYSQL_TIMESTAMP_ERROR))))
|
||||||
|
return true;
|
||||||
|
|
||||||
return (null_value= 0);
|
return (null_value= 0);
|
||||||
}
|
}
|
||||||
|
@ -2574,7 +2574,7 @@ bool Item_func_add_time::get_date(MYSQL_TIME *ltime, ulonglong fuzzy_date)
|
|||||||
bool is_time= 0;
|
bool is_time= 0;
|
||||||
long days, microseconds;
|
long days, microseconds;
|
||||||
longlong seconds;
|
longlong seconds;
|
||||||
int l_sign= sign, was_cut= 0;
|
int l_sign= sign;
|
||||||
|
|
||||||
if (is_date) // TIMESTAMP function
|
if (is_date) // TIMESTAMP function
|
||||||
{
|
{
|
||||||
@ -2625,16 +2625,7 @@ bool Item_func_add_time::get_date(MYSQL_TIME *ltime, ulonglong fuzzy_date)
|
|||||||
}
|
}
|
||||||
|
|
||||||
ltime->hour+= days*24;
|
ltime->hour+= days*24;
|
||||||
|
return (null_value= adjust_time_range_with_warn(ltime, decimals));
|
||||||
MYSQL_TIME copy= *ltime;
|
|
||||||
ErrConvTime str(©);
|
|
||||||
|
|
||||||
check_time_range(ltime, decimals, &was_cut);
|
|
||||||
if (was_cut)
|
|
||||||
make_truncated_value_warning(current_thd, MYSQL_ERROR::WARN_LEVEL_WARN,
|
|
||||||
&str, MYSQL_TIMESTAMP_TIME, NullS);
|
|
||||||
|
|
||||||
return (null_value= 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2672,7 +2663,7 @@ bool Item_func_timediff::get_date(MYSQL_TIME *ltime, ulonglong fuzzy_date)
|
|||||||
DBUG_ASSERT(fixed == 1);
|
DBUG_ASSERT(fixed == 1);
|
||||||
longlong seconds;
|
longlong seconds;
|
||||||
long microseconds;
|
long microseconds;
|
||||||
int l_sign= 1, was_cut= 0;
|
int l_sign= 1;
|
||||||
MYSQL_TIME l_time1,l_time2,l_time3;
|
MYSQL_TIME l_time1,l_time2,l_time3;
|
||||||
ErrConvTime str(&l_time3);
|
ErrConvTime str(&l_time3);
|
||||||
|
|
||||||
@ -2716,12 +2707,8 @@ bool Item_func_timediff::get_date(MYSQL_TIME *ltime, ulonglong fuzzy_date)
|
|||||||
return (null_value= 1);
|
return (null_value= 1);
|
||||||
|
|
||||||
*ltime= l_time3;
|
*ltime= l_time3;
|
||||||
check_time_range(ltime, decimals, &was_cut);
|
return (null_value= adjust_time_range_with_warn(ltime, decimals));
|
||||||
|
|
||||||
if (was_cut)
|
|
||||||
make_truncated_value_warning(current_thd, MYSQL_ERROR::WARN_LEVEL_WARN,
|
|
||||||
&str, MYSQL_TIMESTAMP_TIME, NullS);
|
|
||||||
return (null_value= 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -230,6 +230,20 @@ check_date_with_warn(const MYSQL_TIME *ltime, ulonglong fuzzy_date,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool
|
||||||
|
adjust_time_range_with_warn(MYSQL_TIME *ltime, uint dec)
|
||||||
|
{
|
||||||
|
MYSQL_TIME copy= *ltime;
|
||||||
|
ErrConvTime str(©);
|
||||||
|
int warnings= 0;
|
||||||
|
if (check_time_range(ltime, dec, &warnings))
|
||||||
|
return true;
|
||||||
|
if (warnings)
|
||||||
|
make_truncated_value_warning(current_thd, MYSQL_ERROR::WARN_LEVEL_WARN,
|
||||||
|
&str, MYSQL_TIMESTAMP_TIME, NullS);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Convert a string to 8-bit representation,
|
Convert a string to 8-bit representation,
|
||||||
for use in str_to_time/str_to_date/str_to_date.
|
for use in str_to_time/str_to_date/str_to_date.
|
||||||
|
@ -124,5 +124,6 @@ check_date(const MYSQL_TIME *ltime, ulonglong flags, int *was_cut)
|
|||||||
}
|
}
|
||||||
bool check_date_with_warn(const MYSQL_TIME *ltime, ulonglong fuzzy_date,
|
bool check_date_with_warn(const MYSQL_TIME *ltime, ulonglong fuzzy_date,
|
||||||
timestamp_type ts_type);
|
timestamp_type ts_type);
|
||||||
|
bool adjust_time_range_with_warn(MYSQL_TIME *ltime, uint dec);
|
||||||
|
|
||||||
#endif /* SQL_TIME_INCLUDED */
|
#endif /* SQL_TIME_INCLUDED */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user