mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 20:12:31 +01:00
173 lines
4.2 KiB
Text
173 lines
4.2 KiB
Text
CREATE TABLE t1 (a INT PRIMARY KEY)|
|
|
BEGIN NOT ATOMIC
|
|
INSERT INTO t1 VALUES (1);
|
|
INSERT INTO t1 VALUES (2);
|
|
INSERT INTO t1 VALUES (3);
|
|
END|
|
|
SELECT * FROM t1|
|
|
a
|
|
1
|
|
2
|
|
3
|
|
PREPARE stmt FROM "BEGIN NOT ATOMIC
|
|
INSERT INTO t1 VALUES (4);
|
|
INSERT INTO t1 VALUES (5);
|
|
INSERT INTO t1 VALUES (?);
|
|
END";
|
|
SET @val = 6|
|
|
reset master|
|
|
EXECUTE stmt USING @val|
|
|
SELECT * FROM t1|
|
|
a
|
|
1
|
|
2
|
|
3
|
|
4
|
|
5
|
|
6
|
|
include/show_binlog_events.inc
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (4)
|
|
master-bin.000001 # Query # # COMMIT
|
|
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (5)
|
|
master-bin.000001 # Query # # COMMIT
|
|
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (6)
|
|
master-bin.000001 # Query # # COMMIT
|
|
DROP TABLE t1|
|
|
CREATE DATABASE mysqltest1|
|
|
CREATE PROCEDURE mysqltest1.sp1()
|
|
BEGIN
|
|
PREPARE stmt FROM "BEGIN NOT ATOMIC CREATE TABLE t1 AS SELECT DATABASE(); END";
|
|
EXECUTE stmt;
|
|
END|
|
|
CALL mysqltest1.sp1()|
|
|
SELECT * FROM mysqltest1.t1|
|
|
DATABASE()
|
|
mysqltest1
|
|
USE mysqltest1|
|
|
DROP DATABASE mysqltest1|
|
|
BEGIN NOT ATOMIC CREATE TABLE t1(a int); END|
|
|
ERROR 3D000: No database selected
|
|
BEGIN NOT ATOMIC SET @a=1; CREATE TABLE test.t1(a int); END|
|
|
USE test|
|
|
show tables|
|
|
Tables_in_test
|
|
t1
|
|
drop table t1|
|
|
/**/ if (select count(*) from information_schema.tables
|
|
where table_schema='test' and table_name='t1') = 0
|
|
then
|
|
create table t1 (a int);
|
|
end if|
|
|
show tables|
|
|
Tables_in_test
|
|
t1
|
|
/**/ if (select count(*) from information_schema.tables
|
|
where table_schema='test' and table_name='t1') = 0
|
|
then
|
|
create table t1 (a int);
|
|
end if|
|
|
show tables|
|
|
Tables_in_test
|
|
t1
|
|
case (select table_name from information_schema.tables where table_schema='test')
|
|
when 't1' then create table t2 (b int);
|
|
when 't2' then create table t3 (b int);
|
|
else signal sqlstate '42S02';
|
|
end case|
|
|
show tables|
|
|
Tables_in_test
|
|
t1
|
|
t2
|
|
case
|
|
when database() = 'test' then create table t3 (test text);
|
|
when now() < date'2001-02-03' then create table oops (machine time);
|
|
end case|
|
|
show tables|
|
|
Tables_in_test
|
|
t1
|
|
t2
|
|
t3
|
|
loop
|
|
create table t4 (a int);
|
|
end loop|
|
|
ERROR 42S01: Table 't4' already exists
|
|
show tables|
|
|
Tables_in_test
|
|
t1
|
|
t2
|
|
t3
|
|
t4
|
|
set @a=0;
|
|
repeat
|
|
set @a = @a + 1;
|
|
until @a > 5
|
|
end repeat|
|
|
select @a|
|
|
@a
|
|
6
|
|
/**/ while (select count(*) from information_schema.tables where table_schema='test')
|
|
do
|
|
select concat('drop table ', table_name) into @a
|
|
from information_schema.tables where table_schema='test'
|
|
order by table_name limit 1;
|
|
select @a as 'executing:';
|
|
prepare dt from @a;
|
|
execute dt;
|
|
end while|
|
|
executing: drop table t1
|
|
executing: drop table t2
|
|
executing: drop table t3
|
|
executing: drop table t4
|
|
create table t1 (x int)|
|
|
create function fn(a int) returns int
|
|
begin
|
|
insert t1 values (a+7);
|
|
return a+8;
|
|
end|
|
|
reset master|
|
|
/**/ if fn(9) > 5 then
|
|
select 1;
|
|
end if|
|
|
1
|
|
1
|
|
prepare stmt from "if fn(?) > 6 then
|
|
begin
|
|
declare a int;
|
|
set a=?*2;
|
|
insert t1 values(a+?);
|
|
end;
|
|
end if"|
|
|
set @a=1, @b=2, @c=3|
|
|
execute stmt using @a, @b, @c|
|
|
include/show_binlog_events.inc
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; SELECT `test`.`fn`(9)
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; SELECT `test`.`fn`(1)
|
|
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; insert t1 values( NAME_CONST('a',4)+3)
|
|
master-bin.000001 # Query # # COMMIT
|
|
drop function fn|
|
|
drop table t1|
|
|
set @@sql_mode="STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";
|
|
begin not atomic select @@sql_mode; end|
|
|
@@sql_mode
|
|
STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
|
|
create table t1 (a int)|
|
|
select a from t1 having a > 1|
|
|
a
|
|
begin not atomic select a from t1 having a > 1; end|
|
|
a
|
|
drop table t1|
|
|
#
|
|
# MDEV-8615: Assertion `m_cpp_buf <= begin_ptr &&
|
|
# begin_ptr <= m_cpp_buf + m_buf_length' failed in
|
|
# Lex_input_stream::body_utf8_start
|
|
#
|
|
b'|
|
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'b'' at line 1
|