mirror of
https://github.com/MariaDB/server.git
synced 2025-01-29 02:05:57 +01:00
5b71281467
Problem: When creating a temporary field for a temporary table in create_tmp_field_from_field(), a resulting field is created as an exact copy of an original one (in Field::new_field()). However, Field_enum and Field_set contain a pointer (typelib) to memory allocated in the parent table's MEM_ROOT, which under some circumstances may be deallocated later by the time a temporary table is used. Solution: Override the new_field() method for Field_enum and Field_set and create a separate copy of the typelib structure in there. include/typelib.h: Added copy_typelib() declaration mysql-test/r/sp.result: Added a testcase for bug #24117 "server crash on a FETCH with a cursor on a table which is not in the table cache" mysql-test/t/sp.test: Added a testcase for bug #24117 "server crash on a FETCH with a cursor on a table which is not in the table cache" mysys/typelib.c: Added copy_typelib() definition sql/field.cc: Create a copy of the internal 'typelib' structure when copying Field_enum of Field_set objects. sql/field.h: Override new_field method in Field_enum (and Field_set) to copy the typelib structure. |
||
---|---|---|
.. | ||
.cvsignore | ||
abi_check | ||
base64.h | ||
config-netware.h | ||
config-os2.h | ||
config-win.h | ||
decimal.h | ||
errmsg.h | ||
ft_global.h | ||
hash.h | ||
heap.h | ||
help_end.h | ||
help_start.h | ||
keycache.h | ||
m_ctype.h | ||
m_string.h | ||
Makefile.am | ||
md5.h | ||
my_aes.h | ||
my_alarm.h | ||
my_alloc.h | ||
my_base.h | ||
my_bitmap.h | ||
my_dbug.h | ||
my_dir.h | ||
my_getopt.h | ||
my_global.h | ||
my_handler.h | ||
my_libwrap.h | ||
my_list.h | ||
my_net.h | ||
my_no_pthread.h | ||
my_nosys.h | ||
my_pthread.h | ||
my_semaphore.h | ||
my_sys.h | ||
my_time.h | ||
my_tree.h | ||
my_user.h | ||
my_xml.h | ||
myisam.h | ||
myisammrg.h | ||
myisampack.h | ||
mysql.h | ||
mysql_com.h | ||
mysql_embed.h | ||
mysql_h.ic | ||
mysql_time.h | ||
mysql_version.h.in | ||
mysys_err.h | ||
queues.h | ||
raid.h | ||
rijndael.h | ||
sha1.h | ||
sql_common.h | ||
sslopt-case.h | ||
sslopt-longopts.h | ||
sslopt-vars.h | ||
t_ctype.h | ||
thr_alarm.h | ||
thr_lock.h | ||
typelib.h | ||
violite.h |