mariadb/mysql-test/main/sp_gis.test

103 lines
2.1 KiB
Text
Raw Normal View History

Bug#18239 (Possible to overload internal functions with stored functions) Bug#21025 (misleading error message when creating functions named 'x', or 'y') Bug#22619 (Spaces considered harmful) This change contains a fix to report warnings or errors, and multiple tests cases. Before this fix, name collisions between: - Native functions - User Defined Functions - Stored Functions were not systematically reported, leading to confusing behavior. I) Native / User Defined Function Before this fix, is was possible to create a UDF named "foo", with the same name as a native function "foo", but it was impossible to invoke the UDF, since the syntax "foo()" always refer to the native function. After this fix, creating a UDF fails with an error if there is a name collision with a native function. II) Native / Stored Function Before this fix, is was possible to create a SF named "db.foo", with the same name as a native function "foo", but this was confusing since the syntax "foo()" would refer to the native function. To refer to the Stored Function, the user had to use the "db.foo()" syntax. After this fix, creating a Stored Function reports a warning if there is a name collision with a native function. III) User Defined Function / Stored Function Before this fix, creating a User Defined Function "foo" and a Stored Function "db.foo" are mutually exclusive operations. Whenever the second function is created, an error is reported. However, the test suite did not cover this behavior. After this fix, the behavior is unchanged, and is now covered by test cases. Note that the code change in this patch depends on the fix for Bug 21114. mysql-test/r/sp.result: New test cases. mysql-test/r/udf.result: New test cases. mysql-test/t/sp.test: New test cases. mysql-test/t/udf.test: New test cases. sql/sql_lex.cc: Name collisions with native functions. sql/sql_lex.h: Name collisions with native functions. sql/sql_yacc.yy: Name collisions with native functions. sql/share/errmsg.txt: Name collisions with native functions. mysql-test/r/sp_gis.result: New test cases. mysql-test/t/sp_gis.test: New test cases.
2006-11-14 19:34:16 -07:00
-- source include/have_geometry.inc
use test;
#
# BUG#21025: misleading error message when creating functions named 'x', or 'y'
#
--disable_warnings
drop function if exists a;
drop function if exists x;
drop function if exists y;
--enable_warnings
create function a() returns int
return 1;
create function x() returns int
return 2;
create function y() returns int
return 3;
select a();
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
select x();
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
select y();
select x(PointFromText("POINT(10 20)")), y(PointFromText("POINT(10 20)"));
# Non deterministic warnings from db_load_routine
--disable_warnings
Bug#18239 (Possible to overload internal functions with stored functions) Bug#21025 (misleading error message when creating functions named 'x', or 'y') Bug#22619 (Spaces considered harmful) This change contains a fix to report warnings or errors, and multiple tests cases. Before this fix, name collisions between: - Native functions - User Defined Functions - Stored Functions were not systematically reported, leading to confusing behavior. I) Native / User Defined Function Before this fix, is was possible to create a UDF named "foo", with the same name as a native function "foo", but it was impossible to invoke the UDF, since the syntax "foo()" always refer to the native function. After this fix, creating a UDF fails with an error if there is a name collision with a native function. II) Native / Stored Function Before this fix, is was possible to create a SF named "db.foo", with the same name as a native function "foo", but this was confusing since the syntax "foo()" would refer to the native function. To refer to the Stored Function, the user had to use the "db.foo()" syntax. After this fix, creating a Stored Function reports a warning if there is a name collision with a native function. III) User Defined Function / Stored Function Before this fix, creating a User Defined Function "foo" and a Stored Function "db.foo" are mutually exclusive operations. Whenever the second function is created, an error is reported. However, the test suite did not cover this behavior. After this fix, the behavior is unchanged, and is now covered by test cases. Note that the code change in this patch depends on the fix for Bug 21114. mysql-test/r/sp.result: New test cases. mysql-test/r/udf.result: New test cases. mysql-test/t/sp.test: New test cases. mysql-test/t/udf.test: New test cases. sql/sql_lex.cc: Name collisions with native functions. sql/sql_lex.h: Name collisions with native functions. sql/sql_yacc.yy: Name collisions with native functions. sql/share/errmsg.txt: Name collisions with native functions. mysql-test/r/sp_gis.result: New test cases. mysql-test/t/sp_gis.test: New test cases.
2006-11-14 19:34:16 -07:00
select test.a(), test.x(), test.y();
--enable_warnings
Bug#18239 (Possible to overload internal functions with stored functions) Bug#21025 (misleading error message when creating functions named 'x', or 'y') Bug#22619 (Spaces considered harmful) This change contains a fix to report warnings or errors, and multiple tests cases. Before this fix, name collisions between: - Native functions - User Defined Functions - Stored Functions were not systematically reported, leading to confusing behavior. I) Native / User Defined Function Before this fix, is was possible to create a UDF named "foo", with the same name as a native function "foo", but it was impossible to invoke the UDF, since the syntax "foo()" always refer to the native function. After this fix, creating a UDF fails with an error if there is a name collision with a native function. II) Native / Stored Function Before this fix, is was possible to create a SF named "db.foo", with the same name as a native function "foo", but this was confusing since the syntax "foo()" would refer to the native function. To refer to the Stored Function, the user had to use the "db.foo()" syntax. After this fix, creating a Stored Function reports a warning if there is a name collision with a native function. III) User Defined Function / Stored Function Before this fix, creating a User Defined Function "foo" and a Stored Function "db.foo" are mutually exclusive operations. Whenever the second function is created, an error is reported. However, the test suite did not cover this behavior. After this fix, the behavior is unchanged, and is now covered by test cases. Note that the code change in this patch depends on the fix for Bug 21114. mysql-test/r/sp.result: New test cases. mysql-test/r/udf.result: New test cases. mysql-test/t/sp.test: New test cases. mysql-test/t/udf.test: New test cases. sql/sql_lex.cc: Name collisions with native functions. sql/sql_lex.h: Name collisions with native functions. sql/sql_yacc.yy: Name collisions with native functions. sql/share/errmsg.txt: Name collisions with native functions. mysql-test/r/sp_gis.result: New test cases. mysql-test/t/sp_gis.test: New test cases.
2006-11-14 19:34:16 -07:00
drop function a;
drop function x;
drop function y;
--echo #
--echo # Start of 10.5 tests
--echo #
--echo #
--echo # MDEV-19944 Remove GIS data types from keyword list in lex.h
--echo #
CREATE FUNCTION point() RETURNS POINT RETURN NULL;
--disable_warnings
SELECT point();
--enable_warnings
DROP FUNCTION point;
CREATE FUNCTION point(x INT) RETURNS POINT RETURN NULL;
--disable_warnings
SELECT point(1);
--enable_warnings
DROP FUNCTION point;
CREATE FUNCTION point(x INT, y INT) RETURNS POINT RETURN NULL;
SELECT AsText(point(1,1));
DROP FUNCTION point;
CREATE FUNCTION linestring() RETURNS POINT RETURN NULL;
--disable_warnings
SELECT linestring();
--enable_warnings
DROP FUNCTION linestring;
CREATE FUNCTION polygon() RETURNS POINT RETURN NULL;
--disable_warnings
SELECT polygon();
--enable_warnings
DROP FUNCTION polygon;
CREATE FUNCTION multipoint() RETURNS POINT RETURN NULL;
--disable_warnings
SELECT multipoint();
--enable_warnings
DROP FUNCTION multipoint;
CREATE FUNCTION multilinestring() RETURNS POINT RETURN NULL;
--disable_warnings
SELECT multilinestring();
--enable_warnings
DROP FUNCTION multilinestring;
CREATE FUNCTION multipolygon() RETURNS POINT RETURN NULL;
--disable_warnings
SELECT multipolygon();
--enable_warnings
DROP FUNCTION multipolygon;
CREATE FUNCTION geometrycollection() RETURNS POINT RETURN NULL;
--disable_warnings
SELECT geometrycollection();
--enable_warnings
DROP FUNCTION geometrycollection;
--echo #
--echo # End of 10.5 tests
--echo #