diff --git a/test/sql/func-recreate.result b/test/sql/func-recreate.result index 73fb03cc4557080fa401aef4176b718d600ca664..470ce5acd0db5ff182f620000b0994ae8c8ec56c 100644 --- a/test/sql/func-recreate.result +++ b/test/sql/func-recreate.result @@ -12,31 +12,34 @@ box.execute('pragma sql_default_engine=\''..engine..'\'') fiber = require('fiber') --- ... -box.internal.sql_create_function('WAITFOR', 'INT', function (n) fiber.sleep(n) return n end) +flag = true --- ... -ch = fiber.channel(1) +box.internal.sql_create_function('WAITFOR', 'INT', function () while flag do fiber.sleep(0.01) end return 0 end) --- ... -_ = fiber.create(function () ch:put(box.execute('select WAITFOR(0.2)')) end) +ch = fiber.channel(1) --- ... -fiber.sleep(0.1) +_ = fiber.create(function () ch:put(box.execute('select WAITFOR()')) end) --- ... -box.internal.sql_create_function('WAITFOR', 'INT', function (n) require('fiber').sleep(n) return n end) +box.internal.sql_create_function('WAITFOR', 'INT', function () while flag do fiber.sleep(0.01) end return 0 end) --- - error: 'Failed to create function ''WAITFOR'': unable to create function due to active statements' ... +flag = false +--- +... ch:get() --- - metadata: - - name: WAITFOR(0.2) + - name: WAITFOR() type: integer rows: - - [0.2] + - [0] ... -box.internal.sql_create_function('WAITFOR', 'INT', function (n) require('fiber').sleep(n) return n end) +box.internal.sql_create_function('WAITFOR', 'INT', function () while flag do fiber.sleep(0.01) end return 0 end) --- ... diff --git a/test/sql/func-recreate.test.lua b/test/sql/func-recreate.test.lua index 753e9ca4df83212c99d41adbaad83f0028571b43..d482fa9db7439c7743ea2b67cc13ef3c3f9ef41e 100644 --- a/test/sql/func-recreate.test.lua +++ b/test/sql/func-recreate.test.lua @@ -4,14 +4,15 @@ box.execute('pragma sql_default_engine=\''..engine..'\'') -- Check errors during function create process fiber = require('fiber') -box.internal.sql_create_function('WAITFOR', 'INT', function (n) fiber.sleep(n) return n end) +flag = true +box.internal.sql_create_function('WAITFOR', 'INT', function () while flag do fiber.sleep(0.01) end return 0 end) ch = fiber.channel(1) -_ = fiber.create(function () ch:put(box.execute('select WAITFOR(0.2)')) end) -fiber.sleep(0.1) +_ = fiber.create(function () ch:put(box.execute('select WAITFOR()')) end) -box.internal.sql_create_function('WAITFOR', 'INT', function (n) require('fiber').sleep(n) return n end) +box.internal.sql_create_function('WAITFOR', 'INT', function () while flag do fiber.sleep(0.01) end return 0 end) +flag = false ch:get() -box.internal.sql_create_function('WAITFOR', 'INT', function (n) require('fiber').sleep(n) return n end) +box.internal.sql_create_function('WAITFOR', 'INT', function () while flag do fiber.sleep(0.01) end return 0 end) diff --git a/test/sql/suite.ini b/test/sql/suite.ini index a8664c510b5cfbd4aa9b270734c8ee4f8dfdeeec..cc1d641a853ccfc6628423de896606ee710d5649 100644 --- a/test/sql/suite.ini +++ b/test/sql/suite.ini @@ -11,4 +11,3 @@ release_disabled = errinj.test.lua view_delayed_wal.test.lua sql-debug.test.lua disabled = sql-statN-index-drop.test.lua pretest_clean = True fragile = dll.test.lua ; gh-4427 - func-recreate.test.lua ; gh-4384