diff options
-rw-r--r-- | .bzrignore | 3 | ||||
-rw-r--r-- | libmysql/libmysql.c | 15 | ||||
-rw-r--r-- | mysql-test/r/innodb_mysql.result | 8 | ||||
-rw-r--r-- | mysql-test/t/innodb_mysql.test | 15 | ||||
-rw-r--r-- | sql/ha_innodb.cc | 2 |
5 files changed, 41 insertions, 2 deletions
diff --git a/.bzrignore b/.bzrignore index 8c632f8f890..e7a7a1c27dc 100644 --- a/.bzrignore +++ b/.bzrignore @@ -1341,3 +1341,6 @@ win/vs71cache.txt win/vs8cache.txt zlib/*.ds? zlib/*.vcproj +debian/control +debian/defs.mk +include/abi_check diff --git a/libmysql/libmysql.c b/libmysql/libmysql.c index cb60fb20863..72bc4445d83 100644 --- a/libmysql/libmysql.c +++ b/libmysql/libmysql.c @@ -168,8 +168,23 @@ int STDCALL mysql_server_init(int argc __attribute__((unused)), } +/* + Free all memory and resources used by the client library + + NOTES + When calling this there should not be any other threads using + the library. + + To make things simpler when used with windows dll's (which calls this + function automaticly), it's safe to call this function multiple times. +*/ + + void STDCALL mysql_server_end() { + if (!mysql_client_init) + return; + #ifdef EMBEDDED_LIBRARY end_embedded_server(); #endif diff --git a/mysql-test/r/innodb_mysql.result b/mysql-test/r/innodb_mysql.result index 11c7c2aedc9..c766560f078 100644 --- a/mysql-test/r/innodb_mysql.result +++ b/mysql-test/r/innodb_mysql.result @@ -661,6 +661,14 @@ UPDATE t3 SET a = 'us' WHERE a = 'uk'; SELECT * FROM t3 WHERE a = 'uk'; a DROP TABLE t1,t2,t3; +create table t1 (a int) engine=innodb; +select * from t2; +ERROR 42S02: Table 'test.t2' doesn't exist +drop table t1; +drop table t2; +ERROR 42S02: Unknown table 't2' +create table t2 (a int); +drop table t2; CREATE TABLE t1 (a INT) ENGINE=InnoDB; CREATE TABLE t2 (a INT) ENGINE=InnoDB; switch to connection c1 diff --git a/mysql-test/t/innodb_mysql.test b/mysql-test/t/innodb_mysql.test index 25ba9a258ff..f3d552a6868 100644 --- a/mysql-test/t/innodb_mysql.test +++ b/mysql-test/t/innodb_mysql.test @@ -636,6 +636,20 @@ SELECT * FROM t3 WHERE a = 'uk'; DROP TABLE t1,t2,t3; +# +# Test bug when trying to drop data file which no InnoDB directory entry +# + +create table t1 (a int) engine=innodb; +copy_file $MYSQLTEST_VARDIR/master-data/test/t1.frm $MYSQLTEST_VARDIR/master-data/test/t2.frm; +--error 1146 +select * from t2; +drop table t1; +--error 1051 +drop table t2; +create table t2 (a int); +drop table t2; + # # Bug #29154: LOCK TABLES is not atomic when >1 InnoDB tables are locked @@ -670,5 +684,4 @@ DISCONNECT c1; DISCONNECT c2; DROP TABLE t1,t2; - --echo End of 5.0 tests diff --git a/sql/ha_innodb.cc b/sql/ha_innodb.cc index 455c0968050..a3676bd7e1b 100644 --- a/sql/ha_innodb.cc +++ b/sql/ha_innodb.cc @@ -504,7 +504,7 @@ convert_error_code_to_mysql( } else if (error == (int) DB_TABLE_NOT_FOUND) { - return(HA_ERR_KEY_NOT_FOUND); + return(HA_ERR_NO_SUCH_TABLE); } else if (error == (int) DB_TOO_BIG_RECORD) { |