245 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			245 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
--source include/have_innodb.inc
 | 
						|
 | 
						|
SET sql_mode=ORACLE;
 | 
						|
 | 
						|
--echo #
 | 
						|
--echo # MDEV-10655 Anonymous blocks
 | 
						|
--echo #
 | 
						|
 | 
						|
--echo # Testing BEGIN NOT ATOMIC with no declarations
 | 
						|
DELIMITER /;
 | 
						|
BEGIN NOT ATOMIC
 | 
						|
 SELECT 1 AS a;
 | 
						|
END
 | 
						|
/
 | 
						|
DELIMITER ;/
 | 
						|
 | 
						|
--echo # Testing BEGIN NOT ATOMIC with declarations
 | 
						|
--echo # DECLARE starts a new block and thus must be followed by BEGIN .. END
 | 
						|
DELIMITER /;
 | 
						|
BEGIN NOT ATOMIC
 | 
						|
  DECLARE
 | 
						|
    i INT DEFAULT 5;
 | 
						|
    x INT DEFAULT 10;
 | 
						|
  BEGIN
 | 
						|
  <<label>>
 | 
						|
  WHILE i > 3 LOOP
 | 
						|
    i:= i - 1;
 | 
						|
    SELECT i;
 | 
						|
  END LOOP label;
 | 
						|
  END;
 | 
						|
END
 | 
						|
/
 | 
						|
DELIMITER ;/
 | 
						|
 | 
						|
 | 
						|
--echo # Anonymous blocks with no declarations and no exceptions
 | 
						|
 | 
						|
DELIMITER $$;
 | 
						|
BEGIN
 | 
						|
 SELECT 1 AS a;
 | 
						|
END
 | 
						|
$$
 | 
						|
DELIMITER ;$$
 | 
						|
 | 
						|
 | 
						|
SET AUTOCOMMIT=OFF;
 | 
						|
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
 | 
						|
INSERT INTO t1 VALUES (10);
 | 
						|
DELIMITER $$;
 | 
						|
BEGIN
 | 
						|
  INSERT INTO t1 VALUES(20);
 | 
						|
  INSERT INTO t1 VALUES(30);
 | 
						|
  ROLLBACK;
 | 
						|
END;
 | 
						|
$$
 | 
						|
DELIMITER ;$$
 | 
						|
SELECT * FROM t1;
 | 
						|
DROP TABLE t1;
 | 
						|
SET AUTOCOMMIT=DEFAULT;
 | 
						|
 | 
						|
 | 
						|
SET AUTOCOMMIT=OFF;
 | 
						|
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
 | 
						|
INSERT INTO t1 VALUES (10);
 | 
						|
DELIMITER $$;
 | 
						|
BEGIN
 | 
						|
  INSERT INTO t1 VALUES(20);
 | 
						|
  INSERT INTO t1 VALUES(30);
 | 
						|
END;
 | 
						|
$$
 | 
						|
DELIMITER ;$$
 | 
						|
ROLLBACK;
 | 
						|
SELECT * FROM t1;
 | 
						|
DROP TABLE t1;
 | 
						|
SET AUTOCOMMIT=DEFAULT;
 | 
						|
 | 
						|
 | 
						|
SET AUTOCOMMIT=OFF;
 | 
						|
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
 | 
						|
INSERT INTO t1 VALUES (10);
 | 
						|
DELIMITER $$;
 | 
						|
BEGIN
 | 
						|
  INSERT INTO t1 VALUES(20);
 | 
						|
  INSERT INTO t1 VALUES(30);
 | 
						|
  COMMIT;
 | 
						|
END;
 | 
						|
$$
 | 
						|
DELIMITER ;$$
 | 
						|
SELECT * FROM t1;
 | 
						|
DROP TABLE t1;
 | 
						|
SET AUTOCOMMIT=DEFAULT;
 | 
						|
 | 
						|
 | 
						|
SET AUTOCOMMIT=OFF;
 | 
						|
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
 | 
						|
INSERT INTO t1 VALUES (10);
 | 
						|
DELIMITER $$;
 | 
						|
BEGIN
 | 
						|
  INSERT INTO t1 VALUES(20);
 | 
						|
  INSERT INTO t1 VALUES(30);
 | 
						|
END;
 | 
						|
$$
 | 
						|
DELIMITER ;$$
 | 
						|
COMMIT;
 | 
						|
SELECT * FROM t1;
 | 
						|
DROP TABLE t1;
 | 
						|
SET AUTOCOMMIT=DEFAULT;
 | 
						|
 | 
						|
 | 
						|
SET AUTOCOMMIT=OFF;
 | 
						|
CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY) ENGINE=InnoDB;
 | 
						|
INSERT INTO t1 VALUES (10);
 | 
						|
DELIMITER $$;
 | 
						|
--error ER_DUP_ENTRY
 | 
						|
BEGIN
 | 
						|
  INSERT INTO t1 VALUES(20);
 | 
						|
  INSERT INTO t1 VALUES(20);
 | 
						|
END;
 | 
						|
$$
 | 
						|
DELIMITER ;$$
 | 
						|
COMMIT;
 | 
						|
SELECT * FROM t1;
 | 
						|
DROP TABLE t1;
 | 
						|
SET AUTOCOMMIT=DEFAULT;
 | 
						|
 | 
						|
 | 
						|
