Loading mysql-test/r/insert_select.result +4 −0 Original line number Diff line number Diff line Loading @@ -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 42S02: Unknown table 't2' 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; mysql-test/r/select.result +6 −0 Original line number Diff line number Diff line Loading @@ -2738,3 +2738,9 @@ ERROR HY000: Key 'a' doesn't exist in table 't1' EXPLAIN SELECT * FROM t1 FORCE INDEX (a); ERROR HY000: Key 'a' doesn't exist in table 't1' DROP TABLE t1; 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; mysql-test/t/insert_select.test +13 −0 Original line number Diff line number Diff line Loading @@ -226,4 +226,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 mysql-test/t/select.test +19 −0 Original line number Diff line number Diff line Loading @@ -2278,4 +2278,23 @@ 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 sql/item_cmpfunc.cc +2 −1 Original line number Diff line number Diff line Loading @@ -136,7 +136,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 Loading
mysql-test/r/insert_select.result +4 −0 Original line number Diff line number Diff line Loading @@ -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 42S02: Unknown table 't2' 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;
mysql-test/r/select.result +6 −0 Original line number Diff line number Diff line Loading @@ -2738,3 +2738,9 @@ ERROR HY000: Key 'a' doesn't exist in table 't1' EXPLAIN SELECT * FROM t1 FORCE INDEX (a); ERROR HY000: Key 'a' doesn't exist in table 't1' DROP TABLE t1; 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;
mysql-test/t/insert_select.test +13 −0 Original line number Diff line number Diff line Loading @@ -226,4 +226,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
mysql-test/t/select.test +19 −0 Original line number Diff line number Diff line Loading @@ -2278,4 +2278,23 @@ 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
sql/item_cmpfunc.cc +2 −1 Original line number Diff line number Diff line Loading @@ -136,7 +136,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