197 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			197 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| --source include/not_embedded.inc
 | |
| --source include/have_binlog_format_statement.inc
 | |
| 
 | |
| --disable_query_log
 | |
| call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
 | |
| #qc_sqlite: reset master; # get rid of previous tests binlog
 | |
| --enable_query_log
 | |
| 
 | |
| 
 | |
| SET sql_mode=ORACLE;
 | |
| 
 | |
| --echo #
 | |
| --echo # MDEV-10914 ROW data type for stored routine variables
 | |
| --echo #
 | |
| 
 | |
| CREATE TABLE t1 (a INT, b INT);
 | |
| DELIMITER $$;
 | |
| CREATE PROCEDURE p1
 | |
| AS
 | |
|   rec ROW(a INT,b INT);
 | |
| BEGIN
 | |
|   rec.a:=100;
 | |
|   rec.b:=200;
 | |
|   INSERT INTO t1 VALUES (rec.a,rec.b);
 | |
|   INSERT INTO t1 VALUES (10, rec=ROW(100,200));
 | |
|   INSERT INTO t1 VALUES (10, ROW(100,200)=rec);
 | |
|   INSERT INTO t1 SELECT 10, 20 FROM DUAL WHERE rec=ROW(100,200);
 | |
|   INSERT INTO t1 SELECT 10, 21 FROM DUAL WHERE ROW(100,200)=rec;
 | |
|   rec.a:=NULL;
 | |
|   INSERT INTO t1 VALUES (11, rec=ROW(100,200));
 | |
|   INSERT INTO t1 VALUES (11, rec=ROW(100,201));
 | |
|   INSERT INTO t1 VALUES (11, ROW(100,200)=rec);
 | |
|   INSERT INTO t1 VALUES (11, ROW(100,201)=rec);
 | |
|   INSERT INTO t1 SELECT 11, 20 FROM DUAL WHERE rec=ROW(100,200);
 | |
|   INSERT INTO t1 SELECT 11, 21 FROM DUAL WHERE ROW(100,200)=rec;
 | |
|   rec.b:=NULL;
 | |
|   INSERT INTO t1 VALUES (12, rec=ROW(100,200));
 | |
|   INSERT INTO t1 VALUES (12, ROW(100,200)=rec);
 | |
|   INSERT INTO t1 SELECT 12, 20 FROM DUAL WHERE rec=ROW(100,200);
 | |
|   INSERT INTO t1 SELECT 12, 21 FROM DUAL WHERE ROW(100,200)=rec;
 | |
| END;
 | |
| $$
 | |
| DELIMITER ;$$
 | |
| CALL p1();
 | |
| SELECT * FROM t1;
 | |
| DROP TABLE t1;
 | |
| DROP PROCEDURE p1;
 | |
| --let $binlog_file = LAST
 | |
| source include/show_binlog_events.inc;
 | |
| 
 | |
| 
 | |
| --echo #
 | |
| --echo # Testing ROW fields in LIMIT
 | |
| --echo #
 | |
| 
 | |
| FLUSH LOGS;
 | |
| CREATE TABLE t1 (a INT);
 | |
| INSERT INTO t1 VALUES (10),(10);
 | |
| CREATE TABLE t2 (a INT);
 | |
| DELIMITER $$;
 | |
| CREATE PROCEDURE p1()
 | |
| AS
 | |
|   a INT:= 1;
 | |
|   rec ROW(a INT);
 | |
| BEGIN
 | |
|   rec.a:= 1;
 | |
|   INSERT INTO t2 SELECT 1 FROM t1 LIMIT a;
 | |
|   INSERT INTO t2 SELECT 2 FROM t1 LIMIT rec.a;
 | |
| END;
 | |
| $$
 | |
| DELIMITER ;$$
 | |
| CALL p1();
 | |
| DROP TABLE t1,t2;
 | |
| DROP PROCEDURE p1;
 | |
| --let $binlog_file = LAST
 | |
| source include/show_binlog_events.inc;
 | |
| 
 | |
| 
 | |
| --echo #
 | |
| --echo # End of MDEV-10914 ROW data type for stored routine variables
 | |
| --echo #
 | |
| 
 | |
| 
 | |
| --echo #
 | |
| --echo #  MDEV-12133 sql_mode=ORACLE: table%ROWTYPE in variable declarations
 | |
| --echo #
 | |
| 
 | |
| CREATE TABLE t1 (a INT, b INT);
 | |
| DELIMITER $$;
 | |
| CREATE PROCEDURE p1
 | |
| AS
 | |
|   rec t1%ROWTYPE;
 | |
| BEGIN
 | |
|   rec.a:=100;
 | |
|   rec.b:=200;
 | |
|   SELECT rec=ROW(100,200) AS true1, ROW(100,200)=rec AS true2;
 | |
|   INSERT INTO t1 VALUES (rec.a,rec.b);
 | |
|   INSERT INTO t1 VALUES (10, rec=ROW(100,200));
 | |
|   INSERT INTO t1 VALUES (10, ROW(100,200)=rec);
 | |
