mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Merge bk-internal:/home/bk/mysql-5.1
into neptunus.(none):/home/msvensson/mysql/mysql-5.1 client/mysqltest.c: Auto merged
This commit is contained in:
@ -558,3 +558,12 @@ DROP TABLE t1,t2;
|
||||
select * from (select group_concat('c') from DUAL) t;
|
||||
group_concat('c')
|
||||
NULL
|
||||
create table t1 ( a int not null default 0);
|
||||
select * from (select group_concat(a) from t1) t2;
|
||||
group_concat(a)
|
||||
NULL
|
||||
select group_concat('x') UNION ALL select 1;
|
||||
group_concat('x')
|
||||
NULL
|
||||
1
|
||||
drop table t1;
|
||||
|
@ -16,103 +16,103 @@ create view v1Aa as select * from t1aA;
|
||||
create view v2aA as select * from v1aA;
|
||||
create view v3Aa as select v2Aa.col1 from v2aA,t2Aa where v2Aa.col1 = t2aA.col1;
|
||||
update v2aA set col1 = (select max(col1) from v1Aa);
|
||||
ERROR HY000: You can't specify target table 'v2aa' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v1Aa' prevents operation UPDATE on table 'v2aA'.
|
||||
update v2Aa set col1 = (select max(col1) from t1Aa);
|
||||
ERROR HY000: You can't specify target table 'v2aa' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v2Aa' prevents operation UPDATE on table 'v2Aa'.
|
||||
update v2aA set col1 = (select max(col1) from v2Aa);
|
||||
ERROR HY000: You can't specify target table 'v2aa' for update in FROM clause
|
||||
ERROR HY000: You can't specify target table 'v2aA' for update in FROM clause
|
||||
update v2aA,t2Aa set v2Aa.col1 = (select max(col1) from v1aA) where v2aA.col1 = t2aA.col1;
|
||||
ERROR HY000: You can't specify target table 'v2aa' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v1aA' prevents operation UPDATE on table 'v2aA'.
|
||||
update t1aA,t2Aa set t1Aa.col1 = (select max(col1) from v1Aa) where t1aA.col1 = t2aA.col1;
|
||||
ERROR HY000: You can't specify target table 't1aa' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v1Aa' prevents operation UPDATE on table 't1aA'.
|
||||
update v1aA,t2Aa set v1Aa.col1 = (select max(col1) from v1aA) where v1Aa.col1 = t2aA.col1;
|
||||
ERROR HY000: You can't specify target table 'v1aa' for update in FROM clause
|
||||
ERROR HY000: You can't specify target table 'v1aA' for update in FROM clause
|
||||
update t2Aa,v2Aa set v2aA.col1 = (select max(col1) from v1aA) where v2Aa.col1 = t2aA.col1;
|
||||
ERROR HY000: You can't specify target table 't2aa' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v1aA' prevents operation UPDATE on table 't2Aa'.
|
||||
update t2Aa,t1Aa set t1aA.col1 = (select max(col1) from v1Aa) where t1Aa.col1 = t2aA.col1;
|
||||
ERROR HY000: You can't specify target table 't2aa' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v1Aa' prevents operation UPDATE on table 't2Aa'.
|
||||
update t2Aa,v1aA set v1Aa.col1 = (select max(col1) from v1aA) where v1Aa.col1 = t2aA.col1;
|
||||
ERROR HY000: You can't specify target table 't2aa' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v1aA' prevents operation UPDATE on table 't2Aa'.
|
||||
update v2aA,t2Aa set v2Aa.col1 = (select max(col1) from t1aA) where v2aA.col1 = t2aA.col1;
|
||||
ERROR HY000: You can't specify target table 'v2aa' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v2aA' prevents operation UPDATE on table 'v2aA'.
|
||||
update t1Aa,t2Aa set t1aA.col1 = (select max(col1) from t1Aa) where t1aA.col1 = t2aA.col1;
|
||||
ERROR HY000: You can't specify target table 't1aa' for update in FROM clause
|
||||
ERROR HY000: You can't specify target table 't1Aa' for update in FROM clause
|
||||
update v1aA,t2Aa set v1Aa.col1 = (select max(col1) from t1Aa) where v1aA.col1 = t2aA.col1;
|
||||
ERROR HY000: You can't specify target table 'v1aa' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v1aA' prevents operation UPDATE on table 'v1aA'.
|
||||
update t2Aa,v2Aa set v2aA.col1 = (select max(col1) from t1aA) where v2Aa.col1 = t2aA.col1;
|
||||
ERROR HY000: You can't specify target table 't2aa' for update in FROM clause
|
||||
ERROR HY000: You can't specify target table 't2Aa' for update in FROM clause
|
||||
update t2Aa,t1Aa set t1aA.col1 = (select max(col1) from t1Aa) where t1aA.col1 = t2aA.col1;
|
||||
ERROR HY000: You can't specify target table 't2aa' for update in FROM clause
|
||||
ERROR HY000: You can't specify target table 't2Aa' for update in FROM clause
|
||||
update t2Aa,v1Aa set v1aA.col1 = (select max(col1) from t1Aa) where v1Aa.col1 = t2aA.col1;
|
||||
ERROR HY000: You can't specify target table 't2aa' for update in FROM clause
|
||||
ERROR HY000: You can't specify target table 't2Aa' for update in FROM clause
|
||||
update v2aA,t2Aa set v2Aa.col1 = (select max(col1) from v2aA) where v2Aa.col1 = t2aA.col1;
|
||||
ERROR HY000: You can't specify target table 'v2aa' for update in FROM clause
|
||||
ERROR HY000: You can't specify target table 'v2aA' for update in FROM clause
|
||||
update t1aA,t2Aa set t1Aa.col1 = (select max(col1) from v2aA) where t1aA.col1 = t2aA.col1;
|
||||
ERROR HY000: You can't specify target table 't1aa' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v2aA' prevents operation UPDATE on table 't1aA'.
|
||||
update v1aA,t2Aa set v1Aa.col1 = (select max(col1) from v2Aa) where v1aA.col1 = t2aA.col1;
|
||||
ERROR HY000: You can't specify target table 'v1aa' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v2Aa' prevents operation UPDATE on table 'v1aA'.
|
||||
update t2Aa,v2aA set v2Aa.col1 = (select max(col1) from v2aA) where v2Aa.col1 = t2aA.col1;
|
||||
ERROR HY000: You can't specify target table 't2aa' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v2aA' prevents operation UPDATE on table 't2Aa'.
|
||||
update t2Aa,t1Aa set t1aA.col1 = (select max(col1) from v2aA) where t1Aa.col1 = t2aA.col1;
|
||||
ERROR HY000: You can't specify target table 't2aa' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v2aA' prevents operation UPDATE on table 't2Aa'.
|
||||
update t2Aa,v1Aa set v1aA.col1 = (select max(col1) from v2Aa) where v1Aa.col1 = t2aA.col1;
|
||||
ERROR HY000: You can't specify target table 't2aa' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v2Aa' prevents operation UPDATE on table 't2Aa'.
|
||||
update v3aA set v3Aa.col1 = (select max(col1) from v1aA);
|
||||
ERROR HY000: You can't specify target table 'v3aa' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v1aA' prevents operation UPDATE on table 'v3aA'.
|
||||
update v3aA set v3Aa.col1 = (select max(col1) from t1aA);
|
||||
ERROR HY000: You can't specify target table 'v3aa' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v3aA' prevents operation UPDATE on table 'v3aA'.
|
||||
update v3aA set v3Aa.col1 = (select max(col1) from v2aA);
|
||||
ERROR HY000: You can't specify target table 'v3aa' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v2aA' prevents operation UPDATE on table 'v3aA'.
|
||||
update v3aA set v3Aa.col1 = (select max(col1) from v3aA);
|
||||
ERROR HY000: You can't specify target table 'v3aa' for update in FROM clause
|
||||
ERROR HY000: You can't specify target table 'v3aA' for update in FROM clause
|
||||
delete from v2Aa where col1 = (select max(col1) from v1Aa);
|
||||
ERROR HY000: You can't specify target table 'v2aa' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v1Aa' prevents operation DELETE on table 'v2Aa'.
|
||||
delete from v2aA where col1 = (select max(col1) from t1Aa);
|
||||
ERROR HY000: You can't specify target table 'v2aa' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v2aA' prevents operation DELETE on table 'v2aA'.
|
||||
delete from v2Aa where col1 = (select max(col1) from v2aA);
|
||||
ERROR HY000: You can't specify target table 'v2aa' for update in FROM clause
|
||||
ERROR HY000: You can't specify target table 'v2Aa' for update in FROM clause
|
||||
delete v2Aa from v2aA,t2Aa where (select max(col1) from v1aA) > 0 and v2Aa.col1 = t2aA.col1;
|
||||
ERROR HY000: You can't specify target table 'v2aa' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v1aA' prevents operation DELETE on table 'v2aA'.
|
||||
delete t1aA from t1Aa,t2Aa where (select max(col1) from v1Aa) > 0 and t1aA.col1 = t2aA.col1;
|
||||
ERROR HY000: You can't specify target table 't1aa' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v1Aa' prevents operation DELETE on table 't1Aa'.
|
||||
delete v1aA from v1Aa,t2Aa where (select max(col1) from v1aA) > 0 and v1Aa.col1 = t2aA.col1;
|
||||
ERROR HY000: You can't specify target table 'v1aa' for update in FROM clause
|
||||
ERROR HY000: You can't specify target table 'v1Aa' for update in FROM clause
|
||||
delete v2aA from v2Aa,t2Aa where (select max(col1) from t1Aa) > 0 and v2aA.col1 = t2aA.col1;
|
||||
ERROR HY000: You can't specify target table 'v2aa' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v2Aa' prevents operation DELETE on table 'v2Aa'.
|
||||
delete t1aA from t1Aa,t2Aa where (select max(col1) from t1aA) > 0 and t1Aa.col1 = t2aA.col1;
|
||||
ERROR HY000: You can't specify target table 't1aa' for update in FROM clause
|
||||
ERROR HY000: You can't specify target table 't1Aa' for update in FROM clause
|
||||
delete v1aA from v1Aa,t2Aa where (select max(col1) from t1aA) > 0 and v1aA.col1 = t2aA.col1;
|
||||
ERROR HY000: You can't specify target table 'v1aa' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v1Aa' prevents operation DELETE on table 'v1Aa'.
|
||||
delete v2Aa from v2aA,t2Aa where (select max(col1) from v2Aa) > 0 and v2aA.col1 = t2aA.col1;
|
||||
ERROR HY000: You can't specify target table 'v2aa' for update in FROM clause
|
||||
ERROR HY000: You can't specify target table 'v2aA' for update in FROM clause
|
||||
delete t1Aa from t1aA,t2Aa where (select max(col1) from v2Aa) > 0 and t1Aa.col1 = t2aA.col1;
|
||||
ERROR HY000: You can't specify target table 't1aa' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v2Aa' prevents operation DELETE on table 't1aA'.
|
||||
delete v1Aa from v1aA,t2Aa where (select max(col1) from v2aA) > 0 and v1Aa.col1 = t2aA.col1;
|
||||
ERROR HY000: You can't specify target table 'v1aa' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v2aA' prevents operation DELETE on table 'v1aA'.
|
||||
insert into v2Aa values ((select max(col1) from v1aA));
|
||||
ERROR HY000: You can't specify target table 'v2aa' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v1aA' prevents operation INSERT on table 'v2Aa'.
|
||||
insert into t1aA values ((select max(col1) from v1Aa));
|
||||
ERROR HY000: You can't specify target table 't1aa' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v1Aa' prevents operation INSERT on table 't1aA'.
|
||||
insert into v2aA values ((select max(col1) from v1aA));
|
||||
ERROR HY000: You can't specify target table 'v2aa' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v1aA' prevents operation INSERT on table 'v2aA'.
|
||||
insert into v2Aa values ((select max(col1) from t1Aa));
|
||||
ERROR HY000: You can't specify target table 'v2aa' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v2Aa' prevents operation INSERT on table 'v2Aa'.
|
||||
insert into t1aA values ((select max(col1) from t1Aa));
|
||||
ERROR HY000: You can't specify target table 't1aa' for update in FROM clause
|
||||
ERROR HY000: You can't specify target table 't1aA' for update in FROM clause
|
||||
insert into v2aA values ((select max(col1) from t1aA));
|
||||
ERROR HY000: You can't specify target table 'v2aa' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v2aA' prevents operation INSERT on table 'v2aA'.
|
||||
insert into v2Aa values ((select max(col1) from v2aA));
|
||||
ERROR HY000: You can't specify target table 'v2aa' for update in FROM clause
|
||||
ERROR HY000: You can't specify target table 'v2Aa' for update in FROM clause
|
||||
insert into t1Aa values ((select max(col1) from v2Aa));
|
||||
ERROR HY000: You can't specify target table 't1aa' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v2Aa' prevents operation INSERT on table 't1Aa'.
|
||||
insert into v2aA values ((select max(col1) from v2Aa));
|
||||
ERROR HY000: You can't specify target table 'v2aa' for update in FROM clause
|
||||
ERROR HY000: You can't specify target table 'v2aA' for update in FROM clause
|
||||
insert into v3Aa (col1) values ((select max(col1) from v1Aa));
|
||||
ERROR HY000: You can't specify target table 'v3aa' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v1Aa' prevents operation INSERT on table 'v3Aa'.
|
||||
insert into v3aA (col1) values ((select max(col1) from t1aA));
|
||||
ERROR HY000: You can't specify target table 'v3aa' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v3aA' prevents operation INSERT on table 'v3aA'.
|
||||
insert into v3Aa (col1) values ((select max(col1) from v2aA));
|
||||
ERROR HY000: You can't specify target table 'v3aa' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v2aA' prevents operation INSERT on table 'v3Aa'.
|
||||
drop view v3aA,v2Aa,v1aA;
|
||||
drop table t1Aa,t2Aa;
|
||||
create table t1Aa (col1 int);
|
||||
|
@ -1,5 +1,5 @@
|
||||
prepare stmt1 from ' show full processlist ';
|
||||
execute stmt1;
|
||||
Id User Host db Command Time State Info
|
||||
number root localhost test Execute time NULL show full processlist
|
||||
number root localhost test Query time NULL show full processlist
|
||||
deallocate prepare stmt1;
|
||||
|
@ -29,3 +29,14 @@ drop table if exists t1,t2,t11;
|
||||
show slave status;
|
||||
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
||||
# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 1658 # # master-bin.000001 Yes Yes test.t1 0 0 1658 # None 0 No #
|
||||
create table t1 (ts timestamp);
|
||||
set one_shot time_zone='met';
|
||||
insert into t1 values('2005-08-12 00:00:00');
|
||||
set one_shot time_zone='met';
|
||||
select * from t1;
|
||||
ts
|
||||
2005-08-12 00:00:00
|
||||
set one_shot time_zone='met';
|
||||
select * from t1;
|
||||
ts
|
||||
2005-08-12 00:00:00
|
||||
|
364
mysql-test/r/sp-dynamic.result
Normal file
364
mysql-test/r/sp-dynamic.result
Normal file
@ -0,0 +1,364 @@
|
||||
create procedure p1()
|
||||
begin
|
||||
prepare stmt from "select 1";
|
||||
execute stmt;
|
||||
execute stmt;
|
||||
execute stmt;
|
||||
deallocate prepare stmt;
|
||||
end|
|
||||
call p1()|
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
call p1()|
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
call p1()|
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
drop procedure p1|
|
||||
create procedure p1()
|
||||
begin
|
||||
execute stmt;
|
||||
end|
|
||||
prepare stmt from "call p1()"|
|
||||
execute stmt|
|
||||
ERROR HY000: The prepared statement contains a stored routine call that refers to that same statement. It's not allowed to execute a prepared statement in such a recursive manner
|
||||
execute stmt|
|
||||
ERROR HY000: The prepared statement contains a stored routine call that refers to that same statement. It's not allowed to execute a prepared statement in such a recursive manner
|
||||
execute stmt|
|
||||
ERROR HY000: The prepared statement contains a stored routine call that refers to that same statement. It's not allowed to execute a prepared statement in such a recursive manner
|
||||
call p1()|
|
||||
ERROR HY000: Recursive stored routines are not allowed.
|
||||
call p1()|
|
||||
ERROR HY000: Recursive stored routines are not allowed.
|
||||
call p1()|
|
||||
ERROR HY000: Recursive stored routines are not allowed.
|
||||
drop procedure p1|
|
||||
create procedure p1()
|
||||
begin
|
||||
prepare stmt from "create procedure p2() begin select 1; end";
|
||||
execute stmt;
|
||||
deallocate prepare stmt;
|
||||
end|
|
||||
call p1()|
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
call p1()|
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
drop procedure p1|
|
||||
create procedure p1()
|
||||
begin
|
||||
prepare stmt from "drop procedure p2";
|
||||
execute stmt;
|
||||
deallocate prepare stmt;
|
||||
end|
|
||||
call p1()|
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
call p1()|
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
drop procedure p1|
|
||||
create procedure p1()
|
||||
begin
|
||||
prepare stmt_drop from "drop table if exists t1";
|
||||
execute stmt_drop;
|
||||
prepare stmt from "create table t1 (a int)";
|
||||
execute stmt;
|
||||
insert into t1 (a) values (1);
|
||||
select * from t1;
|
||||
deallocate prepare stmt;
|
||||
deallocate prepare stmt_drop;
|
||||
end|
|
||||
call p1()|
|
||||
a
|
||||
1
|
||||
Warnings:
|
||||
Note 1051 Unknown table 't1'
|
||||
call p1()|
|
||||
a
|
||||
1
|
||||
drop procedure p1|
|
||||
create procedure p1()
|
||||
begin
|
||||
set @tab_name=concat("tab_", replace(curdate(), '-', '_'));
|
||||
set @drop_sql=concat("drop table if exists ", @tab_name);
|
||||
set @create_sql=concat("create table ", @tab_name, " (a int)");
|
||||
set @insert_sql=concat("insert into ", @tab_name, " values (1), (2), (3)");
|
||||
set @select_sql=concat("select * from ", @tab_name);
|
||||
select @tab_name;
|
||||
select @drop_sql;
|
||||
select @create_sql;
|
||||
select @insert_sql;
|
||||
select @select_sql;
|
||||
prepare stmt_drop from @drop_sql;
|
||||
execute stmt_drop;
|
||||
prepare stmt from @create_sql;
|
||||
execute stmt;
|
||||
prepare stmt from @insert_sql;
|
||||
execute stmt;
|
||||
prepare stmt from @select_sql;
|
||||
execute stmt;
|
||||
execute stmt_drop;
|
||||
deallocate prepare stmt;
|
||||
deallocate prepare stmt_drop;
|
||||
end|
|
||||
call p1()|
|
||||
call p1()|
|
||||
drop procedure p1|
|
||||
create procedure p1()
|
||||
begin
|
||||
prepare stmt_drop from "drop table if exists t1";
|
||||
execute stmt_drop;
|
||||
prepare stmt from "create table t1 (a int)";
|
||||
execute stmt;
|
||||
deallocate prepare stmt;
|
||||
deallocate prepare stmt_drop;
|
||||
end|
|
||||
drop function if exists f1|
|
||||
create function f1(a int) returns int
|
||||
begin
|
||||
call p1();
|
||||
return 1;
|
||||
end|
|
||||
select f1(0)|
|
||||
ERROR 0A000: Dynamic SQL is not allowed in stored function or trigger
|
||||
select f1(f1(0))|
|
||||
ERROR 0A000: Dynamic SQL is not allowed in stored function or trigger
|
||||
select f1(f1(f1(0)))|
|
||||
ERROR 0A000: Dynamic SQL is not allowed in stored function or trigger
|
||||
drop function f1|
|
||||
drop procedure p1|
|
||||
create procedure p1()
|
||||
begin
|
||||
drop table if exists t1;
|
||||
create table t1 (id integer not null primary key,
|
||||
name varchar(20) not null);
|
||||
insert into t1 (id, name) values (1, 'aaa'), (2, 'bbb'), (3, 'ccc');
|
||||
prepare stmt from "select name from t1";
|
||||
execute stmt;
|
||||
select name from t1;
|
||||
execute stmt;
|
||||
prepare stmt from
|
||||
"select name from t1 where name=(select name from t1 where id=2)";
|
||||
execute stmt;
|
||||
select name from t1 where name=(select name from t1 where id=2);
|
||||
execute stmt;
|
||||
end|
|
||||
call p1()|
|
||||
name
|
||||
aaa
|
||||
bbb
|
||||
ccc
|
||||
name
|
||||
aaa
|
||||
bbb
|
||||
ccc
|
||||
name
|
||||
aaa
|
||||
bbb
|
||||
ccc
|
||||
name
|
||||
bbb
|
||||
name
|
||||
bbb
|
||||
name
|
||||
bbb
|
||||
call p1()|
|
||||
name
|
||||
aaa
|
||||
bbb
|
||||
ccc
|
||||
name
|
||||
aaa
|
||||
bbb
|
||||
ccc
|
||||
name
|
||||
aaa
|
||||
bbb
|
||||
ccc
|
||||
name
|
||||
bbb
|
||||
name
|
||||
bbb
|
||||
name
|
||||
bbb
|
||||
drop procedure p1|
|
||||
prepare stmt from "select * from t1"|
|
||||
create procedure p1()
|
||||
begin
|
||||
execute stmt;
|
||||
deallocate prepare stmt;
|
||||
end|
|
||||
call p1()|
|
||||
id name
|
||||
1 aaa
|
||||
2 bbb
|
||||
3 ccc
|
||||
call p1()|
|
||||
ERROR HY000: Unknown prepared statement handler (stmt) given to EXECUTE
|
||||
drop procedure p1|
|
||||
create procedure p1()
|
||||
begin
|
||||
declare a char(10);
|
||||
set a="sp-variable";
|
||||
set @a="mysql-variable";
|
||||
prepare stmt from "select 'dynamic sql:', @a, a";
|
||||
execute stmt;
|
||||
end|
|
||||
call p1()|
|
||||
ERROR 42S22: Unknown column 'a' in 'field list'
|
||||
call p1()|
|
||||
ERROR 42S22: Unknown column 'a' in 'field list'
|
||||
drop procedure p1|
|
||||
create procedure p1()
|
||||
begin
|
||||
prepare stmt from 'select ? as a';
|
||||
execute stmt using @a;
|
||||
end|
|
||||
set @a=1|
|
||||
call p1()|
|
||||
a
|
||||
1
|
||||
call p1()|
|
||||
a
|
||||
1
|
||||
drop procedure p1|
|
||||
drop table if exists t1|
|
||||
create table t1 (id integer primary key auto_increment,
|
||||
stmt_text char(35), status varchar(20))|
|
||||
insert into t1 (stmt_text) values
|
||||
("select 1"), ("flush tables"), ("handler t1 open as ha"),
|
||||
("analyze table t1"), ("check table t1"), ("checksum table t1"),
|
||||
("check table t1"), ("optimize table t1"), ("repair table t1"),
|
||||
("describe extended select * from t1"),
|
||||
("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")|
|
||||
create procedure p1()
|
||||
begin
|
||||
declare v_stmt_text varchar(255);
|
||||
declare v_id integer;
|
||||
declare done int default 0;
|
||||
declare c cursor for select id, stmt_text from t1;
|
||||
declare continue handler for 1295 -- ER_UNSUPPORTED_PS
|
||||
set @status='not supported';
|
||||
declare continue handler for 1064 -- ER_SYNTAX_ERROR
|
||||
set @status='syntax error';
|
||||
declare continue handler for sqlstate '02000' set done = 1;
|
||||
prepare update_stmt from "update t1 set status=? where id=?";
|
||||
open c;
|
||||
repeat
|
||||
if not done then
|
||||
fetch c into v_id, v_stmt_text;
|
||||
set @id=v_id, @stmt_text=v_stmt_text;
|
||||
set @status="supported";
|
||||
prepare stmt from @stmt_text;
|
||||
execute update_stmt using @status, @id;
|
||||
end if;
|
||||
until done end repeat;
|
||||
deallocate prepare update_stmt;
|
||||
end|
|
||||
call p1()|
|
||||
select * from t1|
|
||||
id stmt_text status
|
||||
1 select 1 supported
|
||||
2 flush tables not supported
|
||||
3 handler t1 open as ha not supported
|
||||
4 analyze table t1 not supported
|
||||
5 check table t1 not supported
|
||||
6 checksum table t1 not supported
|
||||
7 check table t1 not supported
|
||||
8 optimize table t1 not supported
|
||||
9 repair table t1 not supported
|
||||
10 describe extended select * from t1 supported
|
||||
11 help help not supported
|
||||
12 show databases supported
|
||||
13 show tables supported
|
||||
14 show table status supported
|
||||
15 show open tables supported
|
||||
16 show storage engines supported
|
||||
17 insert into t1 (id) values (1) supported
|
||||
18 update t1 set status='' supported
|
||||
19 delete from t1 supported
|
||||
20 truncate t1 supported
|
||||
21 call p1() supported
|
||||
22 foo bar syntax error
|
||||
drop procedure p1|
|
||||
drop table t1|
|
||||
prepare stmt from 'select 1'|
|
||||
create procedure p1() execute stmt|
|
||||
call p1()|
|
||||
1
|
||||
1
|
||||
call p1()|
|
||||
1
|
||||
1
|
||||
drop procedure p1|
|
||||
create function f1() returns int
|
||||
begin
|
||||
deallocate prepare stmt;
|
||||
return 1;
|
||||
end|
|
||||
ERROR 0A000: Dynamic SQL is not allowed in stored function or trigger
|
||||
create procedure p1()
|
||||
begin
|
||||
prepare stmt from 'select 1 A';
|
||||
execute stmt;
|
||||
end|
|
||||
prepare stmt from 'call p1()'|
|
||||
execute stmt|
|
||||
ERROR HY000: The prepared statement contains a stored routine call that refers to that same statement. It's not allowed to execute a prepared statement in such a recursive manner
|
||||
execute stmt|
|
||||
ERROR HY000: The prepared statement contains a stored routine call that refers to that same statement. It's not allowed to execute a prepared statement in such a recursive manner
|
||||
drop procedure p1|
|
||||
drop table if exists t1, t2|
|
||||
create procedure p1 (a int) language sql deterministic
|
||||
begin
|
||||
declare rsql varchar(100);
|
||||
drop table if exists t1, t2;
|
||||
set @rsql= "create table t1 (a int)";
|
||||
select @rsql;
|
||||
prepare pst from @rsql;
|
||||
execute pst;
|
||||
set @rsql= null;
|
||||
set @rsql= "create table t2 (a int)";
|
||||
select @rsql;
|
||||
prepare pst from @rsql;
|
||||
execute pst;
|
||||
drop table if exists t1, t2;
|
||||
end|
|
||||
set @a:=0|
|
||||
call p1(@a)|
|
||||
@rsql
|
||||
create table t1 (a int)
|
||||
@rsql
|
||||
create table t2 (a int)
|
||||
Warnings:
|
||||
Note 1051 Unknown table 't1'
|
||||
Note 1051 Unknown table 't2'
|
||||
select @a|
|
||||
@a
|
||||
0
|
||||
call p1(@a)|
|
||||
@rsql
|
||||
create table t1 (a int)
|
||||
@rsql
|
||||
create table t2 (a int)
|
||||
Warnings:
|
||||
Note 1051 Unknown table 't1'
|
||||
Note 1051 Unknown table 't2'
|
||||
select @a|
|
||||
@a
|
||||
0
|
||||
drop procedure if exists p1|
|
@ -618,7 +618,7 @@ select * from t1|
|
||||
call bug8408_p()|
|
||||
val x
|
||||
select bug8408_f()|
|
||||
ERROR 0A000: PROCEDURE test.bug8408_p can't return a result set in the given context
|
||||
ERROR 0A000: Not allowed to return a result set from a function
|
||||
drop procedure bug8408_p|
|
||||
drop function bug8408_f|
|
||||
create function bug8408() returns int
|
||||
@ -665,20 +665,6 @@ select default(t30.s1) from t30;
|
||||
end|
|
||||
drop procedure bug10969|
|
||||
drop table t1|
|
||||
prepare stmt from "select 1";
|
||||
create procedure p() deallocate prepare stmt;
|
||||
ERROR 0A000: DEALLOCATE is not allowed in stored procedures
|
||||
create function f() returns int begin deallocate prepare stmt;
|
||||
ERROR 0A000: DEALLOCATE is not allowed in stored procedures
|
||||
create procedure p() prepare stmt from "select 1";
|
||||
ERROR 0A000: PREPARE is not allowed in stored procedures
|
||||
create function f() returns int begin prepare stmt from "select 1";
|
||||
ERROR 0A000: PREPARE is not allowed in stored procedures
|
||||
create procedure p() execute stmt;
|
||||
ERROR 0A000: EXECUTE is not allowed in stored procedures
|
||||
create function f() returns int begin execute stmt;
|
||||
ERROR 0A000: EXECUTE is not allowed in stored procedures
|
||||
deallocate prepare stmt;
|
||||
create table t1(f1 int);
|
||||
create table t2(f1 int);
|
||||
CREATE PROCEDURE SP001()
|
||||
|
@ -689,7 +689,7 @@ call bug11587();
|
||||
set new.c2= '2004-04-02';
|
||||
end|
|
||||
insert into t1 (c1) values (4),(5),(6);
|
||||
ERROR 0A000: PROCEDURE test.bug11587 can't return a result set in the given context
|
||||
ERROR 0A000: Not allowed to return a result set from a trigger
|
||||
select * from t1;
|
||||
c1 c2
|
||||
1 NULL
|
||||
|
@ -513,6 +513,11 @@ SHOW VARIABLES LIKE 'table_cache';
|
||||
Variable_name Value
|
||||
table_cache 1
|
||||
SET GLOBAL table_cache=DEFAULT;
|
||||
set character_set_results=NULL;
|
||||
select ifnull(@@character_set_results,"really null");
|
||||
ifnull(@@character_set_results,"really null")
|
||||
really null
|
||||
set names latin1;
|
||||
create table t1 (a int);
|
||||
select a into @x from t1;
|
||||
Warnings:
|
||||
|
@ -875,29 +875,29 @@ create view v1 as select * from t1;
|
||||
create view v2 as select * from v1;
|
||||
create view v3 as select v2.col1 from v2,t2 where v2.col1 = t2.col1;
|
||||
update v2 set col1 = (select max(col1) from v1);
|
||||
ERROR HY000: You can't specify target table 'v2' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v1' prevents operation UPDATE on table 'v2'.
|
||||
update v2 set col1 = (select max(col1) from t1);
|
||||
ERROR HY000: You can't specify target table 'v2' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v2' prevents operation UPDATE on table 'v2'.
|
||||
update v2 set col1 = (select max(col1) from v2);
|
||||
ERROR HY000: You can't specify target table 'v2' for update in FROM clause
|
||||
update v2,t2 set v2.col1 = (select max(col1) from v1) where v2.col1 = t2.col1;
|
||||
ERROR HY000: You can't specify target table 'v2' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v1' prevents operation UPDATE on table 'v2'.
|
||||
update t1,t2 set t1.col1 = (select max(col1) from v1) where t1.col1 = t2.col1;
|
||||
ERROR HY000: You can't specify target table 't1' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v1' prevents operation UPDATE on table 't1'.
|
||||
update v1,t2 set v1.col1 = (select max(col1) from v1) where v1.col1 = t2.col1;
|
||||
ERROR HY000: You can't specify target table 'v1' for update in FROM clause
|
||||
update t2,v2 set v2.col1 = (select max(col1) from v1) where v2.col1 = t2.col1;
|
||||
ERROR HY000: You can't specify target table 't2' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v1' prevents operation UPDATE on table 't2'.
|
||||
update t2,t1 set t1.col1 = (select max(col1) from v1) where t1.col1 = t2.col1;
|
||||
ERROR HY000: You can't specify target table 't2' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v1' prevents operation UPDATE on table 't2'.
|
||||
update t2,v1 set v1.col1 = (select max(col1) from v1) where v1.col1 = t2.col1;
|
||||
ERROR HY000: You can't specify target table 't2' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v1' prevents operation UPDATE on table 't2'.
|
||||
update v2,t2 set v2.col1 = (select max(col1) from t1) where v2.col1 = t2.col1;
|
||||
ERROR HY000: You can't specify target table 'v2' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v2' prevents operation UPDATE on table 'v2'.
|
||||
update t1,t2 set t1.col1 = (select max(col1) from t1) where t1.col1 = t2.col1;
|
||||
ERROR HY000: You can't specify target table 't1' for update in FROM clause
|
||||
update v1,t2 set v1.col1 = (select max(col1) from t1) where v1.col1 = t2.col1;
|
||||
ERROR HY000: You can't specify target table 'v1' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v1' prevents operation UPDATE on table 'v1'.
|
||||
update t2,v2 set v2.col1 = (select max(col1) from t1) where v2.col1 = t2.col1;
|
||||
ERROR HY000: You can't specify target table 't2' for update in FROM clause
|
||||
update t2,t1 set t1.col1 = (select max(col1) from t1) where t1.col1 = t2.col1;
|
||||
@ -907,73 +907,73 @@ ERROR HY000: You can't specify target table 't2' for update in FROM clause
|
||||
update v2,t2 set v2.col1 = (select max(col1) from v2) where v2.col1 = t2.col1;
|
||||
ERROR HY000: You can't specify target table 'v2' for update in FROM clause
|
||||
update t1,t2 set t1.col1 = (select max(col1) from v2) where t1.col1 = t2.col1;
|
||||
ERROR HY000: You can't specify target table 't1' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v2' prevents operation UPDATE on table 't1'.
|
||||
update v1,t2 set v1.col1 = (select max(col1) from v2) where v1.col1 = t2.col1;
|
||||
ERROR HY000: You can't specify target table 'v1' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v2' prevents operation UPDATE on table 'v1'.
|
||||
update t2,v2 set v2.col1 = (select max(col1) from v2) where v2.col1 = t2.col1;
|
||||
ERROR HY000: You can't specify target table 't2' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v2' prevents operation UPDATE on table 't2'.
|
||||
update t2,t1 set t1.col1 = (select max(col1) from v2) where t1.col1 = t2.col1;
|
||||
ERROR HY000: You can't specify target table 't2' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v2' prevents operation UPDATE on table 't2'.
|
||||
update t2,v1 set v1.col1 = (select max(col1) from v2) where v1.col1 = t2.col1;
|
||||
ERROR HY000: You can't specify target table 't2' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v2' prevents operation UPDATE on table 't2'.
|
||||
update v3 set v3.col1 = (select max(col1) from v1);
|
||||
ERROR HY000: You can't specify target table 'v3' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v1' prevents operation UPDATE on table 'v3'.
|
||||
update v3 set v3.col1 = (select max(col1) from t1);
|
||||
ERROR HY000: You can't specify target table 'v3' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v3' prevents operation UPDATE on table 'v3'.
|
||||
update v3 set v3.col1 = (select max(col1) from v2);
|
||||
ERROR HY000: You can't specify target table 'v3' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v2' prevents operation UPDATE on table 'v3'.
|
||||
update v3 set v3.col1 = (select max(col1) from v3);
|
||||
ERROR HY000: You can't specify target table 'v3' for update in FROM clause
|
||||
delete from v2 where col1 = (select max(col1) from v1);
|
||||
ERROR HY000: You can't specify target table 'v2' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v1' prevents operation DELETE on table 'v2'.
|
||||
delete from v2 where col1 = (select max(col1) from t1);
|
||||
ERROR HY000: You can't specify target table 'v2' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v2' prevents operation DELETE on table 'v2'.
|
||||
delete from v2 where col1 = (select max(col1) from v2);
|
||||
ERROR HY000: You can't specify target table 'v2' for update in FROM clause
|
||||
delete v2 from v2,t2 where (select max(col1) from v1) > 0 and v2.col1 = t2.col1;
|
||||
ERROR HY000: You can't specify target table 'v2' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v1' prevents operation DELETE on table 'v2'.
|
||||
delete t1 from t1,t2 where (select max(col1) from v1) > 0 and t1.col1 = t2.col1;
|
||||
ERROR HY000: You can't specify target table 't1' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v1' prevents operation DELETE on table 't1'.
|
||||
delete v1 from v1,t2 where (select max(col1) from v1) > 0 and v1.col1 = t2.col1;
|
||||
ERROR HY000: You can't specify target table 'v1' for update in FROM clause
|
||||
delete v2 from v2,t2 where (select max(col1) from t1) > 0 and v2.col1 = t2.col1;
|
||||
ERROR HY000: You can't specify target table 'v2' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v2' prevents operation DELETE on table 'v2'.
|
||||
delete t1 from t1,t2 where (select max(col1) from t1) > 0 and t1.col1 = t2.col1;
|
||||
ERROR HY000: You can't specify target table 't1' for update in FROM clause
|
||||
delete v1 from v1,t2 where (select max(col1) from t1) > 0 and v1.col1 = t2.col1;
|
||||
ERROR HY000: You can't specify target table 'v1' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v1' prevents operation DELETE on table 'v1'.
|
||||
delete v2 from v2,t2 where (select max(col1) from v2) > 0 and v2.col1 = t2.col1;
|
||||
ERROR HY000: You can't specify target table 'v2' for update in FROM clause
|
||||
delete t1 from t1,t2 where (select max(col1) from v2) > 0 and t1.col1 = t2.col1;
|
||||
ERROR HY000: You can't specify target table 't1' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v2' prevents operation DELETE on table 't1'.
|
||||
delete v1 from v1,t2 where (select max(col1) from v2) > 0 and v1.col1 = t2.col1;
|
||||
ERROR HY000: You can't specify target table 'v1' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v2' prevents operation DELETE on table 'v1'.
|
||||
insert into v2 values ((select max(col1) from v1));
|
||||
ERROR HY000: You can't specify target table 'v2' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v1' prevents operation INSERT on table 'v2'.
|
||||
insert into t1 values ((select max(col1) from v1));
|
||||
ERROR HY000: You can't specify target table 't1' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v1' prevents operation INSERT on table 't1'.
|
||||
insert into v2 values ((select max(col1) from v1));
|
||||
ERROR HY000: You can't specify target table 'v2' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v1' prevents operation INSERT on table 'v2'.
|
||||
insert into v2 values ((select max(col1) from t1));
|
||||
ERROR HY000: You can't specify target table 'v2' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v2' prevents operation INSERT on table 'v2'.
|
||||
insert into t1 values ((select max(col1) from t1));
|
||||
ERROR HY000: You can't specify target table 't1' for update in FROM clause
|
||||
insert into v2 values ((select max(col1) from t1));
|
||||
ERROR HY000: You can't specify target table 'v2' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v2' prevents operation INSERT on table 'v2'.
|
||||
insert into v2 values ((select max(col1) from v2));
|
||||
ERROR HY000: You can't specify target table 'v2' for update in FROM clause
|
||||
insert into t1 values ((select max(col1) from v2));
|
||||
ERROR HY000: You can't specify target table 't1' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v2' prevents operation INSERT on table 't1'.
|
||||
insert into v2 values ((select max(col1) from v2));
|
||||
ERROR HY000: You can't specify target table 'v2' for update in FROM clause
|
||||
insert into v3 (col1) values ((select max(col1) from v1));
|
||||
ERROR HY000: You can't specify target table 'v3' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v1' prevents operation INSERT on table 'v3'.
|
||||
insert into v3 (col1) values ((select max(col1) from t1));
|
||||
ERROR HY000: You can't specify target table 'v3' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v3' prevents operation INSERT on table 'v3'.
|
||||
insert into v3 (col1) values ((select max(col1) from v2));
|
||||
ERROR HY000: You can't specify target table 'v3' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v2' prevents operation INSERT on table 'v3'.
|
||||
insert into v3 (col1) values ((select CONVERT_TZ('20050101000000','UTC','MET') from v2));
|
||||
ERROR HY000: You can't specify target table 'v3' for update in FROM clause
|
||||
ERROR HY000: The definition of table 'v2' prevents operation INSERT on table 'v3'.
|
||||
insert into v3 (col1) values ((select CONVERT_TZ('20050101000000','UTC','MET') from t2));
|
||||
insert into mysql.time_zone values ('', (select CONVERT_TZ('20050101000000','UTC','MET') from t2));
|
||||
ERROR 23000: Column 'Use_leap_seconds' cannot be null
|
||||
@ -1332,7 +1332,7 @@ insert into v3 values (30);
|
||||
ERROR HY000: The target table v3 of the INSERT is not updatable
|
||||
create view v4 as select * from v2 where 20 < (select (s1) from t1);
|
||||
insert into v4 values (30);
|
||||
ERROR HY000: You can't specify target table 'v4' for update in FROM clause
|
||||
ERROR HY000: The target table v4 of the INSERT is not updatable
|
||||
drop view v4, v3, v2, v1;
|
||||
drop table t1;
|
||||
create table t1 (a int);
|
||||
@ -1935,6 +1935,16 @@ SELECT * FROM v1;
|
||||
SUBSTRING_INDEX("dkjhgd:kjhdjh", ":", 1)
|
||||
dkjhgd
|
||||
drop view v1;
|
||||
create table t1 (f59 int, f60 int, f61 int);
|
||||
insert into t1 values (19,41,32);
|
||||
create view v1 as select f59, f60 from t1 where f59 in
|
||||
(select f59 from t1);
|
||||
update v1 set f60=2345;
|
||||
ERROR HY000: The target table v1 of the UPDATE is not updatable
|
||||
update t1 set f60=(select max(f60) from v1);
|
||||
ERROR HY000: The definition of table 'v1' prevents operation UPDATE on table 't1'.
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
create table t1 (s1 int);
|
||||
create view v1 as select var_samp(s1) from t1;
|
||||
show create view v1;
|
||||
|
@ -355,4 +355,12 @@ DROP TABLE t1,t2;
|
||||
#
|
||||
select * from (select group_concat('c') from DUAL) t;
|
||||
|
||||
#
|
||||
# Bug #12859 group_concat in subquery cause incorrect not null
|
||||
#
|
||||
create table t1 ( a int not null default 0);
|
||||
select * from (select group_concat(a) from t1) t2;
|
||||
select group_concat('x') UNION ALL select 1;
|
||||
drop table t1;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
@ -23,29 +23,29 @@ create table t2aA (col1 int);
|
||||
create view v1Aa as select * from t1aA;
|
||||
create view v2aA as select * from v1aA;
|
||||
create view v3Aa as select v2Aa.col1 from v2aA,t2Aa where v2Aa.col1 = t2aA.col1;
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
update v2aA set col1 = (select max(col1) from v1Aa);
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
update v2Aa set col1 = (select max(col1) from t1Aa);
|
||||
-- error 1093
|
||||
update v2aA set col1 = (select max(col1) from v2Aa);
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
update v2aA,t2Aa set v2Aa.col1 = (select max(col1) from v1aA) where v2aA.col1 = t2aA.col1;
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
update t1aA,t2Aa set t1Aa.col1 = (select max(col1) from v1Aa) where t1aA.col1 = t2aA.col1;
|
||||
-- error 1093
|
||||
update v1aA,t2Aa set v1Aa.col1 = (select max(col1) from v1aA) where v1Aa.col1 = t2aA.col1;
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
update t2Aa,v2Aa set v2aA.col1 = (select max(col1) from v1aA) where v2Aa.col1 = t2aA.col1;
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
update t2Aa,t1Aa set t1aA.col1 = (select max(col1) from v1Aa) where t1Aa.col1 = t2aA.col1;
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
update t2Aa,v1aA set v1Aa.col1 = (select max(col1) from v1aA) where v1Aa.col1 = t2aA.col1;
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
update v2aA,t2Aa set v2Aa.col1 = (select max(col1) from t1aA) where v2aA.col1 = t2aA.col1;
|
||||
-- error 1093
|
||||
update t1Aa,t2Aa set t1aA.col1 = (select max(col1) from t1Aa) where t1aA.col1 = t2aA.col1;
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
update v1aA,t2Aa set v1Aa.col1 = (select max(col1) from t1Aa) where v1aA.col1 = t2aA.col1;
|
||||
-- error 1093
|
||||
update t2Aa,v2Aa set v2aA.col1 = (select max(col1) from t1aA) where v2Aa.col1 = t2aA.col1;
|
||||
@ -55,71 +55,71 @@ update t2Aa,t1Aa set t1aA.col1 = (select max(col1) from t1Aa) where t1aA.col1 =
|
||||
update t2Aa,v1Aa set v1aA.col1 = (select max(col1) from t1Aa) where v1Aa.col1 = t2aA.col1;
|
||||
-- error 1093
|
||||
update v2aA,t2Aa set v2Aa.col1 = (select max(col1) from v2aA) where v2Aa.col1 = t2aA.col1;
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
update t1aA,t2Aa set t1Aa.col1 = (select max(col1) from v2aA) where t1aA.col1 = t2aA.col1;
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
update v1aA,t2Aa set v1Aa.col1 = (select max(col1) from v2Aa) where v1aA.col1 = t2aA.col1;
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
update t2Aa,v2aA set v2Aa.col1 = (select max(col1) from v2aA) where v2Aa.col1 = t2aA.col1;
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
update t2Aa,t1Aa set t1aA.col1 = (select max(col1) from v2aA) where t1Aa.col1 = t2aA.col1;
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
update t2Aa,v1Aa set v1aA.col1 = (select max(col1) from v2Aa) where v1Aa.col1 = t2aA.col1;
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
update v3aA set v3Aa.col1 = (select max(col1) from v1aA);
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
update v3aA set v3Aa.col1 = (select max(col1) from t1aA);
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
update v3aA set v3Aa.col1 = (select max(col1) from v2aA);
|
||||
-- error 1093
|
||||
update v3aA set v3Aa.col1 = (select max(col1) from v3aA);
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
delete from v2Aa where col1 = (select max(col1) from v1Aa);
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
delete from v2aA where col1 = (select max(col1) from t1Aa);
|
||||
-- error 1093
|
||||
delete from v2Aa where col1 = (select max(col1) from v2aA);
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
delete v2Aa from v2aA,t2Aa where (select max(col1) from v1aA) > 0 and v2Aa.col1 = t2aA.col1;
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
delete t1aA from t1Aa,t2Aa where (select max(col1) from v1Aa) > 0 and t1aA.col1 = t2aA.col1;
|
||||
-- error 1093
|
||||
delete v1aA from v1Aa,t2Aa where (select max(col1) from v1aA) > 0 and v1Aa.col1 = t2aA.col1;
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
delete v2aA from v2Aa,t2Aa where (select max(col1) from t1Aa) > 0 and v2aA.col1 = t2aA.col1;
|
||||
-- error 1093
|
||||
delete t1aA from t1Aa,t2Aa where (select max(col1) from t1aA) > 0 and t1Aa.col1 = t2aA.col1;
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
delete v1aA from v1Aa,t2Aa where (select max(col1) from t1aA) > 0 and v1aA.col1 = t2aA.col1;
|
||||
-- error 1093
|
||||
delete v2Aa from v2aA,t2Aa where (select max(col1) from v2Aa) > 0 and v2aA.col1 = t2aA.col1;
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
delete t1Aa from t1aA,t2Aa where (select max(col1) from v2Aa) > 0 and t1Aa.col1 = t2aA.col1;
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
delete v1Aa from v1aA,t2Aa where (select max(col1) from v2aA) > 0 and v1Aa.col1 = t2aA.col1;
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
insert into v2Aa values ((select max(col1) from v1aA));
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
insert into t1aA values ((select max(col1) from v1Aa));
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
insert into v2aA values ((select max(col1) from v1aA));
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
insert into v2Aa values ((select max(col1) from t1Aa));
|
||||
-- error 1093
|
||||
insert into t1aA values ((select max(col1) from t1Aa));
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
insert into v2aA values ((select max(col1) from t1aA));
|
||||
-- error 1093
|
||||
insert into v2Aa values ((select max(col1) from v2aA));
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
insert into t1Aa values ((select max(col1) from v2Aa));
|
||||
-- error 1093
|
||||
insert into v2aA values ((select max(col1) from v2Aa));
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
insert into v3Aa (col1) values ((select max(col1) from v1Aa));
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
insert into v3aA (col1) values ((select max(col1) from t1aA));
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
insert into v3Aa (col1) values ((select max(col1) from v2aA));
|
||||
drop view v3aA,v2Aa,v1aA;
|
||||
drop table t1Aa,t2Aa;
|
||||
|
@ -36,4 +36,22 @@ sync_with_master;
|
||||
--replace_column 1 # 8 # 9 # 23 # 33 #
|
||||
show slave status;
|
||||
|
||||
#
|
||||
# BUG#12542
|
||||
# TEST: "SET ONE_SHOT should always be executed on slave"
|
||||
#
|
||||
# We could use any timezone different than server default in this test
|
||||
#
|
||||
connection master;
|
||||
create table t1 (ts timestamp);
|
||||
set one_shot time_zone='met';
|
||||
insert into t1 values('2005-08-12 00:00:00');
|
||||
set one_shot time_zone='met';
|
||||
select * from t1;
|
||||
sync_slave_with_master;
|
||||
|
||||
connection slave;
|
||||
set one_shot time_zone='met';
|
||||
select * from t1;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
335
mysql-test/t/sp-dynamic.test
Normal file
335
mysql-test/t/sp-dynamic.test
Normal file
@ -0,0 +1,335 @@
|
||||
delimiter |;
|
||||
######################################################################
|
||||
# Test Dynamic SQL in stored procedures. #############################
|
||||
######################################################################
|
||||
#
|
||||
# A. Basics
|
||||
#
|
||||
create procedure p1()
|
||||
begin
|
||||
prepare stmt from "select 1";
|
||||
execute stmt;
|
||||
execute stmt;
|
||||
execute stmt;
|
||||
deallocate prepare stmt;
|
||||
end|
|
||||
call p1()|
|
||||
call p1()|
|
||||
call p1()|
|
||||
drop procedure p1|
|
||||
#
|
||||
# B. Recursion. Recusion is disabled in SP, and recursive use of PS is not
|
||||
# possible as well.
|
||||
#
|
||||
create procedure p1()
|
||||
begin
|
||||
execute stmt;
|
||||
end|
|
||||
prepare stmt from "call p1()"|
|
||||
--error ER_PS_NO_RECURSION
|
||||
execute stmt|
|
||||
--error ER_PS_NO_RECURSION
|
||||
execute stmt|
|
||||
--error ER_PS_NO_RECURSION
|
||||
execute stmt|
|
||||
--error ER_SP_NO_RECURSION
|
||||
call p1()|
|
||||
--error ER_SP_NO_RECURSION
|
||||
call p1()|
|
||||
--error ER_SP_NO_RECURSION
|
||||
call p1()|
|
||||
drop procedure p1|
|
||||
#
|
||||
# C. Create/drop a stored procedure in Dynamic SQL.
|
||||
# One cannot create stored procedure from a stored procedure because of
|
||||
# the way MySQL SP cache works: it's important that this limitation is not
|
||||
# possible to circumvent by means of Dynamic SQL.
|
||||
#
|
||||
create procedure p1()
|
||||
begin
|
||||
prepare stmt from "create procedure p2() begin select 1; end";
|
||||
execute stmt;
|
||||
deallocate prepare stmt;
|
||||
end|
|
||||
--error ER_UNSUPPORTED_PS
|
||||
call p1()|
|
||||
--error ER_UNSUPPORTED_PS
|
||||
call p1()|
|
||||
drop procedure p1|
|
||||
create procedure p1()
|
||||
begin
|
||||
prepare stmt from "drop procedure p2";
|
||||
execute stmt;
|
||||
deallocate prepare stmt;
|
||||
end|
|
||||
--error ER_UNSUPPORTED_PS
|
||||
call p1()|
|
||||
--error ER_UNSUPPORTED_PS
|
||||
call p1()|
|
||||
drop procedure p1|
|
||||
#
|
||||
# D. Create/Drop a table (a DDL that issues a commit) in Dynamic SQL.
|
||||
# (should work ok).
|
||||
#
|
||||
create procedure p1()
|
||||
begin
|
||||
prepare stmt_drop from "drop table if exists t1";
|
||||
execute stmt_drop;
|
||||
prepare stmt from "create table t1 (a int)";
|
||||
execute stmt;
|
||||
insert into t1 (a) values (1);
|
||||
select * from t1;
|
||||
deallocate prepare stmt;
|
||||
deallocate prepare stmt_drop;
|
||||
end|
|
||||
call p1()|
|
||||
call p1()|
|
||||
drop procedure p1|
|
||||
#
|
||||
# A more real example (a case similar to submitted by 24/7).
|
||||
#
|
||||
create procedure p1()
|
||||
begin
|
||||
set @tab_name=concat("tab_", replace(curdate(), '-', '_'));
|
||||
set @drop_sql=concat("drop table if exists ", @tab_name);
|
||||
set @create_sql=concat("create table ", @tab_name, " (a int)");
|
||||
set @insert_sql=concat("insert into ", @tab_name, " values (1), (2), (3)");
|
||||
set @select_sql=concat("select * from ", @tab_name);
|
||||
select @tab_name;
|
||||
select @drop_sql;
|
||||
select @create_sql;
|
||||
select @insert_sql;
|
||||
select @select_sql;
|
||||
prepare stmt_drop from @drop_sql;
|
||||
execute stmt_drop;
|
||||
prepare stmt from @create_sql;
|
||||
execute stmt;
|
||||
prepare stmt from @insert_sql;
|
||||
execute stmt;
|
||||
prepare stmt from @select_sql;
|
||||
execute stmt;
|
||||
execute stmt_drop;
|
||||
deallocate prepare stmt;
|
||||
deallocate prepare stmt_drop;
|
||||
end|
|
||||
--disable_result_log
|
||||
call p1()|
|
||||
call p1()|
|
||||
--enable_result_log
|
||||
drop procedure p1|
|
||||
#
|
||||
# E. Calling a stored procedure with Dynamic SQL
|
||||
# from a stored function (currently disabled).
|
||||
#
|
||||
create procedure p1()
|
||||
begin
|
||||
prepare stmt_drop from "drop table if exists t1";
|
||||
execute stmt_drop;
|
||||
prepare stmt from "create table t1 (a int)";
|
||||
execute stmt;
|
||||
deallocate prepare stmt;
|
||||
deallocate prepare stmt_drop;
|
||||
end|
|
||||
--disable_warnings
|
||||
drop function if exists f1|
|
||||
--enable_warnings
|
||||
create function f1(a int) returns int
|
||||
begin
|
||||
call p1();
|
||||
return 1;
|
||||
end|
|
||||
|
||||
# Every stored procedure that contains Dynamic SQL is marked as
|
||||
# such. Stored procedures that contain Dynamic SQL are not
|
||||
# allowed in a stored function or trigger, and here we get the
|
||||
# corresponding error message.
|
||||
|
||||
--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG
|
||||
select f1(0)|
|
||||
--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG
|
||||
select f1(f1(0))|
|
||||
--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG
|
||||
select f1(f1(f1(0)))|
|
||||
drop function f1|
|
||||
drop procedure p1|
|
||||
#
|
||||
# F. Rollback and cleanup lists management in Dynamic SQL.
|
||||
#
|
||||
create procedure p1()
|
||||
begin
|
||||
drop table if exists t1;
|
||||
create table t1 (id integer not null primary key,
|
||||
name varchar(20) not null);
|
||||
insert into t1 (id, name) values (1, 'aaa'), (2, 'bbb'), (3, 'ccc');
|
||||
prepare stmt from "select name from t1";
|
||||
execute stmt;
|
||||
select name from t1;
|
||||
execute stmt;
|
||||
prepare stmt from
|
||||
"select name from t1 where name=(select name from t1 where id=2)";
|
||||
execute stmt;
|
||||
select name from t1 where name=(select name from t1 where id=2);
|
||||
execute stmt;
|
||||
end|
|
||||
call p1()|
|
||||
call p1()|
|
||||
drop procedure p1|
|
||||
#
|
||||
# H. Executing a statement prepared externally in SP.
|
||||
#
|
||||
prepare stmt from "select * from t1"|
|
||||
create procedure p1()
|
||||
begin
|
||||
execute stmt;
|
||||
deallocate prepare stmt;
|
||||
end|
|
||||
call p1()|
|
||||
--error ER_UNKNOWN_STMT_HANDLER
|
||||
call p1()|
|
||||
drop procedure p1|
|
||||
#
|
||||
# I. Use of an SP variable in Dynamic SQL is not possible and
|
||||
# this limitation is necessary for correct binary logging: prepared
|
||||
# statements do not substitute SP variables with their values for binlog, so
|
||||
# SP variables must be not accessible in Dynamic SQL.
|
||||
#
|
||||
create procedure p1()
|
||||
begin
|
||||
declare a char(10);
|
||||
set a="sp-variable";
|
||||
set @a="mysql-variable";
|
||||
prepare stmt from "select 'dynamic sql:', @a, a";
|
||||
execute stmt;
|
||||
end|
|
||||
--error ER_BAD_FIELD_ERROR
|
||||
call p1()|
|
||||
--error ER_BAD_FIELD_ERROR
|
||||
call p1()|
|
||||
drop procedure p1|
|
||||
#
|
||||
# J. Use of placeholders in Dynamic SQL.
|
||||
#
|
||||
create procedure p1()
|
||||
begin
|
||||
prepare stmt from 'select ? as a';
|
||||
execute stmt using @a;
|
||||
end|
|
||||
set @a=1|
|
||||
call p1()|
|
||||
call p1()|
|
||||
drop procedure p1|
|
||||
#
|
||||
# K. Use of continue handlers with Dynamic SQL.
|
||||
#
|
||||
drop table if exists t1|
|
||||
create table t1 (id integer primary key auto_increment,
|
||||
stmt_text char(35), status varchar(20))|
|
||||
insert into t1 (stmt_text) values
|
||||
("select 1"), ("flush tables"), ("handler t1 open as ha"),
|
||||
("analyze table t1"), ("check table t1"), ("checksum table t1"),
|
||||
("check table t1"), ("optimize table t1"), ("repair table t1"),
|
||||
("describe extended select * from t1"),
|
||||
("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")|
|
||||
create procedure p1()
|
||||
begin
|
||||
declare v_stmt_text varchar(255);
|
||||
declare v_id integer;
|
||||
declare done int default 0;
|
||||
declare c cursor for select id, stmt_text from t1;
|
||||
declare continue handler for 1295 -- ER_UNSUPPORTED_PS
|
||||
set @status='not supported';
|
||||
declare continue handler for 1064 -- ER_SYNTAX_ERROR
|
||||
set @status='syntax error';
|
||||
declare continue handler for sqlstate '02000' set done = 1;
|
||||
|
||||
prepare update_stmt from "update t1 set status=? where id=?";
|
||||
open c;
|
||||
repeat
|
||||
if not done then
|
||||
fetch c into v_id, v_stmt_text;
|
||||
set @id=v_id, @stmt_text=v_stmt_text;
|
||||
set @status="supported";
|
||||
prepare stmt from @stmt_text;
|
||||
execute update_stmt using @status, @id;
|
||||
end if;
|
||||
until done end repeat;
|
||||
deallocate prepare update_stmt;
|
||||
end|
|
||||
call p1()|
|
||||
select * from t1|
|
||||
drop procedure p1|
|
||||
drop table t1|
|
||||
#
|
||||
# Bug#7115 "Prepared Statements: packet error if execution within stored
|
||||
# procedure".
|
||||
#
|
||||
prepare stmt from 'select 1'|
|
||||
create procedure p1() execute stmt|
|
||||
call p1()|
|
||||
call p1()|
|
||||
drop procedure p1|
|
||||
#
|
||||
# Bug#10975 "Prepared statements: crash if function deallocates"
|
||||
# Check that a prepared statement that is currently in use
|
||||
# can't be deallocated.
|
||||
#
|
||||
# a) Prepared statements and stored procedure cache:
|
||||
#
|
||||
# TODO: add when the corresponding bug (Bug #12093 "SP not found on second
|
||||
# PS execution if another thread drops other SP in between") is fixed.
|
||||
#
|
||||
# b) attempt to deallocate a prepared statement that is being executed
|
||||
--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG
|
||||
create function f1() returns int
|
||||
begin
|
||||
deallocate prepare stmt;
|
||||
return 1;
|
||||
end|
|
||||
|
||||
# b)-2 a crash (#1) spotted by Sergey Petrunia during code review
|
||||
create procedure p1()
|
||||
begin
|
||||
prepare stmt from 'select 1 A';
|
||||
execute stmt;
|
||||
end|
|
||||
prepare stmt from 'call p1()'|
|
||||
--error ER_PS_NO_RECURSION
|
||||
execute stmt|
|
||||
--error ER_PS_NO_RECURSION
|
||||
execute stmt|
|
||||
drop procedure p1|
|
||||
|
||||
#
|
||||
# Bug#10605 "Stored procedure with multiple SQL prepared statements
|
||||
# disconnects client"
|
||||
#
|
||||
--disable_warnings
|
||||
drop table if exists t1, t2|
|
||||
--enable_warnings
|
||||
create procedure p1 (a int) language sql deterministic
|
||||
begin
|
||||
declare rsql varchar(100);
|
||||
drop table if exists t1, t2;
|
||||
set @rsql= "create table t1 (a int)";
|
||||
select @rsql;
|
||||
prepare pst from @rsql;
|
||||
execute pst;
|
||||
set @rsql= null;
|
||||
set @rsql= "create table t2 (a int)";
|
||||
select @rsql;
|
||||
prepare pst from @rsql;
|
||||
execute pst;
|
||||
drop table if exists t1, t2;
|
||||
end|
|
||||
set @a:=0|
|
||||
call p1(@a)|
|
||||
select @a|
|
||||
call p1(@a)|
|
||||
select @a|
|
||||
drop procedure if exists p1|
|
||||
|
||||
# End of the test
|
||||
delimiter ;|
|
@ -875,7 +875,7 @@ create procedure bug8408_p()
|
||||
select * from t1|
|
||||
|
||||
call bug8408_p()|
|
||||
--error ER_SP_BADSELECT
|
||||
--error ER_SP_NO_RETSET
|
||||
select bug8408_f()|
|
||||
|
||||
drop procedure bug8408_p|
|
||||
@ -956,39 +956,10 @@ end|
|
||||
drop procedure bug10969|
|
||||
|
||||
|
||||
#
|
||||
# BUG#NNNN: New bug synopsis
|
||||
#
|
||||
#--disable_warnings
|
||||
#drop procedure if exists bugNNNN|
|
||||
#--enable_warnings
|
||||
#create procedure bugNNNN...
|
||||
|
||||
|
||||
drop table t1|
|
||||
|
||||
delimiter ;|
|
||||
|
||||
#
|
||||
# Bug#10975, #10605, #7115: Dynamic SQL by means of
|
||||
# PREPARE/EXECUTE/DEALLOCATE is not supported yet.
|
||||
# Check that an error message is returned.
|
||||
#
|
||||
prepare stmt from "select 1";
|
||||
--error ER_SP_BADSTATEMENT
|
||||
create procedure p() deallocate prepare stmt;
|
||||
--error ER_SP_BADSTATEMENT
|
||||
create function f() returns int begin deallocate prepare stmt;
|
||||
--error ER_SP_BADSTATEMENT
|
||||
create procedure p() prepare stmt from "select 1";
|
||||
--error ER_SP_BADSTATEMENT
|
||||
create function f() returns int begin prepare stmt from "select 1";
|
||||
--error ER_SP_BADSTATEMENT
|
||||
create procedure p() execute stmt;
|
||||
--error ER_SP_BADSTATEMENT
|
||||
create function f() returns int begin execute stmt;
|
||||
deallocate prepare stmt;
|
||||
|
||||
# BUG#9814: Closing a cursor that is not open
|
||||
create table t1(f1 int);
|
||||
create table t2(f1 int);
|
||||
@ -1114,3 +1085,12 @@ drop function bug11834_1;
|
||||
execute stmt;
|
||||
deallocate prepare stmt;
|
||||
drop function bug11834_2;
|
||||
#
|
||||
# BUG#NNNN: New bug synopsis
|
||||
#
|
||||
#--disable_warnings
|
||||
#drop procedure if exists bugNNNN|
|
||||
#--enable_warnings
|
||||
#create procedure bugNNNN...
|
||||
|
||||
|
||||
|
@ -723,7 +723,7 @@ begin
|
||||
end|
|
||||
delimiter ;|
|
||||
|
||||
--error 1312
|
||||
--error ER_SP_NO_RETSET
|
||||
insert into t1 (c1) values (4),(5),(6);
|
||||
select * from t1;
|
||||
|
||||
|
@ -390,6 +390,14 @@ SET GLOBAL table_cache=-1;
|
||||
SHOW VARIABLES LIKE 'table_cache';
|
||||
SET GLOBAL table_cache=DEFAULT;
|
||||
|
||||
#
|
||||
# Bugs12363: character_set_results is nullable,
|
||||
# but value_ptr returns string "NULL"
|
||||
#
|
||||
set character_set_results=NULL;
|
||||
select ifnull(@@character_set_results,"really null");
|
||||
set names latin1;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
||||
#
|
||||
|
@ -827,29 +827,29 @@ create table t2 (col1 int);
|
||||
create view v1 as select * from t1;
|
||||
create view v2 as select * from v1;
|
||||
create view v3 as select v2.col1 from v2,t2 where v2.col1 = t2.col1;
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
update v2 set col1 = (select max(col1) from v1);
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
update v2 set col1 = (select max(col1) from t1);
|
||||
-- error 1093
|
||||
update v2 set col1 = (select max(col1) from v2);
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
update v2,t2 set v2.col1 = (select max(col1) from v1) where v2.col1 = t2.col1;
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
update t1,t2 set t1.col1 = (select max(col1) from v1) where t1.col1 = t2.col1;
|
||||
-- error 1093
|
||||
update v1,t2 set v1.col1 = (select max(col1) from v1) where v1.col1 = t2.col1;
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
update t2,v2 set v2.col1 = (select max(col1) from v1) where v2.col1 = t2.col1;
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
update t2,t1 set t1.col1 = (select max(col1) from v1) where t1.col1 = t2.col1;
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
update t2,v1 set v1.col1 = (select max(col1) from v1) where v1.col1 = t2.col1;
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
update v2,t2 set v2.col1 = (select max(col1) from t1) where v2.col1 = t2.col1;
|
||||
-- error 1093
|
||||
update t1,t2 set t1.col1 = (select max(col1) from t1) where t1.col1 = t2.col1;
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
update v1,t2 set v1.col1 = (select max(col1) from t1) where v1.col1 = t2.col1;
|
||||
-- error 1093
|
||||
update t2,v2 set v2.col1 = (select max(col1) from t1) where v2.col1 = t2.col1;
|
||||
@ -859,74 +859,74 @@ update t2,t1 set t1.col1 = (select max(col1) from t1) where t1.col1 = t2.col1;
|
||||
update t2,v1 set v1.col1 = (select max(col1) from t1) where v1.col1 = t2.col1;
|
||||
-- error 1093
|
||||
update v2,t2 set v2.col1 = (select max(col1) from v2) where v2.col1 = t2.col1;
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
update t1,t2 set t1.col1 = (select max(col1) from v2) where t1.col1 = t2.col1;
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
update v1,t2 set v1.col1 = (select max(col1) from v2) where v1.col1 = t2.col1;
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
update t2,v2 set v2.col1 = (select max(col1) from v2) where v2.col1 = t2.col1;
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
update t2,t1 set t1.col1 = (select max(col1) from v2) where t1.col1 = t2.col1;
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
update t2,v1 set v1.col1 = (select max(col1) from v2) where v1.col1 = t2.col1;
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
update v3 set v3.col1 = (select max(col1) from v1);
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
update v3 set v3.col1 = (select max(col1) from t1);
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
update v3 set v3.col1 = (select max(col1) from v2);
|
||||
-- error 1093
|
||||
update v3 set v3.col1 = (select max(col1) from v3);
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
delete from v2 where col1 = (select max(col1) from v1);
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
delete from v2 where col1 = (select max(col1) from t1);
|
||||
-- error 1093
|
||||
delete from v2 where col1 = (select max(col1) from v2);
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
delete v2 from v2,t2 where (select max(col1) from v1) > 0 and v2.col1 = t2.col1;
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
delete t1 from t1,t2 where (select max(col1) from v1) > 0 and t1.col1 = t2.col1;
|
||||
-- error 1093
|
||||
delete v1 from v1,t2 where (select max(col1) from v1) > 0 and v1.col1 = t2.col1;
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
delete v2 from v2,t2 where (select max(col1) from t1) > 0 and v2.col1 = t2.col1;
|
||||
-- error 1093
|
||||
delete t1 from t1,t2 where (select max(col1) from t1) > 0 and t1.col1 = t2.col1;
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
delete v1 from v1,t2 where (select max(col1) from t1) > 0 and v1.col1 = t2.col1;
|
||||
-- error 1093
|
||||
delete v2 from v2,t2 where (select max(col1) from v2) > 0 and v2.col1 = t2.col1;
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
delete t1 from t1,t2 where (select max(col1) from v2) > 0 and t1.col1 = t2.col1;
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
delete v1 from v1,t2 where (select max(col1) from v2) > 0 and v1.col1 = t2.col1;
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
insert into v2 values ((select max(col1) from v1));
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
insert into t1 values ((select max(col1) from v1));
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
insert into v2 values ((select max(col1) from v1));
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
insert into v2 values ((select max(col1) from t1));
|
||||
-- error 1093
|
||||
insert into t1 values ((select max(col1) from t1));
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
insert into v2 values ((select max(col1) from t1));
|
||||
-- error 1093
|
||||
insert into v2 values ((select max(col1) from v2));
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
insert into t1 values ((select max(col1) from v2));
|
||||
-- error 1093
|
||||
insert into v2 values ((select max(col1) from v2));
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
insert into v3 (col1) values ((select max(col1) from v1));
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
insert into v3 (col1) values ((select max(col1) from t1));
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
insert into v3 (col1) values ((select max(col1) from v2));
|
||||
#check with TZ tables in list
|
||||
-- error 1093
|
||||
-- error 1443
|
||||
insert into v3 (col1) values ((select CONVERT_TZ('20050101000000','UTC','MET') from v2));
|
||||
insert into v3 (col1) values ((select CONVERT_TZ('20050101000000','UTC','MET') from t2));
|
||||
-- error 1048
|
||||
@ -1242,7 +1242,7 @@ create view v3 as select * from t1 where 20 < (select (s1) from v2);
|
||||
-- error 1288
|
||||
insert into v3 values (30);
|
||||
create view v4 as select * from v2 where 20 < (select (s1) from t1);
|
||||
-- error 1093
|
||||
-- error 1288
|
||||
insert into v4 values (30);
|
||||
drop view v4, v3, v2, v1;
|
||||
drop table t1;
|
||||
@ -1760,6 +1760,20 @@ CREATE VIEW v1 AS SELECT SUBSTRING_INDEX("dkjhgd:kjhdjh", ":", 1);
|
||||
SELECT * FROM v1;
|
||||
drop view v1;
|
||||
|
||||
#
|
||||
# hide underlying tables names in case of imposibility to update (BUG#10773)
|
||||
#
|
||||
create table t1 (f59 int, f60 int, f61 int);
|
||||
insert into t1 values (19,41,32);
|
||||
create view v1 as select f59, f60 from t1 where f59 in
|
||||
(select f59 from t1);
|
||||
-- error 1288
|
||||
update v1 set f60=2345;
|
||||
-- error 1443
|
||||
update t1 set f60=(select max(f60) from v1);
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Using var_samp with view (BUG#10651)
|
||||
#
|
||||
|
Reference in New Issue
Block a user