From ee06f892bafecd2e5ecfdfb8fdac9c7655d048b9 Mon Sep 17 00:00:00 2001
From: Mergen Imeev <imeevma@tarantool.org>
Date: Tue, 18 Oct 2022 12:52:44 +0300
Subject: [PATCH] box: fix format of _vfunc

The _vfunc system space is the sysview for the _func system space.
However, the _vfunc format is different from the _func format. This
patch makes the _vfunc format the same as the _func format.

Closes #7822

NO_DOC=bugfix

(cherry picked from commit 707da125a750f7d46e0b51ab911d27e169358ffd)
---
 .../unreleased/gh-7822-fix-_vfunc-format.md   |   3 +++
 src/box/bootstrap.snap                        | Bin 4923 -> 4915 bytes
 src/box/lua/upgrade.lua                       |   6 ++++++
 test/box-luatest/func_test.lua                |   7 +++++++
 test/box-py/bootstrap.result                  |   9 ++++++++-
 5 files changed, 24 insertions(+), 1 deletion(-)
 create mode 100644 changelogs/unreleased/gh-7822-fix-_vfunc-format.md

diff --git a/changelogs/unreleased/gh-7822-fix-_vfunc-format.md b/changelogs/unreleased/gh-7822-fix-_vfunc-format.md
new file mode 100644
index 0000000000..6d43c7f507
--- /dev/null
+++ b/changelogs/unreleased/gh-7822-fix-_vfunc-format.md
@@ -0,0 +1,3 @@
+## bugfix/box
+
+* Format of _vfunc is now the same as the format of _func (gh-7822).
diff --git a/src/box/bootstrap.snap b/src/box/bootstrap.snap
index 68399e108a531f384ec2eba38c9a7b73ab7357be..b1398564d2164c56e3299919238f5df2eb0fda0a 100644
GIT binary patch
delta 4908
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

delta 4893
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
PK=ie!B{rWf)ex=icYHc1

diff --git a/src/box/lua/upgrade.lua b/src/box/lua/upgrade.lua
index 8b25d2a48e..d290eefb07 100644
--- a/src/box/lua/upgrade.lua
+++ b/src/box/lua/upgrade.lua
@@ -1247,8 +1247,14 @@ local function revoke_execute_access_to_lua_function_from_role_public()
     end
 end
 
+local function make_vfunc_same_format_as_func()
+    log.info("Make format of _vfunc the same as the format of _func")
+    box.space._vfunc:format(box.space._func:format())
+end
+
 local function upgrade_to_2_10_4()
     revoke_execute_access_to_lua_function_from_role_public()
+    make_vfunc_same_format_as_func()
 end
 --------------------------------------------------------------------------------
 
diff --git a/test/box-luatest/func_test.lua b/test/box-luatest/func_test.lua
index 69f89b119c..a124b66e76 100644
--- a/test/box-luatest/func_test.lua
+++ b/test/box-luatest/func_test.lua
@@ -113,3 +113,10 @@ g.test_msgpack_object_args = function()
     t.assert(g.server:eval('return box.func.check_persistent.takes_raw_args'))
     t.assert(g.server:eval('return box.func.decode_persistent.takes_raw_args'))
 end
+
+g.test_gh_7822_vfunc_format = function()
+    g.server:exec(function()
+        local t = require('luatest')
+        t.assert_equals(box.space._vfunc:format(), box.space._func:format())
+    end)
+end
diff --git a/test/box-py/bootstrap.result b/test/box-py/bootstrap.result
index 8b594ba67d..848fb38bac 100644
--- a/test/box-py/bootstrap.result
+++ b/test/box-py/bootstrap.result
@@ -63,7 +63,14 @@ box.space._space:select{}
         'type': 'string'}, {'name': 'last_altered', 'type': 'string'}]]
   - [297, 1, '_vfunc', 'sysview', 0, {}, [{'name': 'id', 'type': 'unsigned'}, {'name': 'owner',
         'type': 'unsigned'}, {'name': 'name', 'type': 'string'}, {'name': 'setuid',
-        'type': 'unsigned'}]]
+        'type': 'unsigned'}, {'name': 'language', 'type': 'string'}, {'name': 'body',
+        'type': 'string'}, {'name': 'routine_type', 'type': 'string'}, {'name': 'param_list',
+        'type': 'array'}, {'name': 'returns', 'type': 'string'}, {'name': 'aggregate',
+        'type': 'string'}, {'name': 'sql_data_access', 'type': 'string'}, {'name': 'is_deterministic',
+        'type': 'boolean'}, {'name': 'is_sandboxed', 'type': 'boolean'}, {'name': 'is_null_call',
+        'type': 'boolean'}, {'name': 'exports', 'type': 'array'}, {'name': 'opts',
+        'type': 'map'}, {'name': 'comment', 'type': 'string'}, {'name': 'created',
+        'type': 'string'}, {'name': 'last_altered', 'type': 'string'}]]
   - [304, 1, '_user', 'memtx', 0, {}, [{'name': 'id', 'type': 'unsigned'}, {'name': 'owner',
         'type': 'unsigned'}, {'name': 'name', 'type': 'string'}, {'name': 'type',
         'type': 'string'}, {'name': 'auth', 'type': 'map'}]]
-- 
GitLab