mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 12:02:42 +01:00
Merge adventure.(none):/home/thek/Development/cpp/bug28846/my50-bug28846
into adventure.(none):/home/thek/Development/cpp/mysql-5.0-runtime
This commit is contained in:
commit
ccfd0847fc
11 changed files with 72 additions and 21 deletions
|
@ -396,6 +396,8 @@ prepare stmt1 from ' execute stmt2 ' ;
|
|||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt1 from ' deallocate prepare never_prepared ' ;
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt1 from 'alter view v1 as select 2';
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt4 from ' use test ' ;
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt3 from ' create database mysqltest ';
|
||||
|
|
|
@ -87,6 +87,10 @@ prepare stmt from "create table t1 (a int)";
|
|||
execute stmt;
|
||||
insert into t1 (a) values (1);
|
||||
select * from t1;
|
||||
prepare stmt_alter from "alter table t1 add (b int)";
|
||||
execute stmt_alter;
|
||||
insert into t1 (a,b) values (2,1);
|
||||
deallocate prepare stmt_alter;
|
||||
deallocate prepare stmt;
|
||||
deallocate prepare stmt_drop;
|
||||
end|
|
||||
|
@ -245,6 +249,9 @@ a
|
|||
1
|
||||
drop procedure p1|
|
||||
drop table if exists t1|
|
||||
drop table if exists t2|
|
||||
Warnings:
|
||||
Note 1051 Unknown table 't2'
|
||||
create table t1 (id integer primary key auto_increment,
|
||||
stmt_text char(35), status varchar(20))|
|
||||
insert into t1 (stmt_text) values
|
||||
|
@ -255,7 +262,10 @@ insert into t1 (stmt_text) values
|
|||
("help help"), ("show databases"), ("show tables"),
|
||||
("show table status"), ("show open tables"), ("show storage engines"),
|
||||
("insert into t1 (id) values (1)"), ("update t1 set status=''"),
|
||||
("delete from t1"), ("truncate t1"), ("call p1()"), ("foo bar")|
|
||||
("delete from t1"), ("truncate t1"), ("call p1()"), ("foo bar"),
|
||||
("create view v1 as select 1"), ("alter view v1 as select 2"),
|
||||
("drop view v1"),("create table t2 (a int)"),("alter table t2 add (b int)"),
|
||||
("drop table t2")|
|
||||
create procedure p1()
|
||||
begin
|
||||
declare v_stmt_text varchar(255);
|
||||
|
@ -305,6 +315,12 @@ id stmt_text status
|
|||
20 truncate t1 supported
|
||||
21 call p1() supported
|
||||
22 foo bar syntax error
|
||||
23 create view v1 as select 1 supported
|
||||
24 alter view v1 as select 2 not supported
|
||||
25 drop view v1 supported
|
||||
26 create table t2 (a int) supported
|
||||
27 alter table t2 add (b int) supported
|
||||
28 drop table t2 supported
|
||||
drop procedure p1|
|
||||
drop table t1|
|
||||
prepare stmt from 'select 1'|
|
||||
|
|
|
@ -982,9 +982,9 @@ ERROR HY000: Explicit or implicit commit is not allowed in stored function or tr
|
|||
CREATE FUNCTION bug_13627_f() returns int BEGIN create view v1 as select 1; return 1; END |
|
||||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN alter view v1 as select 1; END |
|
||||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||||
ERROR 0A000: ALTER VIEW is not allowed in stored procedures
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN alter view v1 as select 1; return 1; END |
|
||||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||||
ERROR 0A000: ALTER VIEW is not allowed in stored procedures
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN drop view v1; END |
|
||||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN drop view v1; return 1; END |
|
||||
|
|
|
@ -423,6 +423,10 @@ prepare stmt1 from ' execute stmt2 ' ;
|
|||
--error ER_UNSUPPORTED_PS
|
||||
prepare stmt1 from ' deallocate prepare never_prepared ' ;
|
||||
|
||||
## We don't support alter view as prepared statements
|
||||
--error ER_UNSUPPORTED_PS
|
||||
prepare stmt1 from 'alter view v1 as select 2';
|
||||
|
||||
## switch the database connection
|
||||
--error 1295
|
||||
prepare stmt4 from ' use test ' ;
|
||||
|
|
|
@ -85,7 +85,7 @@ call p1()|
|
|||
call p1()|
|
||||
drop procedure p1|
|
||||
#
|
||||
# D. Create/Drop a table (a DDL that issues a commit) in Dynamic SQL.
|
||||
# D. Create/Drop/Alter a table (a DDL that issues a commit) in Dynamic SQL.
|
||||
# (should work ok).
|
||||
#
|
||||
create procedure p1()
|
||||
|
@ -96,6 +96,10 @@ begin
|
|||
execute stmt;
|
||||
insert into t1 (a) values (1);
|
||||
select * from t1;
|
||||
prepare stmt_alter from "alter table t1 add (b int)";
|
||||
execute stmt_alter;
|
||||
insert into t1 (a,b) values (2,1);
|
||||
deallocate prepare stmt_alter;
|
||||
deallocate prepare stmt;
|
||||
deallocate prepare stmt_drop;
|
||||
end|
|
||||
|
@ -239,6 +243,7 @@ drop procedure p1|
|
|||
# K. Use of continue handlers with Dynamic SQL.
|
||||
#
|
||||
drop table if exists t1|
|
||||
drop table if exists t2|
|
||||
create table t1 (id integer primary key auto_increment,
|
||||
stmt_text char(35), status varchar(20))|
|
||||
insert into t1 (stmt_text) values
|
||||
|
@ -249,7 +254,10 @@ insert into t1 (stmt_text) values
|
|||
("help help"), ("show databases"), ("show tables"),
|
||||
("show table status"), ("show open tables"), ("show storage engines"),
|
||||
("insert into t1 (id) values (1)"), ("update t1 set status=''"),
|
||||
("delete from t1"), ("truncate t1"), ("call p1()"), ("foo bar")|
|
||||
("delete from t1"), ("truncate t1"), ("call p1()"), ("foo bar"),
|
||||
("create view v1 as select 1"), ("alter view v1 as select 2"),
|
||||
("drop view v1"),("create table t2 (a int)"),("alter table t2 add (b int)"),
|
||||
("drop table t2")|
|
||||
create procedure p1()
|
||||
begin
|
||||
declare v_stmt_text varchar(255);
|
||||
|
|
|
@ -1087,12 +1087,12 @@ delimiter ;|
|
|||
#
|
||||
# BUG 12490 (Packets out of order if calling HELP CONTENTS from Stored Procedure)
|
||||
#
|
||||
--error 1314
|
||||
--error ER_SP_BADSTATEMENT
|
||||
CREATE PROCEDURE BUG_12490() HELP CONTENTS;
|
||||
--error 1314
|
||||
--error ER_SP_BADSTATEMENT
|
||||
CREATE FUNCTION BUG_12490() RETURNS INT HELP CONTENTS;
|
||||
CREATE TABLE t_bug_12490(a int);
|
||||
--error 1314
|
||||
--error ER_SP_BADSTATEMENT
|
||||
CREATE TRIGGER BUG_12490 BEFORE UPDATE ON t_bug_12490 FOR EACH ROW HELP CONTENTS;
|
||||
DROP TABLE t_bug_12490;
|
||||
|
||||
|
@ -1397,9 +1397,9 @@ CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN create view v1 as sele
|
|||
-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN create view v1 as select 1; return 1; END |
|
||||
|
||||
-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
|
||||
-- error ER_SP_BADSTATEMENT
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN alter view v1 as select 1; END |
|
||||
-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
|
||||
-- error ER_SP_BADSTATEMENT
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN alter view v1 as select 1; return 1; END |
|
||||
|
||||
-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
|
||||
|
|
|
@ -697,6 +697,13 @@ public:
|
|||
#ifndef DBUG_OFF
|
||||
bool is_backup_arena; /* True if this arena is used for backup. */
|
||||
#endif
|
||||
/*
|
||||
The states relfects three diffrent life cycles for three
|
||||
different types of statements:
|
||||
Prepared statement: INITIALIZED -> PREPARED -> EXECUTED.
|
||||
Stored procedure: INITIALIZED_FOR_SP -> EXECUTED.
|
||||
Other statements: CONVENTIONAL_EXECUTION never changes.
|
||||
*/
|
||||
enum enum_state
|
||||
{
|
||||
INITIALIZED= 0, INITIALIZED_FOR_SP= 1, PREPARED= 2,
|
||||
|
|
|
@ -4882,6 +4882,10 @@ create_sp_error:
|
|||
#endif // ifndef DBUG_OFF
|
||||
case SQLCOM_CREATE_VIEW:
|
||||
{
|
||||
/*
|
||||
Note: SQLCOM_CREATE_VIEW also handles 'ALTER VIEW' commands
|
||||
as specified through the thd->lex->create_view_mode flag.
|
||||
*/
|
||||
if (end_active_trans(thd))
|
||||
goto error;
|
||||
|
||||
|
|
|
@ -1724,6 +1724,13 @@ static bool check_prepared_statement(Prepared_statement *stmt,
|
|||
res= mysql_test_create_table(stmt);
|
||||
break;
|
||||
|
||||
case SQLCOM_CREATE_VIEW:
|
||||
if (lex->create_view_mode == VIEW_ALTER)
|
||||
{
|
||||
my_message(ER_UNSUPPORTED_PS, ER(ER_UNSUPPORTED_PS), MYF(0));
|
||||
goto error;
|
||||
}
|
||||
break;
|
||||
case SQLCOM_DO:
|
||||
res= mysql_test_do_fields(stmt, tables, lex->insert_list);
|
||||
break;
|
||||
|
@ -1766,7 +1773,6 @@ 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:
|
||||
case SQLCOM_REPAIR:
|
||||
case SQLCOM_ANALYZE:
|
||||
|
|
|
@ -205,18 +205,17 @@ fill_defined_view_parts (THD *thd, TABLE_LIST *view)
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
Creating/altering VIEW procedure
|
||||
/**
|
||||
@brief Creating/altering VIEW procedure
|
||||
|
||||
SYNOPSIS
|
||||
mysql_create_view()
|
||||
thd - thread handler
|
||||
views - views to create
|
||||
mode - VIEW_CREATE_NEW, VIEW_ALTER, VIEW_CREATE_OR_REPLACE
|
||||
@param thd thread handler
|
||||
@param views views to create
|
||||
@param mode VIEW_CREATE_NEW, VIEW_ALTER, VIEW_CREATE_OR_REPLACE
|
||||
|
||||
RETURN VALUE
|
||||
FALSE OK
|
||||
TRUE Error
|
||||
@note This function handles both create and alter view commands.
|
||||
|
||||
@retval FALSE Operation was a success.
|
||||
@retval TRUE An error occured.
|
||||
*/
|
||||
|
||||
bool mysql_create_view(THD *thd, TABLE_LIST *views,
|
||||
|
|
|
@ -3671,6 +3671,11 @@ alter:
|
|||
{
|
||||
THD *thd= YYTHD;
|
||||
LEX *lex= thd->lex;
|
||||
if (lex->sphead)
|
||||
{
|
||||
my_error(ER_SP_BADSTATEMENT, MYF(0), "ALTER VIEW");
|
||||
MYSQL_YYABORT;
|
||||
}
|
||||
lex->sql_command= SQLCOM_CREATE_VIEW;
|
||||
lex->create_view_mode= VIEW_ALTER;
|
||||
/* first table in list is target VIEW name */
|
||||
|
|
Loading…
Reference in a new issue