|   INSERT INTO t1 SELECT 10, 20 FROM DUAL WHERE rec=ROW(100,200);
 | |
|   INSERT INTO t1 SELECT 10, 21 FROM DUAL WHERE ROW(100,200)=rec;
 | |
|   rec.a:=NULL;
 | |
|   INSERT INTO t1 VALUES (11, rec=ROW(100,200));
 | |
|   INSERT INTO t1 VALUES (11, rec=ROW(100,201));
 | |
|   INSERT INTO t1 VALUES (11, ROW(100,200)=rec);
 | |
|   INSERT INTO t1 VALUES (11, ROW(100,201)=rec);
 | |
|   INSERT INTO t1 SELECT 11, 20 FROM DUAL WHERE rec=ROW(100,200);
 | |
|   INSERT INTO t1 SELECT 11, 21 FROM DUAL WHERE ROW(100,200)=rec;
 | |
|   rec.b:=NULL;
 | |
|   INSERT INTO t1 VALUES (12, rec=ROW(100,200));
 | |
|   INSERT INTO t1 VALUES (12, ROW(100,200)=rec);
 | |
|   INSERT INTO t1 SELECT 12, 20 FROM DUAL WHERE rec=ROW(100,200);
 | |
|   INSERT INTO t1 SELECT 12, 21 FROM DUAL WHERE ROW(100,200)=rec;
 | |
| END;
 | |
| $$
 | |
| DELIMITER ;$$
 | |
| CALL p1();
 | |
| SELECT * FROM t1;
 | |
| DROP TABLE t1;
 | |
| DROP PROCEDURE p1;
 | |
| --let $binlog_file = LAST
 | |
| source include/show_binlog_events.inc;
 | |
| 
 | |
| 
 | |
| --echo #
 | |
| --echo # MDEV-12291 Allow ROW variables as SELECT INTO targets
 | |
| --echo #
 | |
| 
 | |
| FLUSH LOGS;
 | |
| CREATE TABLE t1 (a INT, b VARCHAR(32));
 | |
| INSERT INTO t1 VALUES (10, 'b10');
 | |
| CREATE TABLE t2 LIKE t1;
 | |
| DELIMITER $$;
 | |
| CREATE PROCEDURE p1
 | |
| AS
 | |
|   rec1 ROW(a INT, b VARCHAR(32));
 | |
| BEGIN
 | |
|   SELECT * INTO rec1 FROM t1;
 | |
|   INSERT INTO t2 VALUES (rec1.a, rec1.b);
 | |
| END;
 | |
| $$
 | |
| DELIMITER ;$$
 | |
| CALL p1();
 | |
| SELECT * FROM t1;
 | |
| DROP TABLE t1;
 | |
| DROP TABLE t2;
 | |
| DROP PROCEDURE p1;
 | |
| --let $binlog_file = LAST
 | |
| source include/show_binlog_events.inc;
 | |
| 
 | |
| 
 | |
| FLUSH LOGS;
 | |
| CREATE TABLE t1 (a INT, b VARCHAR(32));
 | |
| INSERT INTO t1 VALUES (10, 'b10');
 | |
| CREATE TABLE t2 LIKE t1;
 | |
| DELIMITER $$;
 | |
| CREATE PROCEDURE p1
 | |
| AS
 | |
|   rec1 t1%ROWTYPE;
 | |
| BEGIN
 | |
|   SELECT * INTO rec1 FROM t1;
 | |
|   INSERT INTO t2 VALUES (rec1.a, rec1.b);
 | |
| END;
 | |
| $$
 | |
| DELIMITER ;$$
 | |
| CALL p1();
 | |
| SELECT * FROM t1;
 | |
| DROP TABLE t1;
 | |
| DROP TABLE t2;
 | |
| DROP PROCEDURE p1;
 | |
| --let $binlog_file = LAST
 | |
| source include/show_binlog_events.inc;
 | |
| 
 | |
| 
 | |
| FLUSH LOGS;
 | |
| CREATE TABLE t1 (a INT, b VARCHAR(32));
 | |
| INSERT INTO t1 VALUES (10, 'b10');
 | |
| CREATE TABLE t2 LIKE t1;
 | |
| DELIMITER $$;
 | |
| CREATE PROCEDURE p1
 | |
| AS
 | |
|   CURSOR cur1 IS SELECT * FROM t1;
 | |
|   rec1 cur1%ROWTYPE;
 | |
| BEGIN
 | |
|   SELECT * INTO rec1 FROM t1;
 | |
|   INSERT INTO t2 VALUES (rec1.a, rec1.b);
 | |
| END;
 | |
| $$
 | |
| DELIMITER ;$$
 | |
| CALL p1();
 | |
| SELECT * FROM t1;
 | |
| DROP TABLE t1;
 | |
| DROP TABLE t2;
 | |
| DROP PROCEDURE p1;
 | |
| --let $binlog_file = LAST
 | |
| source include/show_binlog_events.inc;
 | 
