2681 Gleb Shchepa 2008-09-03 [merge]
merge with local tree
modified:
mysql-test/r/default.result
mysql-test/t/default.test
sql/item.cc
2680 Georgi Kodinov 2008-08-28 [merge]
merge 5.0-main -> 5.0-bugteam
=== modified file 'mysql-test/r/default.result'
--- a/mysql-test/r/default.result 2007-09-20 08:54:46 +0000
+++ b/mysql-test/r/default.result 2008-09-03 07:32:43 +0000
@@ -205,4 +205,19 @@ Warnings:
Warning 1364 Field 'id' doesn't have a default value
drop view v1;
drop table t1;
+create table t1 (a int unique);
+create table t2 (b int default 10);
+insert into t1 (a) values (1);
+insert into t2 (b) values (1);
+insert into t1 (a) select b from t2 on duplicate key update a=default;
+select * from t1;
+a
+NULL
+insert into t1 (a) values (1);
+insert into t1 (a) select b from t2 on duplicate key update a=default(b);
+select * from t1;
+a
+NULL
+10
+drop table t1, t2;
End of 5.0 tests.
=== modified file 'mysql-test/t/default.test'
--- a/mysql-test/t/default.test 2007-02-12 11:41:36 +0000
+++ b/mysql-test/t/default.test 2008-09-03 07:32:43 +0000
@@ -145,5 +145,24 @@ insert into t1 values(default);
drop view v1;
drop table t1;
+#
+# Bug #39002: crash with
+# INSERT ... SELECT ... ON DUPLICATE KEY UPDATE col=DEFAULT
+#
+
+create table t1 (a int unique);
+create table t2 (b int default 10);
+insert into t1 (a) values (1);
+insert into t2 (b) values (1);
+
+insert into t1 (a) select b from t2 on duplicate key update a=default;
+select * from t1;
+
+insert into t1 (a) values (1);
+insert into t1 (a) select b from t2 on duplicate key update a=default(b);
+select * from t1;
+
+drop table t1, t2;
+
--echo End of 5.0 tests.
=== modified file 'sql/item.cc'
--- a/sql/item.cc 2008-08-20 09:49:28 +0000
+++ b/sql/item.cc 2008-09-03 07:59:48 +0000
@@ -6046,6 +6046,13 @@ Item *Item_default_value::transform(Item
{
DBUG_ASSERT(!current_thd->is_stmt_prepare());
+ /*
+ If the value of arg is NULL, then this object represents a constant,
+ so further transformation is unnecessary (and impossible).
+ */
+ if (!arg)
+ return 0;
+
Item *new_item= arg->transform(transformer, args);
if (!new_item)
return 0;
| Thread |
|---|
| • bzr push into mysql-5.0 branch (gshchepa:2680 to 2681) | Gleb Shchepa | 3 Sep |