mirror of
https://github.com/MariaDB/server.git
synced 2025-12-24 11:21:21 +03:00
Merge with 4.1 to get new thd->mem_root handling
BitKeeper/etc/ignore: auto-union client/mysqldump.c: Auto merged client/mysqltest.c: Auto merged innobase/include/row0mysql.h: Auto merged libmysql/libmysql.c: Auto merged mysql-test/r/ctype_ucs.result: Auto merged mysql-test/r/fulltext.result: Auto merged mysql-test/r/func_in.result: Auto merged mysql-test/r/ps.result: Auto merged mysql-test/r/ps_2myisam.result: Auto merged mysql-test/r/ps_3innodb.result: Auto merged mysql-test/r/ps_4heap.result: Auto merged mysql-test/r/ps_5merge.result: Auto merged mysql-test/r/ps_6bdb.result: Auto merged mysql-test/r/type_float.result: Auto merged mysql-test/r/user_var.result: Auto merged mysql-test/t/innodb.test: Auto merged mysql-test/t/user_var.test: Auto merged mysql-test/t/variables.test: Auto merged sql/ha_berkeley.cc: Auto merged sql/ha_innodb.cc: Auto merged sql/ha_innodb.h: Auto merged sql/ha_ndbcluster.h: Auto merged sql/item.cc: Auto merged sql/item_cmpfunc.cc: Auto merged sql/item_func.cc: Auto merged sql/item_sum.cc: Auto merged sql/item_timefunc.cc: Auto merged sql/log_event.cc: Auto merged sql/mysql_priv.h: Auto merged sql/mysqld.cc: Auto merged sql/repl_failsafe.cc: Auto merged sql/set_var.cc: Auto merged sql/sql_acl.cc: Auto merged sql/sql_db.cc: Auto merged sql/sql_error.cc: Auto merged sql/sql_help.cc: Auto merged sql/sql_insert.cc: Auto merged sql/sql_prepare.cc: Auto merged sql/sql_select.h: Auto merged sql/sql_yacc.yy: Auto merged
This commit is contained in:
14
sql/table.cc
14
sql/table.cc
@@ -83,7 +83,7 @@ int openfrm(THD *thd, const char *name, const char *alias, uint db_stat,
|
||||
uchar *null_pos;
|
||||
uint null_bit, new_frm_ver, field_pack_length;
|
||||
SQL_CRYPT *crypted=0;
|
||||
MEM_ROOT *old_root;
|
||||
MEM_ROOT **root_ptr, *old_root;
|
||||
DBUG_ENTER("openfrm");
|
||||
DBUG_PRINT("enter",("name: '%s' form: 0x%lx",name,outparam));
|
||||
|
||||
@@ -123,7 +123,9 @@ int openfrm(THD *thd, const char *name, const char *alias, uint db_stat,
|
||||
outparam->blob_ptr_size=sizeof(char*);
|
||||
outparam->db_stat = db_stat;
|
||||
init_sql_alloc(&outparam->mem_root, TABLE_ALLOC_BLOCK_SIZE, 0);
|
||||
my_pthread_setspecific_ptr(THR_MALLOC,&outparam->mem_root);
|
||||
root_ptr= my_pthread_getspecific_ptr(MEM_ROOT**, THR_MALLOC);
|
||||
old_root= *root_ptr;
|
||||
*root_ptr= &outparam->mem_root;
|
||||
|
||||
outparam->real_name=strdup_root(&outparam->mem_root,
|
||||
name+dirname_length(name));
|
||||
@@ -274,9 +276,9 @@ int openfrm(THD *thd, const char *name, const char *alias, uint db_stat,
|
||||
#ifdef HAVE_CRYPTED_FRM
|
||||
else if (*(head+26) == 2)
|
||||
{
|
||||
my_pthread_setspecific_ptr(THR_MALLOC,old_root);
|
||||
*root_ptr= old_root
|
||||
crypted=get_crypt_for_frm();
|
||||
my_pthread_setspecific_ptr(THR_MALLOC,&outparam->mem_root);
|
||||
*root_ptr= &outparam->mem_root;
|
||||
outparam->crypted=1;
|
||||
}
|
||||
#endif
|
||||
@@ -762,7 +764,7 @@ int openfrm(THD *thd, const char *name, const char *alias, uint db_stat,
|
||||
}
|
||||
outparam->db_low_byte_first=outparam->file->low_byte_first();
|
||||
|
||||
my_pthread_setspecific_ptr(THR_MALLOC,old_root);
|
||||
*root_ptr= old_root;
|
||||
thd->status_var.opened_tables++;
|
||||
#ifndef DBUG_OFF
|
||||
if (use_hash)
|
||||
@@ -782,7 +784,7 @@ int openfrm(THD *thd, const char *name, const char *alias, uint db_stat,
|
||||
|
||||
err_end: /* Here when no file */
|
||||
delete crypted;
|
||||
my_pthread_setspecific_ptr(THR_MALLOC,old_root);
|
||||
*root_ptr= old_root;
|
||||
frm_error(error,outparam,name,ME_ERROR+ME_WAITTANG);
|
||||
delete outparam->file;
|
||||
outparam->file=0; // For easier errorchecking
|
||||
|
||||
Reference in New Issue
Block a user