Commit f8869919 authored by Sergey Glukhov's avatar Sergey Glukhov

5.1 -> 5.5 merge

parents db63b0b7 60cc2f91
...@@ -1746,6 +1746,17 @@ MAX(LENGTH(a)) LENGTH(MAX(a)) MIN(a) MAX(a) CONCAT(MIN(a)) CONCAT(MAX(a)) ...@@ -1746,6 +1746,17 @@ MAX(LENGTH(a)) LENGTH(MAX(a)) MIN(a) MAX(a) CONCAT(MIN(a)) CONCAT(MAX(a))
20 20 18446668621106209655 18446668621106209655 18446668621106209655 18446668621106209655 20 20 18446668621106209655 18446668621106209655 18446668621106209655 18446668621106209655
DROP TABLE t1; DROP TABLE t1;
# #
# Bug #11766270 59343: YEAR(4): INCORRECT RESULT AND VALGRIND WARNINGS WITH MIN/MAX, UNION
#
CREATE TABLE t1(f1 YEAR(4));
INSERT INTO t1 VALUES (0000),(2001);
(SELECT MAX(f1) FROM t1) UNION (SELECT MAX(f1) FROM t1);
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def MAX(f1) MAX(f1) 13 4 4 Y 32864 0 63
MAX(f1)
2001
DROP TABLE t1;
#
End of 5.1 tests End of 5.1 tests
# #
# Bug#52123 Assertion failed: aggregator == aggr->Aggrtype(), # Bug#52123 Assertion failed: aggregator == aggr->Aggrtype(),
......
...@@ -770,4 +770,10 @@ CASE a WHEN a THEN a END ...@@ -770,4 +770,10 @@ CASE a WHEN a THEN a END
NULL NULL
DROP TABLE t1; DROP TABLE t1;
# #
# Bug #11766212 59270: NOT IN (YEAR( ... ), ... ) PRODUCES MANY VALGRIND WARNINGS
#
SELECT 1 IN (YEAR(FROM_UNIXTIME(NULL)) ,1);
1 IN (YEAR(FROM_UNIXTIME(NULL)) ,1)
1
#
End of 5.1 tests End of 5.1 tests
...@@ -1127,6 +1127,18 @@ INSERT INTO t1 VALUES (18446668621106209655); ...@@ -1127,6 +1127,18 @@ INSERT INTO t1 VALUES (18446668621106209655);
SELECT MAX(LENGTH(a)), LENGTH(MAX(a)), MIN(a), MAX(a), CONCAT(MIN(a)), CONCAT(MAX(a)) FROM t1; SELECT MAX(LENGTH(a)), LENGTH(MAX(a)), MIN(a), MAX(a), CONCAT(MIN(a)), CONCAT(MAX(a)) FROM t1;
DROP TABLE t1; DROP TABLE t1;
--echo #
--echo # Bug #11766270 59343: YEAR(4): INCORRECT RESULT AND VALGRIND WARNINGS WITH MIN/MAX, UNION
--echo #
CREATE TABLE t1(f1 YEAR(4));
INSERT INTO t1 VALUES (0000),(2001);
--enable_metadata
(SELECT MAX(f1) FROM t1) UNION (SELECT MAX(f1) FROM t1);
--disable_metadata
DROP TABLE t1;
--echo # --echo #
--echo End of 5.1 tests --echo End of 5.1 tests
......
...@@ -554,6 +554,12 @@ SELECT CASE a WHEN a THEN a END FROM t1 GROUP BY a WITH ROLLUP; ...@@ -554,6 +554,12 @@ SELECT CASE a WHEN a THEN a END FROM t1 GROUP BY a WITH ROLLUP;
DROP TABLE t1; DROP TABLE t1;
--echo #
--echo # Bug #11766212 59270: NOT IN (YEAR( ... ), ... ) PRODUCES MANY VALGRIND WARNINGS
--echo #
SELECT 1 IN (YEAR(FROM_UNIXTIME(NULL)) ,1);
--echo # --echo #
--echo End of 5.1 tests --echo End of 5.1 tests
...@@ -5382,6 +5382,7 @@ double Field_year::val_real(void) ...@@ -5382,6 +5382,7 @@ double Field_year::val_real(void)
longlong Field_year::val_int(void) longlong Field_year::val_int(void)
{ {
ASSERT_COLUMN_MARKED_FOR_READ; ASSERT_COLUMN_MARKED_FOR_READ;
DBUG_ASSERT(field_length == 2 || field_length == 4);
int tmp= (int) ptr[0]; int tmp= (int) ptr[0];
if (field_length != 4) if (field_length != 4)
tmp%=100; // Return last 2 char tmp%=100; // Return last 2 char
...@@ -5394,6 +5395,7 @@ longlong Field_year::val_int(void) ...@@ -5394,6 +5395,7 @@ longlong Field_year::val_int(void)
String *Field_year::val_str(String *val_buffer, String *Field_year::val_str(String *val_buffer,
String *val_ptr __attribute__((unused))) String *val_ptr __attribute__((unused)))
{ {
DBUG_ASSERT(field_length < 5);
val_buffer->alloc(5); val_buffer->alloc(5);
val_buffer->length(field_length); val_buffer->length(field_length);
char *to=(char*) val_buffer->ptr(); char *to=(char*) val_buffer->ptr();
......
...@@ -4068,12 +4068,10 @@ void Item_func_in::fix_length_and_dec() ...@@ -4068,12 +4068,10 @@ void Item_func_in::fix_length_and_dec()
{ {
uint j=0; uint j=0;
for (uint i=1 ; i < arg_count ; i++) for (uint i=1 ; i < arg_count ; i++)
{
if (!args[i]->null_value) // Skip NULL values
{ {
array->set(j,args[i]); array->set(j,args[i]);
if (!args[i]->null_value) // Skip NULL values
j++; j++;
}
else else
have_null= 1; have_null= 1;
} }
......
...@@ -1145,17 +1145,13 @@ Item_sum_hybrid::fix_fields(THD *thd, Item **ref) ...@@ -1145,17 +1145,13 @@ Item_sum_hybrid::fix_fields(THD *thd, Item **ref)
switch (hybrid_type= item->result_type()) { switch (hybrid_type= item->result_type()) {
case INT_RESULT: case INT_RESULT:
max_length= 20;
break;
case DECIMAL_RESULT: case DECIMAL_RESULT:
case STRING_RESULT:
max_length= item->max_length; max_length= item->max_length;
break; break;
case REAL_RESULT: case REAL_RESULT:
max_length= float_length(decimals); max_length= float_length(decimals);
break; break;
case STRING_RESULT:
max_length= item->max_length;
break;
case ROW_RESULT: case ROW_RESULT:
default: default:
DBUG_ASSERT(0); DBUG_ASSERT(0);
......
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