diff options
author | unknown <monty@donna.mysql.com> | 2000-08-29 12:31:01 +0300 |
---|---|---|
committer | unknown <monty@donna.mysql.com> | 2000-08-29 12:31:01 +0300 |
commit | 52046a7ba3c00111bf27195197b486a9ef558416 (patch) | |
tree | 8c9e3c031400ac400edcf6561fe51f4bdbd69369 /sql/sql_parse.cc | |
parent | 844c92364e04fb17371c4a71dee52f179f8ad253 (diff) | |
download | mariadb-git-52046a7ba3c00111bf27195197b486a9ef558416.tar.gz |
Bug fixes for 3.23.23
myisam/mi_debug.c:
***MISSING WEAVE***
Docs/internals.texi:
Added coding guidelines
Docs/manual.texi:
Changelog update + Win32 -> Windows
client/mysql.cc:
Changed --no-named-commands to be on by default
client/mysqlimport.c:
Bug fix
include/config-win.h:
Update of supported functions
include/global.h:
Removed compiler warning
libmysql/libmysql.c:
Fix for Ia64
myisam/ChangeLog:
Changelog
myisam/Makefile.am:
Added file mi_dbug.c
myisam/ft_stopwords.c:
Fix for Ia64
myisam/mi_delete_table.c:
Extra debugging
myisam/mi_rename.c:
Extra debugging
myisam/mi_rnext.c:
Fixed bug with MIN and concurrent insert
myisam/mi_rprev.c:
Fixed bug with MAX and concurrent insert
myisam/mi_search.c:
Fixed bug with DECIMAL/NUMERIC keys
myisam/myisamdef.h:
Extra debugging
scripts/make_binary_distribution.sh:
Added thread safe mysql library
sql/ha_heap.cc:
Fix of HEAP bug with range keys
sql/ha_heap.h:
Fix of HEAP bug with range keys
sql/handler.cc:
Optimizing
sql/handler.h:
Optimizing
sql/lock.cc:
More DEBUG + fix of RENAME bug
sql/mini_client.cc:
Fix for Ia64
sql/mysql_priv.h:
Fix for name locks
sql/mysqld.cc:
Shorter message if wrong options
sql/opt_range.cc:
Added TODO
sql/sql_base.cc:
Fix for DROP TABLE
sql/sql_parse.cc:
Fix of permission checking for CHECK TABLE
sql/sql_select.cc:
Fix of using LEFT JOIN with empty table
sql/table.h:
Fix for name locks
tests/fork_test.pl:
Fixed typo
Diffstat (limited to 'sql/sql_parse.cc')
-rw-r--r-- | sql/sql_parse.cc | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 8b7e16709c0..97e67127fd0 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -1170,9 +1170,8 @@ mysql_execute_command(void) #endif case SQLCOM_REPAIR: { - if (!tables->db) - tables->db=thd->db; - if (check_table_access(thd,SELECT_ACL | INSERT_ACL, tables)) + if (check_db_used(thd,tables) || + check_table_access(thd,SELECT_ACL | INSERT_ACL, tables)) goto error; /* purecov: inspected */ res = mysql_repair_table(thd, tables, &lex->check_opt); break; @@ -1695,6 +1694,10 @@ error: ** Get the user (global) and database privileges for all used tables ** Returns true (error) if we can't get the privileges and we don't use ** table/column grants. +** The idea of EXTRA_ACL is that one will be granted access to the table if +** one has the asked privilege on any column combination of the table; For +** example to be able to check a table one needs to have SELECT privilege on +** any column of the table. ****************************************************************************/ bool @@ -1760,7 +1763,8 @@ check_table_access(THD *thd,uint want_access,TABLE_LIST *tables) TABLE_LIST *org_tables=tables; for (; tables ; tables=tables->next) { - if ((thd->master_access & want_access) == want_access && thd->db) + if ((thd->master_access & want_access) == (want_access & ~EXTRA_ACL) && + thd->db) tables->grant.privilege= want_access; else if (tables->db && tables->db == thd->db) { |