mirror of
https://github.com/MariaDB/server.git
synced 2025-07-21 21:22:27 +03:00
120 lines
2.0 KiB
Plaintext
120 lines
2.0 KiB
Plaintext
SET sql_mode=ORACLE;
|
|
|
|
--echo #
|
|
--echo # MDEV-10596 Allow VARCHAR and VARCHAR2 without length as a data type of routine parameters and in RETURN clause
|
|
--echo #
|
|
|
|
--let type = CHAR
|
|
--let length = 2000
|
|
--source sp-param.inc
|
|
|
|
--let type = NCHAR
|
|
--let length = 2000
|
|
--source sp-param.inc
|
|
|
|
--let type = BINARY
|
|
--let length = 2000
|
|
--source sp-param.inc
|
|
|
|
--let type = VARCHAR
|
|
--let length = 4000
|
|
--source sp-param.inc
|
|
|
|
--let type = VARCHAR2
|
|
--let length = 4000
|
|
--source sp-param.inc
|
|
|
|
--let type = NVARCHAR
|
|
--let length = 4000
|
|
--source sp-param.inc
|
|
|
|
--let type = VARBINARY
|
|
--let length = 4000
|
|
--source sp-param.inc
|
|
|
|
--let type = RAW
|
|
--let length = 4000
|
|
--source sp-param.inc
|
|
|
|
--echo
|
|
--echo MDEV-13919 sql_mode=ORACLE: Derive length of VARCHAR SP parameters with no length from actual parameters
|
|
--echo
|
|
set sql_mode= 'oracle,strict_trans_tables';
|
|
delimiter /;
|
|
CREATE OR REPLACE PROCEDURE p1(pinout INOUT varchar, pin IN varchar)
|
|
AS
|
|
BEGIN
|
|
pinout:=pin;
|
|
END;
|
|
/
|
|
call p1(@w,'0123456789')
|
|
/
|
|
declare w varchar(10);
|
|
begin
|
|
call p1(w,'0123456789');
|
|
end;
|
|
/
|
|
--error ER_DATA_TOO_LONG
|
|
declare w varchar(5);
|
|
begin
|
|
call p1(w,'0123456789');
|
|
end;
|
|
/
|
|
declare w varchar(20);
|
|
begin
|
|
w:='aaa';
|
|
call p1(w,'0123456789');
|
|
end;
|
|
/
|
|
--error ER_DATA_TOO_LONG
|
|
declare w varchar(8);
|
|
begin
|
|
w:='aaa';
|
|
call p1(w,'0123456789');
|
|
end;
|
|
/
|
|
declare str varchar(6000);
|
|
pout varchar(6000);
|
|
begin
|
|
str:=lpad('x',6000,'y');
|
|
call p1(pout,str);
|
|
select length(pout);
|
|
end;
|
|
/
|
|
--error ER_DATA_TOO_LONG
|
|
declare str varchar(6000);
|
|
pout varchar(4000);
|
|
begin
|
|
str:=lpad('x',6000,'y');
|
|
call p1(pout,str);
|
|
select length(pout);
|
|
end;
|
|
/
|
|
declare str varchar(40000);
|
|
pout varchar(60000);
|
|
begin
|
|
str:=lpad('x',40000,'y');
|
|
call p1(pout,str);
|
|
select length(pout);
|
|
end;
|
|
/
|
|
--error ER_DATA_TOO_LONG
|
|
declare str text(80000);
|
|
pout text(80000);
|
|
begin
|
|
str:=lpad('x',80000,'y');
|
|
call p1(pout,str);
|
|
select length(pout);
|
|
end;
|
|
/
|
|
declare str text(80000);
|
|
pout text(80000);
|
|
begin
|
|
str:=lpad('x',60000,'y');
|
|
call p1(pout,str);
|
|
select length(pout);
|
|
end;
|
|
/
|
|
drop procedure p1
|
|
/
|