Commit 1d0d71b0 authored by unknown's avatar unknown
Browse files

Merge bk-internal.mysql.com:/home/bk/mysql-5.0

into  mysql.com:/home/alik/Documents/AllProgs/MySQL/devel/5.0-bug13095

parents d91f4dea 33d5d4ad
Loading
Loading
Loading
Loading
+43 −0
Original line number Diff line number Diff line
@@ -3532,4 +3532,47 @@ select @a|
Local
drop function bug13941|
drop procedure bug13941|
DROP PROCEDURE IF EXISTS bug13095;
DROP TABLE IF EXISTS bug13095_t1;
DROP VIEW IF EXISTS bug13095_v1;
CREATE PROCEDURE bug13095(tbl_name varchar(32))
BEGIN
SET @str =
CONCAT("CREATE TABLE ", tbl_name, "(stuff char(15))");
SELECT @str;
PREPARE stmt FROM @str;
EXECUTE stmt;
SET @str =
CONCAT("INSERT INTO ", tbl_name, " VALUES('row1'),('row2'),('row3')" );
SELECT @str;
PREPARE stmt FROM @str;
EXECUTE stmt;
SET @str =
CONCAT("CREATE VIEW bug13095_v1(c1) AS SELECT stuff FROM ", tbl_name);
SELECT @str;
PREPARE stmt FROM @str;
EXECUTE stmt;
SELECT * FROM bug13095_v1;
SET @str =
"DROP VIEW bug13095_v1";
SELECT @str;
PREPARE stmt FROM @str;
EXECUTE stmt;
END|
CALL bug13095('bug13095_t1');
@str
CREATE TABLE bug13095_t1(stuff char(15))
@str
INSERT INTO bug13095_t1 VALUES('row1'),('row2'),('row3')
@str
CREATE VIEW bug13095_v1(c1) AS SELECT stuff FROM bug13095_t1
c1
row1
row2
row3
@str
DROP VIEW bug13095_v1
DROP PROCEDURE IF EXISTS bug13095;
DROP VIEW IF EXISTS bug13095_v1;
DROP TABLE IF EXISTS bug13095_t1;
drop table t1,t2;
+56 −0
Original line number Diff line number Diff line
@@ -4433,6 +4433,62 @@ drop function bug13941|
drop procedure bug13941|


#
# BUG#13095: Cannot create VIEWs in prepared statements
#

delimiter ;|

--disable_warnings
DROP PROCEDURE IF EXISTS bug13095;
DROP TABLE IF EXISTS bug13095_t1;
DROP VIEW IF EXISTS bug13095_v1;
--enable_warnings

delimiter |;

CREATE PROCEDURE bug13095(tbl_name varchar(32))
BEGIN
  SET @str =
    CONCAT("CREATE TABLE ", tbl_name, "(stuff char(15))");
  SELECT @str;
  PREPARE stmt FROM @str;
  EXECUTE stmt;

  SET @str =
    CONCAT("INSERT INTO ", tbl_name, " VALUES('row1'),('row2'),('row3')" );
  SELECT @str;
  PREPARE stmt FROM @str;
  EXECUTE stmt;

  SET @str =
    CONCAT("CREATE VIEW bug13095_v1(c1) AS SELECT stuff FROM ", tbl_name);
  SELECT @str;
  PREPARE stmt FROM @str;
  EXECUTE stmt;

  SELECT * FROM bug13095_v1;

  SET @str =
    "DROP VIEW bug13095_v1";
  SELECT @str;
  PREPARE stmt FROM @str;
  EXECUTE stmt;
END|

delimiter ;|

CALL bug13095('bug13095_t1');

--disable_warnings
DROP PROCEDURE IF EXISTS bug13095;
DROP VIEW IF EXISTS bug13095_v1;
DROP TABLE IF EXISTS bug13095_t1;
--enable_warnings

delimiter |;


#
# BUG#NNNN: New bug synopsis
#
+1 −0
Original line number Diff line number Diff line
@@ -738,6 +738,7 @@ typedef struct st_lex
  /* store original leaf_tables for INSERT SELECT and PS/SP */
  TABLE_LIST *leaf_tables_insert;
  st_lex_user *create_view_definer;
  char *create_view_start;
  char *create_view_select_start;

  List<key_part_spec> col_list;
+2 −0
Original line number Diff line number Diff line
@@ -1742,6 +1742,8 @@ static bool check_prepared_statement(Prepared_statement *stmt,
  case SQLCOM_ROLLBACK:
  case SQLCOM_TRUNCATE:
  case SQLCOM_CALL:
  case SQLCOM_CREATE_VIEW:
  case SQLCOM_DROP_VIEW:
    break;

  default:
+2 −1
Original line number Diff line number Diff line
@@ -643,7 +643,8 @@ static int mysql_register_view(THD *thd, TABLE_LIST *view,
  view->query.length= str.length()-1; // we do not need last \0
  view->source.str= thd->lex->create_view_select_start;
  view->source.length= (thd->query_length -
                        (thd->lex->create_view_select_start - thd->query));
                        (thd->lex->create_view_select_start -
                         thd->lex->create_view_start));
  view->file_version= 1;
  view->calc_md5(md5);
  view->md5.str= md5;
Loading