Commit ae68221d authored by unknown's avatar unknown
Browse files

Merge rurik.mysql.com:/home/igor/mysql-5.0

into  rurik.mysql.com:/home/igor/dev/mysql-5.0-0

parents b45cdbbd 8a809365
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -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;
+15 −0
Original line number Diff line number Diff line
@@ -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;
+1 −0
Original line number Diff line number Diff line
@@ -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 */

+2 −0
Original line number Diff line number Diff line
@@ -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"
+23 −10
Original line number Diff line number Diff line
@@ -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 @@ static bool mysql_admin_table(THD* thd, TABLE_LIST* tables,
      }
      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,6 +2434,8 @@ static bool mysql_admin_table(THD* thd, TABLE_LIST* tables,
        break;
      }
    }
    if (table->table)
    {
      if (fatal_error)
        table->table->s->version=0;               // Force close of table
      else if (open_for_modify)
@@ -2432,9 +2444,10 @@ static bool mysql_admin_table(THD* thd, TABLE_LIST* tables,
        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 */
        /* 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
    if (protocol->write())