summaryrefslogtreecommitdiff
path: root/sql/sql_parse.cc
diff options
context:
space:
mode:
authorunknown <monty@donna.mysql.com>2000-08-29 12:31:01 +0300
committerunknown <monty@donna.mysql.com>2000-08-29 12:31:01 +0300
commit52046a7ba3c00111bf27195197b486a9ef558416 (patch)
tree8c9e3c031400ac400edcf6561fe51f4bdbd69369 /sql/sql_parse.cc
parent844c92364e04fb17371c4a71dee52f179f8ad253 (diff)
downloadmariadb-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.cc12
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)
{