Loading myisam/mi_create.c +29 −7 Original line number Diff line number Diff line Loading @@ -519,8 +519,19 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs, if (ci->index_file_name) { fn_format(filename, ci->index_file_name,"",MI_NAME_IEXT,4); fn_format(linkname,name, "",MI_NAME_IEXT,4); if (options & HA_OPTION_TMP_TABLE) { char *path; /* chop off the table name, tempory tables use generated name */ if ((path= strrchr(ci->index_file_name, FN_LIBCHAR))) *path= '\0'; fn_format(filename, name, ci->index_file_name, MI_NAME_IEXT, MY_REPLACE_DIR | MY_UNPACK_FILENAME); } else fn_format(filename, ci->index_file_name, "", MI_NAME_IEXT, MY_UNPACK_FILENAME); fn_format(linkname, name, "", MI_NAME_IEXT, MY_UNPACK_FILENAME); linkname_ptr= linkname; /* Don't create the table if the link or file exists to ensure that one Loading Loading @@ -575,8 +586,19 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs, { if (ci->data_file_name) { fn_format(filename, ci->data_file_name,"",MI_NAME_DEXT,4); fn_format(linkname, name, "",MI_NAME_DEXT,4); if (options & HA_OPTION_TMP_TABLE) { char *path; /* chop off the table name, tempory tables use generated name */ if ((path= strrchr(ci->data_file_name, FN_LIBCHAR))) *path= '\0'; fn_format(filename, name, ci->data_file_name, MI_NAME_DEXT, MY_REPLACE_DIR | MY_UNPACK_FILENAME); } else fn_format(filename, ci->data_file_name, "", MI_NAME_DEXT, MY_UNPACK_FILENAME); fn_format(linkname, name, "", MI_NAME_DEXT, MY_UNPACK_FILENAME); linkname_ptr= linkname; create_flag= 0; } Loading mysql-test/r/myisam.result +21 −0 Original line number Diff line number Diff line Loading @@ -769,3 +769,24 @@ a b xxxxxxxxx bbbbbb xxxxxxxxx bbbbbb DROP TABLE t1; show create table t1; Table Create Table t1 CREATE TEMPORARY TABLE `t1` ( `a` int(11) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 show create table t1; Table Create Table t1 CREATE TEMPORARY TABLE `t1` ( `a` int(11) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 create table t1 (a int) engine=myisam select 42 a; select * from t1; a 9 select * from t1; a 99 select * from t1; a 42 drop table t1; mysql-test/t/myisam.test +31 −0 Original line number Diff line number Diff line Loading @@ -726,4 +726,35 @@ UPDATE t1 AS ta1,t1 AS ta2 SET ta1.b='aaaaaa',ta2.b='bbbbbb'; SELECT * FROM t1; DROP TABLE t1; # # Bug#8706 - temporary table with data directory option fails # connect (session1,localhost,root,,); connect (session2,localhost,root,,); connection session1; disable_query_log; eval create temporary table t1 (a int) engine=myisam data directory="$MYSQL_TEST_DIR/var/tmp" select 9 a; enable_query_log; show create table t1; connection session2; disable_query_log; eval create temporary table t1 (a int) engine=myisam data directory="$MYSQL_TEST_DIR/var/tmp" select 99 a; enable_query_log; show create table t1; connection default; create table t1 (a int) engine=myisam select 42 a; connection session1; select * from t1; disconnect session1; connection session2; select * from t1; disconnect session2; connection default; select * from t1; drop table t1; # End of 4.1 tests Loading
myisam/mi_create.c +29 −7 Original line number Diff line number Diff line Loading @@ -519,8 +519,19 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs, if (ci->index_file_name) { fn_format(filename, ci->index_file_name,"",MI_NAME_IEXT,4); fn_format(linkname,name, "",MI_NAME_IEXT,4); if (options & HA_OPTION_TMP_TABLE) { char *path; /* chop off the table name, tempory tables use generated name */ if ((path= strrchr(ci->index_file_name, FN_LIBCHAR))) *path= '\0'; fn_format(filename, name, ci->index_file_name, MI_NAME_IEXT, MY_REPLACE_DIR | MY_UNPACK_FILENAME); } else fn_format(filename, ci->index_file_name, "", MI_NAME_IEXT, MY_UNPACK_FILENAME); fn_format(linkname, name, "", MI_NAME_IEXT, MY_UNPACK_FILENAME); linkname_ptr= linkname; /* Don't create the table if the link or file exists to ensure that one Loading Loading @@ -575,8 +586,19 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs, { if (ci->data_file_name) { fn_format(filename, ci->data_file_name,"",MI_NAME_DEXT,4); fn_format(linkname, name, "",MI_NAME_DEXT,4); if (options & HA_OPTION_TMP_TABLE) { char *path; /* chop off the table name, tempory tables use generated name */ if ((path= strrchr(ci->data_file_name, FN_LIBCHAR))) *path= '\0'; fn_format(filename, name, ci->data_file_name, MI_NAME_DEXT, MY_REPLACE_DIR | MY_UNPACK_FILENAME); } else fn_format(filename, ci->data_file_name, "", MI_NAME_DEXT, MY_UNPACK_FILENAME); fn_format(linkname, name, "", MI_NAME_DEXT, MY_UNPACK_FILENAME); linkname_ptr= linkname; create_flag= 0; } Loading
mysql-test/r/myisam.result +21 −0 Original line number Diff line number Diff line Loading @@ -769,3 +769,24 @@ a b xxxxxxxxx bbbbbb xxxxxxxxx bbbbbb DROP TABLE t1; show create table t1; Table Create Table t1 CREATE TEMPORARY TABLE `t1` ( `a` int(11) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 show create table t1; Table Create Table t1 CREATE TEMPORARY TABLE `t1` ( `a` int(11) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 create table t1 (a int) engine=myisam select 42 a; select * from t1; a 9 select * from t1; a 99 select * from t1; a 42 drop table t1;
mysql-test/t/myisam.test +31 −0 Original line number Diff line number Diff line Loading @@ -726,4 +726,35 @@ UPDATE t1 AS ta1,t1 AS ta2 SET ta1.b='aaaaaa',ta2.b='bbbbbb'; SELECT * FROM t1; DROP TABLE t1; # # Bug#8706 - temporary table with data directory option fails # connect (session1,localhost,root,,); connect (session2,localhost,root,,); connection session1; disable_query_log; eval create temporary table t1 (a int) engine=myisam data directory="$MYSQL_TEST_DIR/var/tmp" select 9 a; enable_query_log; show create table t1; connection session2; disable_query_log; eval create temporary table t1 (a int) engine=myisam data directory="$MYSQL_TEST_DIR/var/tmp" select 99 a; enable_query_log; show create table t1; connection default; create table t1 (a int) engine=myisam select 42 a; connection session1; select * from t1; disconnect session1; connection session2; select * from t1; disconnect session2; connection default; select * from t1; drop table t1; # End of 4.1 tests