diff options
author | tnurnberg@mysql.com/white.intern.koehntopp.de <> | 2007-10-23 08:54:20 +0200 |
---|---|---|
committer | tnurnberg@mysql.com/white.intern.koehntopp.de <> | 2007-10-23 08:54:20 +0200 |
commit | e9229319c96cab8d5bead48b2a694b519fdd742d (patch) | |
tree | 66ed2cf420e67bbef9f6fbd4e514783e704f8bdc /sql/sql_parse.cc | |
parent | 5a42bb96f86906319ab20247112b31cf8be66fc1 (diff) | |
parent | b7599f4b1bba47825348d5305ec84a0cbc7b1b98 (diff) | |
download | mariadb-git-e9229319c96cab8d5bead48b2a694b519fdd742d.tar.gz |
Merge tnurnberg@bk-internal.mysql.com:/home/bk/mysql-5.1-maint
into mysql.com:/scratch/tnurnberg/20901/51-20901
Diffstat (limited to 'sql/sql_parse.cc')
-rw-r--r-- | sql/sql_parse.cc | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 4d8beb6f67d..0c9e9705444 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -6980,8 +6980,15 @@ bool create_table_precheck(THD *thd, TABLE_LIST *tables, bool error= TRUE; // Error message is given DBUG_ENTER("create_table_precheck"); + /* + Require CREATE [TEMPORARY] privilege on new table; for + CREATE TABLE ... SELECT, also require INSERT. + */ + want_priv= ((lex->create_info.options & HA_LEX_CREATE_TMP_TABLE) ? - CREATE_TMP_ACL : CREATE_ACL); + CREATE_TMP_ACL : CREATE_ACL) | + (select_lex->item_list.elements ? INSERT_ACL : 0); + if (check_access(thd, want_priv, create_table->db, &create_table->grant.privilege, 0, 0, test(create_table->schema_table)) || |