1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

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
This commit is contained in:
unknown
2000-08-29 12:31:01 +03:00
parent 844c92364e
commit 52046a7ba3
33 changed files with 909 additions and 211 deletions

View File

@ -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)
{