--echo # Anonymous blocks with no declarations, with exceptions
 | 
						|
 | 
						|
SET AUTOCOMMIT=OFF;
 | 
						|
CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY) ENGINE=InnoDB;
 | 
						|
INSERT INTO t1 VALUES (10);
 | 
						|
DELIMITER $$;
 | 
						|
BEGIN
 | 
						|
  INSERT INTO t1 VALUES(20);
 | 
						|
  INSERT INTO t1 VALUES(20);
 | 
						|
EXCEPTION
 | 
						|
  WHEN DUP_VAL_ON_INDEX THEN NULL;
 | 
						|
END;
 | 
						|
$$
 | 
						|
DELIMITER ;$$
 | 
						|
COMMIT;
 | 
						|
SELECT * FROM t1;
 | 
						|
DROP TABLE t1;
 | 
						|
SET AUTOCOMMIT=DEFAULT;
 | 
						|
 | 
						|
 | 
						|
--echo # Anonymous blocks with declarations, with no exceptions
 | 
						|
 | 
						|
SET AUTOCOMMIT=OFF;
 | 
						|
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
 | 
						|
INSERT INTO t1 VALUES (10);
 | 
						|
DELIMITER $$;
 | 
						|
DECLARE
 | 
						|
  a20 INT:=20;
 | 
						|
  a30 INT:=30;
 | 
						|
BEGIN
 | 
						|
  INSERT INTO t1 VALUES(a20);
 | 
						|
  INSERT INTO t1 VALUES(a30);
 | 
						|
  ROLLBACK;
 | 
						|
END;
 | 
						|
$$
 | 
						|
DELIMITER ;$$
 | 
						|
SELECT * FROM t1;
 | 
						|
DROP TABLE t1;
 | 
						|
SET AUTOCOMMIT=DEFAULT;
 | 
						|
 | 
						|
 | 
						|
SET AUTOCOMMIT=OFF;
 | 
						|
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
 | 
						|
INSERT INTO t1 VALUES (10);
 | 
						|
DELIMITER $$;
 | 
						|
DECLARE
 | 
						|
  a20 INT:=20;
 | 
						|
  a30 INT:=30;
 | 
						|
BEGIN
 | 
						|
  INSERT INTO t1 VALUES(a20);
 | 
						|
  INSERT INTO t1 VALUES(a30);
 | 
						|
END;
 | 
						|
$$
 | 
						|
DELIMITER ;$$
 | 
						|
ROLLBACK;
 | 
						|
SELECT * FROM t1;
 | 
						|
DROP TABLE t1;
 | 
						|
SET AUTOCOMMIT=DEFAULT;
 | 
						|
 | 
						|
 | 
						|
SET AUTOCOMMIT=OFF;
 | 
						|
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
 | 
						|
INSERT INTO t1 VALUES (10);
 | 
						|
DELIMITER $$;
 | 
						|
DECLARE
 | 
						|
  a20 INT:=20;
 | 
						|
  a30 INT:=30;
 | 
						|
BEGIN
 | 
						|
  INSERT INTO t1 VALUES(a20);
 | 
						|
  INSERT INTO t1 VALUES(a30);
 | 
						|
  COMMIT;
 | 
						|
END;
 | 
						|
$$
 | 
						|
DELIMITER ;$$
 | 
						|
SELECT * FROM t1;
 | 
						|
DROP TABLE t1;
 | 
						|
SET AUTOCOMMIT=DEFAULT;
 | 
						|
 | 
						|
 | 
						|
SET AUTOCOMMIT=OFF;
 | 
						|
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
 | 
						|
INSERT INTO t1 VALUES (10);
 | 
						|
DELIMITER $$;
 | 
						|
DECLARE
 | 
						|
  a20 INT:=20;
 | 
						|
  a30 INT:=30;
 | 
						|
BEGIN
 | 
						|
  INSERT INTO t1 VALUES(a20);
 | 
						|
  INSERT INTO t1 VALUES(a30);
 | 
						|
END;
 | 
						|
$$
 | 
						|
DELIMITER ;$$
 | 
						|
COMMIT;
 | 
						|
SELECT * FROM t1;
 | 
						|
DROP TABLE t1;
 | 
						|
SET AUTOCOMMIT=DEFAULT;
 | 
						|
 | 
						|
 | 
						|
--echo # Anonymous blocks with declarations, with exceptions
 | 
						|
 | 
						|
SET AUTOCOMMIT=OFF;
 | 
						|
CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY) ENGINE=InnoDB;
 | 
						|
INSERT INTO t1 VALUES (10);
 | 
						|
DELIMITER $$;
 | 
						|
DECLARE
 | 
						|
  a20 INT:=20;
 | 
						|
BEGIN
 | 
						|
  INSERT INTO t1 VALUES(a20);
 | 
						|
  INSERT INTO t1 VALUES(a20);
 | 
						|
EXCEPTION
 | 
						|
  WHEN DUP_VAL_ON_INDEX THEN NULL;
 | 
						|
END;
 | 
						|
$$
 | 
						|
DELIMITER ;$$
 | 
						|
COMMIT;
 | 
						|
SELECT * FROM t1;
 | 
						|
DROP TABLE t1;
 | 
						|
SET AUTOCOMMIT=DEFAULT;
 |