Merge stella.local:/home2/mydev/mysql-5.1-amain
into stella.local:/home2/mydev/mysql-5.1-axmrg sql/sql_parse.cc: Auto merged sql/sql_table.cc: Auto merged sql/table.cc: Auto merged
This commit is contained in:
commit
749b5b5893
35
mysql-test/r/bdb_notembedded.result
Normal file
35
mysql-test/r/bdb_notembedded.result
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
set autocommit=1;
|
||||||
|
reset master;
|
||||||
|
create table bug16206 (a int);
|
||||||
|
insert into bug16206 values(1);
|
||||||
|
start transaction;
|
||||||
|
insert into bug16206 values(2);
|
||||||
|
commit;
|
||||||
|
show binlog events;
|
||||||
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
f n Format_desc 1 n Server ver: VERSION, Binlog ver: 4
|
||||||
|
f n Query 1 n use `test`; create table bug16206 (a int)
|
||||||
|
f n Query 1 n use `test`; insert into bug16206 values(1)
|
||||||
|
f n Query 1 n use `test`; insert into bug16206 values(2)
|
||||||
|
drop table bug16206;
|
||||||
|
reset master;
|
||||||
|
create table bug16206 (a int) engine= bdb;
|
||||||
|
insert into bug16206 values(0);
|
||||||
|
insert into bug16206 values(1);
|
||||||
|
start transaction;
|
||||||
|
insert into bug16206 values(2);
|
||||||
|
commit;
|
||||||
|
insert into bug16206 values(3);
|
||||||
|
show binlog events;
|
||||||
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
f n Format_desc 1 n Server ver: VERSION, Binlog ver: 4
|
||||||
|
f n Query 1 n use `test`; create table bug16206 (a int) engine= bdb
|
||||||
|
f n Query 1 n use `test`; insert into bug16206 values(0)
|
||||||
|
f n Query 1 n use `test`; insert into bug16206 values(1)
|
||||||
|
f n Query 1 n use `test`; BEGIN
|
||||||
|
f n Query 1 n use `test`; insert into bug16206 values(2)
|
||||||
|
f n Query 1 n use `test`; COMMIT
|
||||||
|
f n Query 1 n use `test`; insert into bug16206 values(3)
|
||||||
|
drop table bug16206;
|
||||||
|
set autocommit=0;
|
||||||
|
End of 5.0 tests
|
@ -162,3 +162,11 @@ DROP DATABASE db1;
|
|||||||
DROP DATABASE db2;
|
DROP DATABASE db2;
|
||||||
USE test;
|
USE test;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
|
SET @OLD_SQL_MODE=@@SQL_MODE, @@SQL_MODE='NO_DIR_IN_CREATE';
|
||||||
|
CREATE TABLE t1(a INT) DATA DIRECTORY='MYSQLTEST_VARDIR/tmp' INDEX DIRECTORY='MYSQLTEST_VARDIR/tmp';
|
||||||
|
Warnings:
|
||||||
|
Warning 0 DATA DIRECTORY option ignored
|
||||||
|
Warning 0 INDEX DIRECTORY option ignored
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET @@SQL_MODE=@OLD_SQL_MODE;
|
||||||
|
End of 5.1 tests
|
||||||
|
38
mysql-test/t/bdb_notembedded.test
Normal file
38
mysql-test/t/bdb_notembedded.test
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
-- source include/not_embedded.inc
|
||||||
|
-- source include/have_bdb.inc
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #16206: Superfluous COMMIT event in binlog when updating BDB in autocommit mode
|
||||||
|
#
|
||||||
|
set autocommit=1;
|
||||||
|
|
||||||
|
let $VERSION=`select version()`;
|
||||||
|
|
||||||
|
reset master;
|
||||||
|
create table bug16206 (a int);
|
||||||
|
insert into bug16206 values(1);
|
||||||
|
start transaction;
|
||||||
|
insert into bug16206 values(2);
|
||||||
|
commit;
|
||||||
|
--replace_result $VERSION VERSION
|
||||||
|
--replace_column 1 f 2 n 5 n
|
||||||
|
show binlog events;
|
||||||
|
drop table bug16206;
|
||||||
|
|
||||||
|
reset master;
|
||||||
|
create table bug16206 (a int) engine= bdb;
|
||||||
|
insert into bug16206 values(0);
|
||||||
|
insert into bug16206 values(1);
|
||||||
|
start transaction;
|
||||||
|
insert into bug16206 values(2);
|
||||||
|
commit;
|
||||||
|
insert into bug16206 values(3);
|
||||||
|
--replace_result $VERSION VERSION
|
||||||
|
--replace_column 1 f 2 n 5 n
|
||||||
|
show binlog events;
|
||||||
|
drop table bug16206;
|
||||||
|
|
||||||
|
set autocommit=0;
|
||||||
|
|
||||||
|
|
||||||
|
--echo End of 5.0 tests
|
@ -226,3 +226,15 @@ USE test;
|
|||||||
|
|
||||||
|
|
||||||
--echo End of 5.0 tests
|
--echo End of 5.0 tests
|
||||||
|
|
||||||
|
#
|
||||||
|
# BUG#25677 - With --skip-symbolic-links option on, DATA DIRECTORY clause is
|
||||||
|
# silently ignored
|
||||||
|
#
|
||||||
|
SET @OLD_SQL_MODE=@@SQL_MODE, @@SQL_MODE='NO_DIR_IN_CREATE';
|
||||||
|
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
|
||||||
|
eval CREATE TABLE t1(a INT) DATA DIRECTORY='$MYSQLTEST_VARDIR/tmp' INDEX DIRECTORY='$MYSQLTEST_VARDIR/tmp';
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET @@SQL_MODE=@OLD_SQL_MODE;
|
||||||
|
|
||||||
|
--echo End of 5.1 tests
|
||||||
|
@ -2290,15 +2290,7 @@ mysql_execute_command(THD *thd)
|
|||||||
/* Might have been updated in create_table_precheck */
|
/* Might have been updated in create_table_precheck */
|
||||||
create_info.alias= create_table->alias;
|
create_info.alias= create_table->alias;
|
||||||
|
|
||||||
#ifndef HAVE_READLINK
|
#ifdef HAVE_READLINK
|
||||||
if (create_info.data_file_name)
|
|
||||||
push_warning(thd, MYSQL_ERROR::WARN_LEVEL_WARN, 0,
|
|
||||||
"DATA DIRECTORY option ignored");
|
|
||||||
if (create_info.index_file_name)
|
|
||||||
push_warning(thd, MYSQL_ERROR::WARN_LEVEL_WARN, 0,
|
|
||||||
"INDEX DIRECTORY option ignored");
|
|
||||||
create_info.data_file_name= create_info.index_file_name= NULL;
|
|
||||||
#else
|
|
||||||
/* Fix names if symlinked tables */
|
/* Fix names if symlinked tables */
|
||||||
if (append_file_to_dir(thd, &create_info.data_file_name,
|
if (append_file_to_dir(thd, &create_info.data_file_name,
|
||||||
create_table->table_name) ||
|
create_table->table_name) ||
|
||||||
|
@ -3475,8 +3475,18 @@ bool mysql_create_table_no_lock(THD *thd,
|
|||||||
thd->proc_info="creating table";
|
thd->proc_info="creating table";
|
||||||
create_info->table_existed= 0; // Mark that table is created
|
create_info->table_existed= 0; // Mark that table is created
|
||||||
|
|
||||||
if (thd->variables.sql_mode & MODE_NO_DIR_IN_CREATE)
|
#ifdef HAVE_READLINK
|
||||||
|
if (!my_use_symdir || (thd->variables.sql_mode & MODE_NO_DIR_IN_CREATE))
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
if (create_info->data_file_name)
|
||||||
|
push_warning(thd, MYSQL_ERROR::WARN_LEVEL_WARN, 0,
|
||||||
|
"DATA DIRECTORY option ignored");
|
||||||
|
if (create_info->index_file_name)
|
||||||
|
push_warning(thd, MYSQL_ERROR::WARN_LEVEL_WARN, 0,
|
||||||
|
"INDEX DIRECTORY option ignored");
|
||||||
create_info->data_file_name= create_info->index_file_name= 0;
|
create_info->data_file_name= create_info->index_file_name= 0;
|
||||||
|
}
|
||||||
create_info->table_options=db_options;
|
create_info->table_options=db_options;
|
||||||
|
|
||||||
path[path_length - reg_ext_length]= '\0'; // Remove .frm extension
|
path[path_length - reg_ext_length]= '\0'; // Remove .frm extension
|
||||||
|
41
sql/table.cc
41
sql/table.cc
@ -892,26 +892,31 @@ static int open_binary_frm(THD *thd, TABLE_SHARE *share, uchar *head,
|
|||||||
ha_legacy_type(share->db_type())));
|
ha_legacy_type(share->db_type())));
|
||||||
}
|
}
|
||||||
#ifdef WITH_PARTITION_STORAGE_ENGINE
|
#ifdef WITH_PARTITION_STORAGE_ENGINE
|
||||||
else
|
else if (str_db_type_length == 9 &&
|
||||||
|
!strncmp((char *) next_chunk + 2, "partition", 9))
|
||||||
{
|
{
|
||||||
LEX_STRING pname= { C_STRING_WITH_LEN( "partition" ) };
|
/*
|
||||||
if (str_db_type_length == pname.length &&
|
Use partition handler
|
||||||
!strncmp((char *) next_chunk + 2, pname.str, pname.length))
|
tmp_plugin is locked with a local lock.
|
||||||
{
|
we unlock the old value of share->db_plugin before
|
||||||
/*
|
replacing it with a globally locked version of tmp_plugin
|
||||||
Use partition handler
|
*/
|
||||||
tmp_plugin is locked with a local lock.
|
plugin_unlock(NULL, share->db_plugin);
|
||||||
we unlock the old value of share->db_plugin before
|
share->db_plugin= ha_lock_engine(NULL, partition_hton);
|
||||||
replacing it with a globally locked version of tmp_plugin
|
DBUG_PRINT("info", ("setting dbtype to '%.*s' (%d)",
|
||||||
*/
|
str_db_type_length, next_chunk + 2,
|
||||||
plugin_unlock(NULL, share->db_plugin);
|
ha_legacy_type(share->db_type())));
|
||||||
share->db_plugin= ha_lock_engine(NULL, partition_hton);
|
|
||||||
DBUG_PRINT("info", ("setting dbtype to '%.*s' (%d)",
|
|
||||||
str_db_type_length, next_chunk + 2,
|
|
||||||
ha_legacy_type(share->db_type())));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
else if (!tmp_plugin)
|
||||||
|
{
|
||||||
|
/* purecov: begin inspected */
|
||||||
|
error= 8;
|
||||||
|
my_error(ER_UNKNOWN_STORAGE_ENGINE, MYF(0), name.str);
|
||||||
|
my_free(buff, MYF(0));
|
||||||
|
goto err;
|
||||||
|
/* purecov: end */
|
||||||
|
}
|
||||||
next_chunk+= str_db_type_length + 2;
|
next_chunk+= str_db_type_length + 2;
|
||||||
}
|
}
|
||||||
if (next_chunk + 5 < buff_end)
|
if (next_chunk + 5 < buff_end)
|
||||||
@ -2200,6 +2205,8 @@ void open_table_error(TABLE_SHARE *share, int error, int db_errno, int errarg)
|
|||||||
"of MySQL and cannot be read",
|
"of MySQL and cannot be read",
|
||||||
MYF(0), buff);
|
MYF(0), buff);
|
||||||
break;
|
break;
|
||||||
|
case 8:
|
||||||
|
break;
|
||||||
default: /* Better wrong error than none */
|
default: /* Better wrong error than none */
|
||||||
case 4:
|
case 4:
|
||||||
strxmov(buff, share->normalized_path.str, reg_ext, NullS);
|
strxmov(buff, share->normalized_path.str, reg_ext, NullS);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user