From 5f26f50020e9a41f644893088e94de74de55f95d Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Fri, 7 Oct 2022 15:14:50 +0200 Subject: [PATCH] typo fixed, followup for 3fe55fa8be9 --- mysql-test/main/grant3.result | 8 ++++++++ mysql-test/main/grant3.test | 10 ++++++++++ sql/sql_parse.cc | 2 +- 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/mysql-test/main/grant3.result b/mysql-test/main/grant3.result index cd686e19a9b..160153b1674 100644 --- a/mysql-test/main/grant3.result +++ b/mysql-test/main/grant3.result @@ -211,5 +211,13 @@ ERROR 42000: INSERT command denied to user 'foo'@'localhost' for table `db1`.`t1 create table t1 (a int); disconnect foo; connection default; +revoke create on db1.* from foo@localhost; +grant insert on db1.* to foo@localhost; +connect foo,localhost,foo; +use db1; +create table t2 as values (1),(2),(3); +ERROR 42000: CREATE command denied to user 'foo'@'localhost' for table `db1`.`t2` +disconnect foo; +connection default; drop user foo@localhost; drop database db1; diff --git a/mysql-test/main/grant3.test b/mysql-test/main/grant3.test index 67c185bcccd..5337d59efd8 100644 --- a/mysql-test/main/grant3.test +++ b/mysql-test/main/grant3.test @@ -223,6 +223,16 @@ create table t1 as select * from test.t; create table t1 as values (1),(2),(3); create table t1 (a int); disconnect foo; +connection default; + +revoke create on db1.* from foo@localhost; +grant insert on db1.* to foo@localhost; +connect foo,localhost,foo; +use db1; +--error ER_TABLEACCESS_DENIED_ERROR +create table t2 as values (1),(2),(3); +disconnect foo; + connection default; drop user foo@localhost; drop database db1; diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 57d7f93eacc..37d54b1165e 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -9869,7 +9869,7 @@ bool create_table_precheck(THD *thd, TABLE_LIST *tables, if (lex->tmp_table()) want_priv= CREATE_TMP_ACL; else if (select_lex->item_list.elements || select_lex->tvc) - want_priv= INSERT_ACL; + want_priv|= INSERT_ACL; /* CREATE OR REPLACE on not temporary tables require DROP_ACL */ if (lex->create_info.or_replace() && !lex->tmp_table())