Commit 5805bba6 authored by unknown's avatar unknown
Browse files

Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0

into moonbone.local:/work/tmp_merge-5.0-opt-mysql

parents 783866ff b6a416ff
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -686,3 +686,7 @@ ERROR 42S22: Unknown column 'z' in 'field list'
insert into t1(x,y) select x,z from t2 on duplicate key update x=values(t2.x);
ERROR 42S22: Unknown column 't2.x' in 'field list'
drop table t1,t2;
CREATE TABLE t1 (a int PRIMARY KEY);
INSERT INTO t1 values (1), (2);
INSERT INTO t1 SELECT a + 2 FROM t1 LIMIT 1;
DROP TABLE t1;
+6 −0
Original line number Diff line number Diff line
@@ -3389,3 +3389,9 @@ a t1.b + 0 t1.c + 0 a t2.b + 0 c d
1	0	1	1	0	1	NULL
2	0	1	NULL	NULL	NULL	NULL
drop table t1,t2;
CREATE TABLE t1 (i BIGINT UNSIGNED NOT NULL);
INSERT INTO t1 VALUES (10);
SELECT i='1e+01',i=1e+01, i in (1e+01), i in ('1e+01') FROM t1;
i='1e+01'	i=1e+01	i in (1e+01)	i in ('1e+01')
0	1	1	1
DROP TABLE t1;
+13 −0
Original line number Diff line number Diff line
@@ -224,4 +224,17 @@ insert into t1(x,y) select x,z from t2 on duplicate key update x=values(z);
insert into t1(x,y) select x,z from t2 on duplicate key update x=values(t2.x);
drop table t1,t2; 

#
# Bug #9676: INSERT INTO x SELECT .. FROM x LIMIT 1; slows down with big 
#             tables
#

#Note: not an exsaustive test : just a check of the code path.
CREATE TABLE t1 (a int PRIMARY KEY);
INSERT INTO t1 values (1), (2);

INSERT INTO t1 SELECT a + 2 FROM t1 LIMIT 1;

DROP TABLE t1;

# End of 4.1 tests
+19 −0
Original line number Diff line number Diff line
@@ -2285,6 +2285,25 @@ EXPLAIN SELECT * FROM t1 FORCE INDEX (a);

DROP TABLE t1;

#
# Bug #18759 "Incorrect string to numeric conversion"
#
# This test is here so that the behavior will not be changed to 4.1
# and not to 5.0 either. In 4.1 and 5.0 sending an integer as a string
# will be converted internally to real (double) value and it is not
# as accurate as bigint (longlong) for integers. Thus the results may
# vary. In 5.1 internally it is decimal, which is a string type and
# will be more accurate. Due to rather big changes needed to fix this
# in 4.1 or 5.0 it is not desired to do it in the stable versions.
#
# This test is here only to make sure that behavior is not changed in
# 4.1 and 5.0
#
CREATE TABLE t1 (i BIGINT UNSIGNED NOT NULL);
INSERT INTO t1 VALUES (10);
SELECT i='1e+01',i=1e+01, i in (1e+01), i in ('1e+01') FROM t1;
DROP TABLE t1;

# End of 4.1 tests

#
+2 −1
Original line number Diff line number Diff line
@@ -138,7 +138,8 @@ static void agg_cmp_type(THD *thd, Item_result *type, Item **items, uint nitems)
      }
      continue;
    }
    if ((res= items[i]->real_item()->type()) == Item::FIELD_ITEM)
    if ((res= items[i]->real_item()->type()) == Item::FIELD_ITEM &&
        items[i]->result_type() != INT_RESULT)
    {
      field= ((Item_field *)items[i]->real_item())->field;
      break;
Loading