diff --git a/mysql-test/r/sp.result b/mysql-test/r/sp.result index 29709dd38d7..8330c391715 100644 --- a/mysql-test/r/sp.result +++ b/mysql-test/r/sp.result @@ -4920,7 +4920,7 @@ create table t3 as select bug12472() as i| show create table t3| Table Create Table t3 CREATE TABLE `t3` ( - `i` int(11) default NULL + `i` int(11) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 select * from t3| i @@ -4931,7 +4931,7 @@ create table t3 as select * from v1| show create table t3| Table Create Table t3 CREATE TABLE `t3` ( - `j` bigint(11) default NULL + `j` bigint(11) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 select * from t3| j diff --git a/mysql-test/r/trigger-grant.result b/mysql-test/r/trigger-grant.result index 704dc793b99..fec5d4812d9 100644 --- a/mysql-test/r/trigger-grant.result +++ b/mysql-test/r/trigger-grant.result @@ -376,7 +376,7 @@ CREATE TABLE t1 (i1 INT); CREATE TABLE t2 (i1 INT); CREATE USER mysqltest_dfn@localhost; CREATE USER mysqltest_inv@localhost; -GRANT EXECUTE, CREATE ROUTINE, SUPER ON *.* TO mysqltest_dfn@localhost; +GRANT EXECUTE, CREATE ROUTINE, TRIGGER ON *.* TO mysqltest_dfn@localhost; GRANT INSERT ON mysqltest_db1.* TO mysqltest_inv@localhost; CREATE PROCEDURE p1(OUT i INT) DETERMINISTIC NO SQL SET i = 3; CREATE PROCEDURE p2(INOUT i INT) DETERMINISTIC NO SQL SET i = i * 5; diff --git a/mysql-test/t/trigger-grant.test b/mysql-test/t/trigger-grant.test index 9f2f7fe1e39..8ca8ffe904b 100644 --- a/mysql-test/t/trigger-grant.test +++ b/mysql-test/t/trigger-grant.test @@ -718,7 +718,7 @@ CREATE TABLE t2 (i1 INT); CREATE USER mysqltest_dfn@localhost; CREATE USER mysqltest_inv@localhost; -GRANT EXECUTE, CREATE ROUTINE, SUPER ON *.* TO mysqltest_dfn@localhost; +GRANT EXECUTE, CREATE ROUTINE, TRIGGER ON *.* TO mysqltest_dfn@localhost; GRANT INSERT ON mysqltest_db1.* TO mysqltest_inv@localhost; connect (definer,localhost,mysqltest_dfn,,mysqltest_db1); diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc index ddee8394365..675fb256b32 100644 --- a/sql/sql_insert.cc +++ b/sql/sql_insert.cc @@ -2538,6 +2538,7 @@ bool select_insert::send_eof() (open) will be returned in this parameter. Since this table is not included in THD::lock caller is responsible for explicitly unlocking this table. + hooks NOTES If 'create_info->options' bitmask has HA_LEX_CREATE_IF_NOT_EXISTS @@ -2556,10 +2557,13 @@ bool select_insert::send_eof() static TABLE *create_table_from_items(THD *thd, HA_CREATE_INFO *create_info, TABLE_LIST *create_table, List *extra_fields, - List *keys, List *items, - MYSQL_LOCK **lock) + List *keys, + List *items, + MYSQL_LOCK **lock, + TABLEOP_HOOKS *hooks) { TABLE tmp_table; // Used during 'create_field()' + TABLE_SHARE share; TABLE *table= 0; uint select_field_count= items->elements; /* Add selected items to field list */ @@ -2571,11 +2575,14 @@ static TABLE *create_table_from_items(THD *thd, HA_CREATE_INFO *create_info, tmp_table.alias= 0; tmp_table.timestamp_field= 0; - tmp_table.s= &tmp_table.share_not_to_be_used; + tmp_table.s= &share; + init_tmp_table_share(&share, "", 0, "", ""); + tmp_table.s->db_create_options=0; tmp_table.s->blob_ptr_size= portable_sizeof_char_ptr; - tmp_table.s->db_low_byte_first= test(create_info->db_type == DB_TYPE_MYISAM || - create_info->db_type == DB_TYPE_HEAP); + tmp_table.s->db_low_byte_first= + test(create_info->db_type == &myisam_hton || + create_info->db_type == &heap_hton); tmp_table.null_row=tmp_table.maybe_null=0; while ((item=it++)) @@ -2631,6 +2638,7 @@ static TABLE *create_table_from_items(THD *thd, HA_CREATE_INFO *create_info, under explicit LOCK TABLES since it will open gap for deadlock too wide (and also is not backward compatible). */ + if (! (table= open_table(thd, create_table, thd->mem_root, (bool*) 0, (MYSQL_LOCK_IGNORE_FLUSH | ((thd->prelocked_mode == PRELOCKED) ? @@ -2650,6 +2658,7 @@ static TABLE *create_table_from_items(THD *thd, HA_CREATE_INFO *create_info, save us from that ? */ table->reginfo.lock_type=TL_WRITE; + hooks->prelock(&table, 1); // Call prelock hooks if (! ((*lock)= mysql_lock_tables(thd, &table, 1, MYSQL_LOCK_IGNORE_FLUSH, ¬_used))) {