CREATE FUNCTION myfunc_int RETURNS INTEGER SONAME "UDF_EXAMPLE_LIB"; CREATE VIEW v1 AS SELECT myfunc_int(1); connect con1, localhost, root,,; connection con1; SET debug_sync='mysql_create_function_after_lock SIGNAL locked WAIT_FOR go'; CREATE FUNCTION myfunc_double RETURNS REAL SONAME "UDF_EXAMPLE_LIB"; connection default; SET debug_sync='now WAIT_FOR locked'; SET debug_sync='find_udf_before_lock SIGNAL go'; SELECT * FROM v1; myfunc_int(1) 1 FLUSH TABLES; connection con1; SET debug_sync='mysql_drop_function_after_lock SIGNAL locked WAIT_FOR go'; DROP FUNCTION myfunc_double; connection default; SET debug_sync='now WAIT_FOR locked'; SET debug_sync='find_udf_before_lock SIGNAL go'; SELECT * FROM v1; myfunc_int(1) 1 connection con1; disconnect con1; connection default; SET debug_sync='RESET'; DROP VIEW v1; DROP FUNCTION myfunc_int;