summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <acurtis@pcgem.rdg.cyberkinetica.com>2005-02-03 21:16:36 +0000
committerunknown <acurtis@pcgem.rdg.cyberkinetica.com>2005-02-03 21:16:36 +0000
commit6bfc46f0bf65036fb5beb7b07568125a9bbf88f1 (patch)
tree27885d7343efb04cae48903b6a83702a1ccd6a0d
parentf8d38cffdf3be872955351fa0c45a8aae53e9e02 (diff)
parent3c925ee0f1b3387e6df952de8f86c618f11c1a8d (diff)
downloadmariadb-git-6bfc46f0bf65036fb5beb7b07568125a9bbf88f1.tar.gz
Merge bk-internal.mysql.com:/home/bk/mysql-4.1
into pcgem.rdg.cyberkinetica.com:/var/db/bk/work-acurtis/bug8057 sql/item_func.cc: Auto merged
-rw-r--r--mysql-test/r/update.result7
-rw-r--r--mysql-test/t/update.test9
-rw-r--r--sql/item_func.cc8
3 files changed, 18 insertions, 6 deletions
diff --git a/mysql-test/r/update.result b/mysql-test/r/update.result
index beab6105f79..ac370db9ecc 100644
--- a/mysql-test/r/update.result
+++ b/mysql-test/r/update.result
@@ -212,3 +212,10 @@ insert into t1 values (1, "t1c2-1", 10), (2, "t1c2-2", 20);
update t1 left join t2 on t1.c1 = t2.c1 set t2.c2 = "t2c2-1";
update t1 left join t2 on t1.c1 = t2.c1 set t2.c2 = "t2c2-1" where t1.c3 = 10;
drop table t1, t2;
+create table t1 (id int not null auto_increment primary key, id_str varchar(32));
+insert into t1 (id_str) values ("test");
+update t1 set id_str = concat(id_str, id) where id = last_insert_id();
+select * from t1;
+id id_str
+1 test1
+drop table t1;
diff --git a/mysql-test/t/update.test b/mysql-test/t/update.test
index 704263b1216..04192f25ac8 100644
--- a/mysql-test/t/update.test
+++ b/mysql-test/t/update.test
@@ -170,3 +170,12 @@ insert into t1 values (1, "t1c2-1", 10), (2, "t1c2-2", 20);
update t1 left join t2 on t1.c1 = t2.c1 set t2.c2 = "t2c2-1";
update t1 left join t2 on t1.c1 = t2.c1 set t2.c2 = "t2c2-1" where t1.c3 = 10;
drop table t1, t2;
+
+#
+# Bug #8057
+#
+create table t1 (id int not null auto_increment primary key, id_str varchar(32));
+insert into t1 (id_str) values ("test");
+update t1 set id_str = concat(id_str, id) where id = last_insert_id();
+select * from t1;
+drop table t1;
diff --git a/sql/item_func.cc b/sql/item_func.cc
index bff49541252..7d38c44bab3 100644
--- a/sql/item_func.cc
+++ b/sql/item_func.cc
@@ -2298,14 +2298,10 @@ longlong Item_func_last_insert_id::val_int()
longlong value=args[0]->val_int();
current_thd->insert_id(value);
null_value=args[0]->null_value;
- return value;
}
else
- {
- Item *it= get_system_var(current_thd, OPT_SESSION, "last_insert_id", 14,
- "last_insert_id()");
- return it->val_int();
- }
+ current_thd->lex->uncacheable(UNCACHEABLE_SIDEEFFECT);
+ return current_thd->insert_id();
}
/* This function is just used to test speed of different functions */