Loading mysql-test/r/ndb_basic.result +7 −0 Original line number Diff line number Diff line Loading @@ -400,6 +400,13 @@ b attr1 9413 9412 drop table test.t1, t2; drop database mysqltest; drop database if exists ndbtest1; create database ndbtest1; use ndbtest1; create table t1(id int) engine=ndbcluster; drop database ndbtest1; drop database ndbtest1; ERROR HY000: Can't drop database 'ndbtest1'; database doesn't exist use test; create table t1 (a int primary key, b char(0)); insert into t1 values (1,""); Loading mysql-test/t/ndb_basic.test +15 −0 Original line number Diff line number Diff line Loading @@ -360,6 +360,21 @@ select b,test.t1.attr1 from test.t1, t2 where test.t1.pk1 < a; drop table test.t1, t2; drop database mysqltest; # # BUG#6031 - DROP DATABASE doesn't drop database on first try # --disable_warnings drop database if exists ndbtest1; --enable_warnings create database ndbtest1; use ndbtest1; create table t1(id int) engine=ndbcluster; drop database ndbtest1; --error 1008 drop database ndbtest1; # # test support of char(0) # Loading sql/ha_ndbcluster.cc +1 −1 Original line number Diff line number Diff line Loading @@ -2777,7 +2777,7 @@ int ha_ndbcluster::reset() const char **ha_ndbcluster::bas_ext() const { static const char *ext[]= { ".ndb", NullS }; return ext; } { static const char *ext[]= { ha_ndb_ext, NullS }; return ext; } /* Loading sql/handler.cc +56 −0 Original line number Diff line number Diff line Loading @@ -109,6 +109,8 @@ const char *tx_isolation_names[] = TYPELIB tx_isolation_typelib= {array_elements(tx_isolation_names)-1,"", tx_isolation_names, NULL}; static TYPELIB known_extensions= {0,"known_exts", NULL, NULL}; enum db_type ha_resolve_by_name(const char *name, uint namelen) { THD *thd=current_thd; Loading Loading @@ -1633,3 +1635,57 @@ int handler::index_read_idx(byte * buf, uint index, const byte * key, return error; } /* Returns a list of all known extensions. SYNOPSIS ha_known_exts() NOTES No mutexes, worst case race is a minor surplus memory allocation RETURN VALUE pointer pointer to TYPELIB structure */ TYPELIB *ha_known_exts(void) { if (!known_extensions.type_names) { show_table_type_st *types; List<char> found_exts; List_iterator_fast<char> it(found_exts); const char *e, **ext; found_exts.push_back(".db"); for (types= sys_table_types; types->type; types++) { if (*types->value == SHOW_OPTION_YES) { handler *file= get_new_handler(0,(enum db_type) types->db_type); for (ext= file->bas_ext(); *ext; ext++) { while (e=it++) if (e == *ext) break; if (!e) found_exts.push_back((char *)*ext); it.rewind(); } delete file; } } ext= (const char **)my_once_alloc(sizeof(char *)* (found_exts.elements+1), MYF(MY_WME)); DBUG_ASSERT(ext); for (uint i=0; e=it++; i++) ext[i]= e; ext[found_exts.elements]= 0; known_extensions.count= found_exts.elements; known_extensions.type_names= ext; } return &known_extensions; } sql/handler.h +1 −1 Original line number Diff line number Diff line Loading @@ -567,5 +567,5 @@ int ha_discover(THD* thd, const char* dbname, const char* name, int ha_find_files(THD *thd,const char *db,const char *path, const char *wild, bool dir,List<char>* files); int ha_table_exists(THD* thd, const char* db, const char* name); TYPELIB *ha_known_exts(void); Loading
mysql-test/r/ndb_basic.result +7 −0 Original line number Diff line number Diff line Loading @@ -400,6 +400,13 @@ b attr1 9413 9412 drop table test.t1, t2; drop database mysqltest; drop database if exists ndbtest1; create database ndbtest1; use ndbtest1; create table t1(id int) engine=ndbcluster; drop database ndbtest1; drop database ndbtest1; ERROR HY000: Can't drop database 'ndbtest1'; database doesn't exist use test; create table t1 (a int primary key, b char(0)); insert into t1 values (1,""); Loading
mysql-test/t/ndb_basic.test +15 −0 Original line number Diff line number Diff line Loading @@ -360,6 +360,21 @@ select b,test.t1.attr1 from test.t1, t2 where test.t1.pk1 < a; drop table test.t1, t2; drop database mysqltest; # # BUG#6031 - DROP DATABASE doesn't drop database on first try # --disable_warnings drop database if exists ndbtest1; --enable_warnings create database ndbtest1; use ndbtest1; create table t1(id int) engine=ndbcluster; drop database ndbtest1; --error 1008 drop database ndbtest1; # # test support of char(0) # Loading
sql/ha_ndbcluster.cc +1 −1 Original line number Diff line number Diff line Loading @@ -2777,7 +2777,7 @@ int ha_ndbcluster::reset() const char **ha_ndbcluster::bas_ext() const { static const char *ext[]= { ".ndb", NullS }; return ext; } { static const char *ext[]= { ha_ndb_ext, NullS }; return ext; } /* Loading
sql/handler.cc +56 −0 Original line number Diff line number Diff line Loading @@ -109,6 +109,8 @@ const char *tx_isolation_names[] = TYPELIB tx_isolation_typelib= {array_elements(tx_isolation_names)-1,"", tx_isolation_names, NULL}; static TYPELIB known_extensions= {0,"known_exts", NULL, NULL}; enum db_type ha_resolve_by_name(const char *name, uint namelen) { THD *thd=current_thd; Loading Loading @@ -1633,3 +1635,57 @@ int handler::index_read_idx(byte * buf, uint index, const byte * key, return error; } /* Returns a list of all known extensions. SYNOPSIS ha_known_exts() NOTES No mutexes, worst case race is a minor surplus memory allocation RETURN VALUE pointer pointer to TYPELIB structure */ TYPELIB *ha_known_exts(void) { if (!known_extensions.type_names) { show_table_type_st *types; List<char> found_exts; List_iterator_fast<char> it(found_exts); const char *e, **ext; found_exts.push_back(".db"); for (types= sys_table_types; types->type; types++) { if (*types->value == SHOW_OPTION_YES) { handler *file= get_new_handler(0,(enum db_type) types->db_type); for (ext= file->bas_ext(); *ext; ext++) { while (e=it++) if (e == *ext) break; if (!e) found_exts.push_back((char *)*ext); it.rewind(); } delete file; } } ext= (const char **)my_once_alloc(sizeof(char *)* (found_exts.elements+1), MYF(MY_WME)); DBUG_ASSERT(ext); for (uint i=0; e=it++; i++) ext[i]= e; ext[found_exts.elements]= 0; known_extensions.count= found_exts.elements; known_extensions.type_names= ext; } return &known_extensions; }
sql/handler.h +1 −1 Original line number Diff line number Diff line Loading @@ -567,5 +567,5 @@ int ha_discover(THD* thd, const char* dbname, const char* name, int ha_find_files(THD *thd,const char *db,const char *path, const char *wild, bool dir,List<char>* files); int ha_table_exists(THD* thd, const char* db, const char* name); TYPELIB *ha_known_exts(void);