Commit b224e52c authored by unknown's avatar unknown
Browse files

Merge lmy004.:/work/mysql-5.0-clean

into lmy004.:/work/mysql-5.0-bug12533-2


mysql-test/r/view.result:
  Auto merged
sql/sql_show.cc:
  Auto merged
parents ea199d52 750a0588
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -2115,3 +2115,15 @@ CREATE VIEW v1 AS SELECT f1();
ERROR HY000: View's SELECT refers to a temporary table 't1'
DROP FUNCTION f1;
DROP TABLE t1;
DROP TABLE IF EXISTS t1;
DROP VIEW  IF EXISTS v1;
CREATE TABLE t1 (f4 CHAR(5));
CREATE VIEW v1 AS SELECT * FROM t1;
DESCRIBE v1;
Field	Type	Null	Key	Default	Extra
f4	char(5)	YES		NULL	
ALTER TABLE t1 CHANGE COLUMN f4 f4x CHAR(5);
DESCRIBE v1;
ERROR HY000: View 'test.v1' references invalid table(s) or column(s) or function(s)
DROP TABLE t1;
DROP VIEW v1;
+17 −0
Original line number Diff line number Diff line
@@ -1966,3 +1966,20 @@ CREATE VIEW v1 AS SELECT f1();
DROP FUNCTION f1;
DROP TABLE t1;

#
# BUG #12533 (crash on DESCRIBE <view> after renaming base table column)
#
--disable_warnings
DROP TABLE IF EXISTS t1;
DROP VIEW  IF EXISTS v1;
--enable_warnings

CREATE TABLE t1 (f4 CHAR(5));
CREATE VIEW v1 AS SELECT * FROM t1;
DESCRIBE v1;

ALTER TABLE t1 CHANGE COLUMN f4 f4x CHAR(5);
--error 1356
DESCRIBE v1;
DROP TABLE t1;
DROP VIEW v1;
+10 −7
Original line number Diff line number Diff line
@@ -1985,13 +1985,15 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond)
    lex->all_selects_list= lsel;
    res= open_normal_and_derived_tables(thd, show_table_list,
                                        MYSQL_LOCK_IGNORE_FLUSH);
    if (schema_table->process_table(thd, show_table_list,
    /*
      get_all_tables() returns 1 on failure and 0 on success thus
      return only these and not the result code of ::process_table()
    */
    error= test(schema_table->process_table(thd, show_table_list,
                                    table, res, show_table_list->db,
                                    show_table_list->alias))
      goto err;
                                    show_table_list->alias));
    close_thread_tables(thd);
    show_table_list->table= 0;
    error= 0;
    goto err;
  }

@@ -2090,11 +2092,12 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond)
            lex->derived_tables= 0;
            res= open_normal_and_derived_tables(thd, show_table_list,
                                                MYSQL_LOCK_IGNORE_FLUSH);
            if (schema_table->process_table(thd, show_table_list, table,
            res= schema_table->process_table(thd, show_table_list, table,
                                            res, base_name,
                                            show_table_list->alias))
              goto err;
                                            show_table_list->alias);
            close_thread_tables(thd);
            if (res)
              goto err;
          }
        }
      }