Bug #14150 create table ... select function_call() doesn't work in some cases
| Submitted: | 19 Oct 2005 20:18 | Modified: | 8 Feb 2006 11:32 |
|---|---|---|---|
| Reporter: | Markus Popp | Email Updates: | |
| Status: | Duplicate | Impact on me: | |
| Category: | MySQL Server | Severity: | S2 (Serious) |
| Version: | 5.0.13-rc-nt-max | OS: | Windows (Windows XP) |
| Assigned to: | Assigned Account | CPU Architecture: | Any |
[19 Oct 2005 20:57]
Hartmut Holzgraefe
verified with 5.0bk, the following works though: create table t2 like t1; insert into t2 select ftest();
[8 Feb 2006 11:16]
Konstantin Osipov
Igor, this is a duplicate of Bug#12472. Reassigning to Dmitri.
[8 Feb 2006 11:32]
Dmitry Lenev
Hi, Markus! This bug is duplicate of bug #12472 "CREATE TABLE t AS SELECT spfunc gives "Table not locked with LOCK TABLES" error" so I have marked it as such. Thanks for your interest in MySQL!
Portions of this website are copyright © 2001, 2002 The PHP Group
Page generated in 0.053 sec. using MySQL 8.4.7-u6-cloud
Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the
respective copyright holders.
It is not reviewed in advance
by Oracle and does not necessarily represent the opinion of
Oracle or any other party.
Description: The command 'create table ... select function_call()' sends the message ERROR 1100 (HY000): Table 't2' was not locked with LOCK TABLES if the function refers to another table. However, if the function returns a deterministic value, the creation/insertion works. How to repeat: mysql> create table t1 (d date); Query OK, 0 rows affected (0.03 sec) mysql> insert into t1 values (curdate()); Query OK, 1 row affected (0.02 sec) mysql> delimiter // mysql> create function ftest() returns date -> begin -> declare d date; -> select max(d) from t1 into d; -> return d; -> end// Query OK, 0 rows affected (0.03 sec) mysql> delimiter ; mysql> create table t2 select ftest(); ERROR 1100 (HY000): Table 't2' was not locked with LOCK TABLES Suggested fix: The returned value from the function should be inserted into the newly created table.