1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

Fix for BUG#20550: Stored function: wrong RETURN type metadata

when used in a VIEW.

The problem was that wrong function (create_tmp_from_item())
was used to create a temporary field for Item_func_sp.

The fix is to use create_tmp_from_field().
This commit is contained in:
anozdrin/alik@station.
2007-10-05 16:35:01 +04:00
parent 7f554deb95
commit ac875690f7
4 changed files with 168 additions and 1 deletions

View File

@ -4914,7 +4914,7 @@ create table t3 as select * from v1|
show create table t3|
Table Create Table
t3 CREATE TABLE `t3` (
`j` bigint(11) DEFAULT NULL
`j` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
select * from t3|
j
@ -6599,3 +6599,51 @@ DROP TABLE t1;
DROP PROCEDURE p1;
DROP PROCEDURE p2;
End of 5.0 tests
#
# Bug#20550.
#
#
# - Prepare.
#
DROP VIEW IF EXISTS v1;
DROP VIEW IF EXISTS v2;
DROP FUNCTION IF EXISTS f1;
DROP FUNCTION IF EXISTS f2;
#
# - Create required objects.
#
CREATE FUNCTION f1() RETURNS VARCHAR(65525) RETURN 'Hello';
CREATE FUNCTION f2() RETURNS TINYINT RETURN 1;
CREATE VIEW v1 AS SELECT f1();
CREATE VIEW v2 AS SELECT f2();
#
# - Check.
#
SELECT DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'v1';
DATA_TYPE
varchar
SELECT DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'v2';
DATA_TYPE
tinyint
#
# - Cleanup.
#
DROP FUNCTION f1;
DROP FUNCTION f2;
DROP VIEW v1;
DROP VIEW v2;
End of 5.1 tests

View File

@ -7549,3 +7549,87 @@ DROP PROCEDURE p1;
DROP PROCEDURE p2;
--echo End of 5.0 tests
###########################################################################
#
# Bug#20550: Stored function: wrong RETURN type metadata when used in a VIEW.
#
###########################################################################
--echo
--echo #
--echo # Bug#20550.
--echo #
--echo
--echo #
--echo # - Prepare.
--echo #
--echo
--disable_warnings
DROP VIEW IF EXISTS v1;
DROP VIEW IF EXISTS v2;
DROP FUNCTION IF EXISTS f1;
DROP FUNCTION IF EXISTS f2;
--enable_warnings
--echo
--echo #
--echo # - Create required objects.
--echo #
--echo
CREATE FUNCTION f1() RETURNS VARCHAR(65525) RETURN 'Hello';
--echo
CREATE FUNCTION f2() RETURNS TINYINT RETURN 1;
--echo
CREATE VIEW v1 AS SELECT f1();
--echo
CREATE VIEW v2 AS SELECT f2();
--echo
--echo #
--echo # - Check.
--echo #
--echo
SELECT DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'v1';
--echo
SELECT DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'v2';
--echo
--echo #
--echo # - Cleanup.
--echo #
--echo
DROP FUNCTION f1;
DROP FUNCTION f2;
DROP VIEW v1;
DROP VIEW v2;
--echo
###########################################################################
--echo End of 5.1 tests