mirror of
https://github.com/MariaDB/server.git
synced 2025-09-02 09:41:40 +03:00
Fix for BUG#18587: Function that accepts and returns TEXT
garbles data if longer than 766 chars. The problem is that a stored routine returns BLOBs to the previous caller, BLOBs are shallow-copied (i.e. only pointers to the data are copied). The fix is to also copy data of BLOBs.
This commit is contained in:
@@ -4929,4 +4929,35 @@ j
|
||||
drop table t3|
|
||||
drop view v1|
|
||||
drop function bug12472|
|
||||
DROP FUNCTION IF EXISTS bug18589_f1|
|
||||
DROP PROCEDURE IF EXISTS bug18589_p1|
|
||||
DROP PROCEDURE IF EXISTS bug18589_p2|
|
||||
CREATE FUNCTION bug18589_f1(arg TEXT) RETURNS TEXT
|
||||
BEGIN
|
||||
RETURN CONCAT(arg, "");
|
||||
END|
|
||||
CREATE PROCEDURE bug18589_p1(arg TEXT, OUT ret TEXT)
|
||||
BEGIN
|
||||
SET ret = CONCAT(arg, "");
|
||||
END|
|
||||
CREATE PROCEDURE bug18589_p2(arg TEXT)
|
||||
BEGIN
|
||||
DECLARE v TEXT;
|
||||
CALL bug18589_p1(arg, v);
|
||||
SELECT v;
|
||||
END|
|
||||
SELECT bug18589_f1(REPEAT("a", 767))|
|
||||
bug18589_f1(REPEAT("a", 767))
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
SET @bug18589_v1 = ""|
|
||||
CALL bug18589_p1(REPEAT("a", 767), @bug18589_v1)|
|
||||
SELECT @bug18589_v1|
|
||||
@bug18589_v1
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
CALL bug18589_p2(REPEAT("a", 767))|
|
||||
v
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
DROP FUNCTION bug18589_f1|
|
||||
DROP PROCEDURE bug18589_p1|
|
||||
DROP PROCEDURE bug18589_p2|
|
||||
drop table t1,t2;
|
||||
|
@@ -5796,6 +5796,53 @@ drop view v1|
|
||||
drop function bug12472|
|
||||
|
||||
|
||||
#
|
||||
# BUG#18587: Function that accepts and returns TEXT garbles data if longer than
|
||||
# 766 chars
|
||||
#
|
||||
|
||||
# Prepare.
|
||||
|
||||
--disable_warnings
|
||||
DROP FUNCTION IF EXISTS bug18589_f1|
|
||||
DROP PROCEDURE IF EXISTS bug18589_p1|
|
||||
DROP PROCEDURE IF EXISTS bug18589_p2|
|
||||
--enable_warnings
|
||||
|
||||
CREATE FUNCTION bug18589_f1(arg TEXT) RETURNS TEXT
|
||||
BEGIN
|
||||
RETURN CONCAT(arg, "");
|
||||
END|
|
||||
|
||||
CREATE PROCEDURE bug18589_p1(arg TEXT, OUT ret TEXT)
|
||||
BEGIN
|
||||
SET ret = CONCAT(arg, "");
|
||||
END|
|
||||
|
||||
CREATE PROCEDURE bug18589_p2(arg TEXT)
|
||||
BEGIN
|
||||
DECLARE v TEXT;
|
||||
CALL bug18589_p1(arg, v);
|
||||
SELECT v;
|
||||
END|
|
||||
|
||||
# Test case.
|
||||
|
||||
SELECT bug18589_f1(REPEAT("a", 767))|
|
||||
|
||||
SET @bug18589_v1 = ""|
|
||||
CALL bug18589_p1(REPEAT("a", 767), @bug18589_v1)|
|
||||
SELECT @bug18589_v1|
|
||||
|
||||
CALL bug18589_p2(REPEAT("a", 767))|
|
||||
|
||||
# Cleanup.
|
||||
|
||||
DROP FUNCTION bug18589_f1|
|
||||
DROP PROCEDURE bug18589_p1|
|
||||
DROP PROCEDURE bug18589_p2|
|
||||
|
||||
|
||||
#
|
||||
# BUG#NNNN: New bug synopsis
|
||||
#
|
||||
|
Reference in New Issue
Block a user