mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 13:32:33 +01:00
Merge rurik.mysql.com:/home/igor/mysql-5.0
into rurik.mysql.com:/home/igor/dev/mysql-5.0-0
This commit is contained in:
commit
cb439945c0
5 changed files with 60 additions and 10 deletions
|
@ -2323,3 +2323,22 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
1 PRIMARY t3 ALL NULL NULL NULL NULL 3 Using where
|
||||
DROP VIEW v1,v2;
|
||||
DROP TABLE t1,t2,t3;
|
||||
CREATE TABLE t1(id INT) ENGINE=MyISAM;
|
||||
CREATE VIEW v1 AS SELECT id FROM t1;
|
||||
OPTIMIZE TABLE v1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.v1 optimize note You cannot apply optimize to a view
|
||||
ANALYZE TABLE v1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.v1 analyze note You cannot apply analyze to a view
|
||||
REPAIR TABLE v1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.v1 repair note You cannot apply repair to a view
|
||||
DROP TABLE t1;
|
||||
OPTIMIZE TABLE v1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.v1 optimize note You cannot apply optimize to a view
|
||||
Warnings:
|
||||
Error 1146 Table 'test.t1' doesn't exist
|
||||
Error 1356 View 'test.v1' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
|
||||
DROP VIEW v1;
|
||||
|
|
|
@ -2189,4 +2189,19 @@ EXPLAIN SELECT * FROM v2 WHERE a=1;
|
|||
DROP VIEW v1,v2;
|
||||
DROP TABLE t1,t2,t3;
|
||||
|
||||
#
|
||||
# Bug #14540: OPTIMIZE, ANALYZE, REPAIR applied to not a view
|
||||
#
|
||||
|
||||
CREATE TABLE t1(id INT) ENGINE=MyISAM;
|
||||
CREATE VIEW v1 AS SELECT id FROM t1;
|
||||
|
||||
OPTIMIZE TABLE v1;
|
||||
ANALYZE TABLE v1;
|
||||
REPAIR TABLE v1;
|
||||
|
||||
DROP TABLE t1;
|
||||
OPTIMIZE TABLE v1;
|
||||
|
||||
DROP VIEW v1;
|
||||
|
||||
|
|
|
@ -45,6 +45,7 @@
|
|||
#define HA_ADMIN_REJECT -6
|
||||
#define HA_ADMIN_TRY_ALTER -7
|
||||
#define HA_ADMIN_WRONG_CHECKSUM -8
|
||||
#define HA_ADMIN_NOT_BASE_TABLE -9
|
||||
|
||||
/* Bits in table_flags() to show what database can do */
|
||||
|
||||
|
|
|
@ -5421,3 +5421,5 @@ ER_NO_REFERENCED_ROW_2 23000
|
|||
eng "Cannot add or update a child row: a foreign key constraint fails (%.192s)"
|
||||
ER_SP_BAD_VAR_SHADOW 42000
|
||||
eng "Variable '%-.64s' must be quoted with `...`, or renamed"
|
||||
ER_CHECK_NOT_BASE_TABLE 4200
|
||||
eng "You cannot apply %s to a view"
|
||||
|
|
|
@ -2189,7 +2189,7 @@ static bool mysql_admin_table(THD* thd, TABLE_LIST* tables,
|
|||
/* if view are unsupported */
|
||||
if (table->view && view_operator_func == NULL)
|
||||
{
|
||||
result_code= HA_ADMIN_NOT_IMPLEMENTED;
|
||||
result_code= HA_ADMIN_NOT_BASE_TABLE;
|
||||
goto send_result;
|
||||
}
|
||||
thd->open_options&= ~extra_open_options;
|
||||
|
@ -2324,6 +2324,16 @@ send_result_message:
|
|||
}
|
||||
break;
|
||||
|
||||
case HA_ADMIN_NOT_BASE_TABLE:
|
||||
{
|
||||
char buf[ERRMSGSIZE+20];
|
||||
uint length=my_snprintf(buf, ERRMSGSIZE,
|
||||
ER(ER_CHECK_NOT_BASE_TABLE), operator_name);
|
||||
protocol->store("note", 4, system_charset_info);
|
||||
protocol->store(buf, length, system_charset_info);
|
||||
}
|
||||
break;
|
||||
|
||||
case HA_ADMIN_OK:
|
||||
protocol->store("status", 6, system_charset_info);
|
||||
protocol->store("OK",2, system_charset_info);
|
||||
|
@ -2424,16 +2434,19 @@ send_result_message:
|
|||
break;
|
||||
}
|
||||
}
|
||||
if (fatal_error)
|
||||
table->table->s->version=0; // Force close of table
|
||||
else if (open_for_modify)
|
||||
if (table->table)
|
||||
{
|
||||
pthread_mutex_lock(&LOCK_open);
|
||||
remove_table_from_cache(thd, table->table->s->db,
|
||||
table->table->s->table_name, RTFC_NO_FLAG);
|
||||
pthread_mutex_unlock(&LOCK_open);
|
||||
/* May be something modified consequently we have to invalidate cache */
|
||||
query_cache_invalidate3(thd, table->table, 0);
|
||||
if (fatal_error)
|
||||
table->table->s->version=0; // Force close of table
|
||||
else if (open_for_modify)
|
||||
{
|
||||
pthread_mutex_lock(&LOCK_open);
|
||||
remove_table_from_cache(thd, table->table->s->db,
|
||||
table->table->s->table_name, RTFC_NO_FLAG);
|
||||
pthread_mutex_unlock(&LOCK_open);
|
||||
/* Something may be modified, that's why we have to invalidate cache */
|
||||
query_cache_invalidate3(thd, table->table, 0);
|
||||
}
|
||||
}
|
||||
close_thread_tables(thd);
|
||||
table->table=0; // For query cache
|
||||
|
|
Loading…
Reference in a new issue