mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 21:42:35 +01:00
e703c6a78c
causes out of memory errors The code in mysql_create_function() and mysql_drop_function() assumed that the only reason for UDFs being uninitialized at that point is an out-of-memory error during initialization. However, another possible reason for that is the --skip-grant-tables option in which case UDF initialization is skipped and UDFs are unavailable. The solution is to check whether mysqld is running with --skip-grant-tables and issue a proper error in such a case.
77 lines
2 KiB
Text
77 lines
2 KiB
Text
use test;
|
|
DROP VIEW IF EXISTS v1;
|
|
DROP VIEW IF EXISTS v2;
|
|
DROP VIEW IF EXISTS v3;
|
|
DROP TABLE IF EXISTS t1;
|
|
DROP PROCEDURE IF EXISTS p1;
|
|
DROP PROCEDURE IF EXISTS p2;
|
|
DROP PROCEDURE IF EXISTS p3;
|
|
DROP FUNCTION IF EXISTS f1;
|
|
DROP FUNCTION IF EXISTS f2;
|
|
DROP FUNCTION IF EXISTS f3;
|
|
CREATE TABLE t1(c INT);
|
|
CREATE TRIGGER t1_bi BEFORE INSERT ON t1
|
|
FOR EACH ROW
|
|
SET @a = 1;
|
|
CREATE VIEW v1 AS SELECT * FROM t1;
|
|
CREATE PROCEDURE p1()
|
|
SELECT 1;
|
|
CREATE FUNCTION f1() RETURNS INT
|
|
RETURN 1;
|
|
CREATE DEFINER=a@b TRIGGER ti_ai AFTER INSERT ON t1
|
|
FOR EACH ROW
|
|
SET @b = 1;
|
|
CREATE DEFINER=a@b VIEW v2 AS SELECT * FROM t1;
|
|
CREATE DEFINER=a@b PROCEDURE p2()
|
|
SELECT 2;
|
|
CREATE DEFINER=a@b FUNCTION f2() RETURNS INT
|
|
RETURN 2;
|
|
CREATE DEFINER=a@'' TRIGGER ti_bu BEFORE UPDATE ON t1
|
|
FOR EACH ROW
|
|
SET @c = 1;
|
|
CREATE DEFINER=a@'' VIEW v3 AS SELECT * FROM t1;
|
|
CREATE DEFINER=a@'' PROCEDURE p3()
|
|
SELECT 3;
|
|
CREATE DEFINER=a@'' FUNCTION f3() RETURNS INT
|
|
RETURN 3;
|
|
SHOW CREATE VIEW v3;
|
|
View Create View
|
|
v3 CREATE ALGORITHM=UNDEFINED DEFINER=`a`@`` SQL SECURITY DEFINER VIEW `v3` AS select `t1`.`c` AS `c` from `t1`
|
|
SHOW CREATE PROCEDURE p3;
|
|
Procedure sql_mode Create Procedure
|
|
p3 CREATE DEFINER=`a`@`` PROCEDURE `p3`()
|
|
SELECT 3
|
|
SHOW CREATE FUNCTION f3;
|
|
Function sql_mode Create Function
|
|
f3 CREATE DEFINER=`a`@`` FUNCTION `f3`() RETURNS int(11)
|
|
RETURN 3
|
|
DROP TRIGGER t1_bi;
|
|
DROP TRIGGER ti_ai;
|
|
DROP TRIGGER ti_bu;
|
|
DROP VIEW v1;
|
|
DROP VIEW v2;
|
|
DROP VIEW v3;
|
|
DROP TABLE t1;
|
|
DROP PROCEDURE p1;
|
|
DROP PROCEDURE p2;
|
|
DROP PROCEDURE p3;
|
|
DROP FUNCTION f1;
|
|
DROP FUNCTION f2;
|
|
DROP FUNCTION f3;
|
|
select count(*) from information_schema.COLUMN_PRIVILEGES;
|
|
count(*)
|
|
0
|
|
select count(*) from information_schema.SCHEMA_PRIVILEGES;
|
|
count(*)
|
|
0
|
|
select count(*) from information_schema.TABLE_PRIVILEGES;
|
|
count(*)
|
|
0
|
|
select count(*) from information_schema.USER_PRIVILEGES;
|
|
count(*)
|
|
0
|
|
CREATE FUNCTION a RETURNS STRING SONAME '';
|
|
ERROR HY000: Can't initialize function 'a'; UDFs are unavailable with the --skip-grant-tables option
|
|
DROP FUNCTION a;
|
|
ERROR 42000: FUNCTION test.a does not exist
|
|
End of 5.0 tests
|