86 lines
2.7 KiB
Plaintext
86 lines
2.7 KiB
Plaintext
# This test serves as rough measurement of performance of old UDF creation to ne registration
|
|
# of UDFs. The other test, being functional equivalent to this is "udf_reg_3 funcs".
|
|
# Run both tests with "mtr --repeat=9 --suite=service_udf_registration udf udf_reg_3_func".
|
|
# Then compare the run time. Register/unregister must not be slower in average than old style.
|
|
# Functional equivalence:
|
|
# - Create/register 3 UDFS
|
|
# - Use them in exactly same way in both tests
|
|
# - DROP/unregister 3 UDFs.
|
|
# - Verify, that they are not more available.
|
|
# - Create/register them again.
|
|
# - Use myfunc_int and myfunc_double.
|
|
# - Drop/unregister myfunc_int.
|
|
# - Use myfunc_int and myfunc_double (int must fail).
|
|
# - Drop/unregister UDFs.
|
|
|
|
--source include/have_udf.inc
|
|
|
|
--disable_warnings
|
|
drop table if exists t1;
|
|
--enable_warnings
|
|
|
|
# Create 3 UDFS
|
|
--replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
|
|
eval CREATE FUNCTION myfunc_double RETURNS REAL SONAME "$UDF_EXAMPLE_LIB";
|
|
--replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
|
|
eval CREATE FUNCTION myfunc_int RETURNS INTEGER SONAME "$UDF_EXAMPLE_LIB";
|
|
--replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
|
|
eval CREATE AGGREGATE FUNCTION avgcost RETURNS REAL SONAME "$UDF_EXAMPLE_LIB";
|
|
|
|
# Use UDFs in exactly same way in both tests
|
|
--error ER_CANT_INITIALIZE_UDF
|
|
SELECT myfunc_double();
|
|
SELECT myfunc_double(1);
|
|
SELECT myfunc_double(78654);
|
|
SELECT myfunc_int();
|
|
SELECT myfunc_int(5);
|
|
SELECT myfunc_int('MySQL V8.0');
|
|
|
|
CREATE TABLE t1(a INT, b INT);
|
|
INSERT INTO t1 values (1,1),(2,2);
|
|
SELECT myfunc_int(a AS attr_name) FROM t1;
|
|
DROP TABLE t1;
|
|
|
|
CREATE TABLE t1(sum int, price float(24));
|
|
INSERT INTO t1 VALUES(100, 50.00), (100, 100.00);
|
|
SELECT avgcost(sum, price) from t1;
|
|
DELETE from t1;
|
|
INSERT INTO t1 VALUES(100, 54.33), (200, 199.99);
|
|
SELECT avgcost(sum, price) from t1;
|
|
DROP TABLE t1;
|
|
|
|
# DROP 3 UDFs.
|
|
DROP FUNCTION myfunc_double;
|
|
DROP FUNCTION myfunc_int;
|
|
DROP FUNCTION avgcost;
|
|
|
|
# Verify, that they are not more available.
|
|
--error ER_SP_DOES_NOT_EXIST
|
|
SELECT myfunc_double(1);
|
|
--error ER_SP_DOES_NOT_EXIST
|
|
SELECT myfunc_int(1);
|
|
|
|
# Create them again.
|
|
--replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
|
|
eval CREATE FUNCTION myfunc_double RETURNS REAL SONAME "$UDF_EXAMPLE_LIB";
|
|
--replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
|
|
eval CREATE FUNCTION myfunc_int RETURNS INTEGER SONAME "$UDF_EXAMPLE_LIB";
|
|
--replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
|
|
eval CREATE AGGREGATE FUNCTION avgcost RETURNS REAL SONAME "$UDF_EXAMPLE_LIB";
|
|
|
|
# Use myfunc_int and myfunc_double.
|
|
SELECT myfunc_double(78654);
|
|
SELECT myfunc_int(5);
|
|
|
|
# Drop myfunc_int.
|
|
DROP FUNCTION myfunc_int;
|
|
|
|
# Use myfunc_int and myfunc_double (int must fail).
|
|
SELECT myfunc_double(78654);
|
|
--error ER_SP_DOES_NOT_EXIST
|
|
SELECT myfunc_int(5);
|
|
|
|
# Drop UDFs.
|
|
DROP FUNCTION myfunc_double;
|
|
DROP FUNCTION avgcost;
|