Skip to content
Snippets Groups Projects
Commit 0ec52cb9 authored by Roman Tsisyk's avatar Roman Tsisyk
Browse files

Fix #605: scheme_fill.lua is broken

parent ed1123d6
No related branches found
No related tags found
No related merge requests found
File suppressed by a .gitattributes entry or the file's encoding is unsupported.
......@@ -6,21 +6,31 @@ _func = box.space[box.schema.FUNC_ID]
_priv = box.space[box.schema.PRIV_ID]
_cluster = box.space[box.schema.CLUSTER_ID]
-- destroy everything - save snapshot produces an empty snapshot now
_schema:run_triggers(false)
_schema:truncate()
-- space:truncate() doesn't work with disabled triggers on __index
local function truncate(space)
local pk = space.index[0]
while pk:len() > 0 do
local state, t
for state, t in pk:pairs() do
local key = {}
for _k2, parts in ipairs(pk.parts) do
table.insert(key, t[parts.fieldno])
end
space:delete(key)
end
end
end
_space:run_triggers(false)
_space:truncate()
_index:run_triggers(false)
_index:truncate()
_user:run_triggers(false)
_user:truncate()
_func:run_triggers(false)
_func:truncate()
_priv:run_triggers(false)
_priv:truncate()
_cluster:run_triggers(false)
-- select server id 1 - self
t = _cluster:get{1}
_cluster:truncate()
-- preserve self-identification
_cluster:insert(t)
truncate(_space)
truncate(_index)
truncate(_user)
truncate(_func)
truncate(_priv)
_schema:delete('version')
dofile("<builddir>/extra/schema_erase.lua")
---
...
box.space._schema:select{}
---
- - ['cluster', '<cluster uuid>']
...
box.space._cluster:select{}
---
- - [1, '<server uuid>']
...
box.space._space:select{}
---
- []
...
box.space._index:select{}
---
- []
...
box.space._user:select{}
---
- []
...
box.space._func:select{}
---
- []
...
box.space._priv:select{}
---
- []
...
dofile("<builddir>/extra/schema_fill.lua")
---
...
box.snapshot()
---
- ok
...
box.space._schema:select{}
---
- - ['cluster', '<cluster uuid>']
- ['version', 1, 6]
...
box.space._cluster:select{}
---
- - [1, '<server uuid>']
...
box.space._space:select{}
---
- - [272, 1, '_schema', 'memtx', 0]
- [280, 1, '_space', 'memtx', 0]
- [288, 1, '_index', 'memtx', 0]
- [296, 1, '_func', 'memtx', 0]
- [304, 1, '_user', 'memtx', 0]
- [312, 1, '_priv', 'memtx', 0]
- [320, 1, '_cluster', 'memtx', 0]
...
box.space._index:select{}
---
- - [272, 0, 'primary', 'tree', 1, 1, 0, 'str']
- [280, 0, 'primary', 'tree', 1, 1, 0, 'num']
- [280, 1, 'owner', 'tree', 0, 1, 1, 'num']
- [280, 2, 'name', 'tree', 1, 1, 2, 'str']
- [288, 0, 'primary', 'tree', 1, 2, 0, 'num', 1, 'num']
- [288, 2, 'name', 'tree', 1, 2, 0, 'num', 2, 'str']
- [296, 0, 'primary', 'tree', 1, 1, 0, 'num']
- [296, 1, 'owner', 'tree', 0, 1, 1, 'num']
- [296, 2, 'name', 'tree', 1, 1, 2, 'str']
- [304, 0, 'primary', 'tree', 1, 1, 0, 'num']
- [304, 1, 'owner', 'tree', 0, 1, 1, 'num']
- [304, 2, 'name', 'tree', 1, 1, 2, 'str']
- [312, 0, 'primary', 'tree', 1, 3, 1, 'num', 2, 'str', 3, 'num']
- [312, 1, 'owner', 'tree', 0, 1, 0, 'num']
- [312, 2, 'object', 'tree', 0, 2, 2, 'str', 3, 'num']
- [320, 0, 'primary', 'tree', 1, 1, 0, 'num']
- [320, 1, 'uuid', 'tree', 1, 1, 1, 'str']
...
box.space._user:select{}
---
- - [0, 1, 'guest', 'user']
- [1, 1, 'admin', 'user']
- [2, 1, 'public', 'role']
...
box.space._func:select{}
---
- []
...
box.space._priv:select{}
---
- - [1, 1, 'universe', 0, 7]
...
import sys
import yaml
server_uuid = server.get_param('server')['uuid']
sys.stdout.push_filter(server_uuid, '<server uuid>')
cluster_uuid = yaml.load(server.admin('box.space._schema:get("cluster")',
silent = True))[0][1]
sys.stdout.push_filter(cluster_uuid, '<cluster uuid>')
sys.stdout.push_filter(server.builddir, '<builddir>')
server.admin('dofile("%s/extra/schema_erase.lua")' % server.builddir)
server.admin('box.space._schema:select{}')
server.admin('box.space._cluster:select{}')
server.admin('box.space._space:select{}')
server.admin('box.space._index:select{}')
server.admin('box.space._user:select{}')
server.admin('box.space._func:select{}')
server.admin('box.space._priv:select{}')
server.admin('dofile("%s/extra/schema_fill.lua")' % server.builddir)
server.admin("box.snapshot()")
server.restart()
server.admin('box.space._schema:select{}')
server.admin('box.space._cluster:select{}')
server.admin('box.space._space:select{}')
server.admin('box.space._index:select{}')
server.admin('box.space._user:select{}')
server.admin('box.space._func:select{}')
server.admin('box.space._priv:select{}')
# Cleanup
sys.stdout.pop_filter()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment