mirror of
https://github.com/MariaDB/server.git
synced 2025-06-26 17:42:13 +03:00
Merge rurik.mysql.com:/home/igor/mysql-5.0
into rurik.mysql.com:/home/igor/dev/mysql-5.0-0 sql/handler.h: Auto merged sql/sql_table.cc: Auto merged
This commit is contained in:
@ -2335,3 +2335,22 @@ f1 group_concat(f2 order by f2 desc)
|
|||||||
1 3,2,1
|
1 3,2,1
|
||||||
drop view v1,v2;
|
drop view v1,v2;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
CREATE TABLE t1(id INT);
|
||||||
|
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;
|
||||||
|
@ -2200,3 +2200,17 @@ select * from v1;
|
|||||||
select * from v2;
|
select * from v2;
|
||||||
drop view v1,v2;
|
drop view v1,v2;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
# Bug #14540: OPTIMIZE, ANALYZE, REPAIR applied to not a view
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE t1(id INT);
|
||||||
|
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_REJECT -6
|
||||||
#define HA_ADMIN_TRY_ALTER -7
|
#define HA_ADMIN_TRY_ALTER -7
|
||||||
#define HA_ADMIN_WRONG_CHECKSUM -8
|
#define HA_ADMIN_WRONG_CHECKSUM -8
|
||||||
|
#define HA_ADMIN_NOT_BASE_TABLE -9
|
||||||
|
|
||||||
/* Bits in table_flags() to show what database can do */
|
/* 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)"
|
eng "Cannot add or update a child row: a foreign key constraint fails (%.192s)"
|
||||||
ER_SP_BAD_VAR_SHADOW 42000
|
ER_SP_BAD_VAR_SHADOW 42000
|
||||||
eng "Variable '%-.64s' must be quoted with `...`, or renamed"
|
eng "Variable '%-.64s' must be quoted with `...`, or renamed"
|
||||||
|
ER_CHECK_NOT_BASE_TABLE 42000
|
||||||
|
eng "You cannot apply %s to a view"
|
||||||
|
@ -2196,7 +2196,7 @@ static bool mysql_admin_table(THD* thd, TABLE_LIST* tables,
|
|||||||
/* if view are unsupported */
|
/* if view are unsupported */
|
||||||
if (table->view && view_operator_func == NULL)
|
if (table->view && view_operator_func == NULL)
|
||||||
{
|
{
|
||||||
result_code= HA_ADMIN_NOT_IMPLEMENTED;
|
result_code= HA_ADMIN_NOT_BASE_TABLE;
|
||||||
goto send_result;
|
goto send_result;
|
||||||
}
|
}
|
||||||
thd->open_options&= ~extra_open_options;
|
thd->open_options&= ~extra_open_options;
|
||||||
@ -2331,6 +2331,16 @@ send_result_message:
|
|||||||
}
|
}
|
||||||
break;
|
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:
|
case HA_ADMIN_OK:
|
||||||
protocol->store("status", 6, system_charset_info);
|
protocol->store("status", 6, system_charset_info);
|
||||||
protocol->store("OK",2, system_charset_info);
|
protocol->store("OK",2, system_charset_info);
|
||||||
@ -2431,6 +2441,8 @@ send_result_message:
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (table->table)
|
||||||
|
{
|
||||||
if (fatal_error)
|
if (fatal_error)
|
||||||
table->table->s->version=0; // Force close of table
|
table->table->s->version=0; // Force close of table
|
||||||
else if (open_for_modify)
|
else if (open_for_modify)
|
||||||
@ -2439,9 +2451,10 @@ send_result_message:
|
|||||||
remove_table_from_cache(thd, table->table->s->db,
|
remove_table_from_cache(thd, table->table->s->db,
|
||||||
table->table->s->table_name, RTFC_NO_FLAG);
|
table->table->s->table_name, RTFC_NO_FLAG);
|
||||||
pthread_mutex_unlock(&LOCK_open);
|
pthread_mutex_unlock(&LOCK_open);
|
||||||
/* May be something modified consequently we have to invalidate cache */
|
/* Something may be modified, that's why we have to invalidate cache */
|
||||||
query_cache_invalidate3(thd, table->table, 0);
|
query_cache_invalidate3(thd, table->table, 0);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
close_thread_tables(thd);
|
close_thread_tables(thd);
|
||||||
table->table=0; // For query cache
|
table->table=0; // For query cache
|
||||||
if (protocol->write())
|
if (protocol->write())
|
||||||
|
Reference in New Issue
Block a user