From: Nikita Pettik <korablev@tarantool.org> To: Vladislav Shpilevoy <v.shpilevoy@tarantool.org> Cc: tarantool-patches@dev.tarantool.org Subject: Re: [Tarantool-patches] [PATCH v3 0/2] vinyl: rework upsert operation Date: Tue, 13 Oct 2020 10:18:39 +0000 [thread overview] Message-ID: <20201013101839.GA18306@tarantool.org> (raw) In-Reply-To: <0a5e175c-aeb1-a847-ebca-ba5cdbaaca11@tarantool.org> On 11 Oct 17:35, Vladislav Shpilevoy wrote: > The patchset looks good except for not having a backward compatibility test. Here's a test: diff --git a/test/vinyl/upgrade/upsert/00000000000000000000.vylog b/test/vinyl/upgrade/upsert/00000000000000000000.vylog new file mode 100644 index 000000000..581ad9b53 Binary files /dev/null and b/test/vinyl/upgrade/upsert/00000000000000000000.vylog differ diff --git a/test/vinyl/upgrade/upsert/00000000000000000004.vylog b/test/vinyl/upgrade/upsert/00000000000000000004.vylog new file mode 100644 index 000000000..5194b1457 Binary files /dev/null and b/test/vinyl/upgrade/upsert/00000000000000000004.vylog differ diff --git a/test/vinyl/upgrade/upsert/00000000000000000004.xlog b/test/vinyl/upgrade/upsert/00000000000000000004.xlog new file mode 100644 index 000000000..5725d09ce Binary files /dev/null and b/test/vinyl/upgrade/upsert/00000000000000000004.xlog differ diff --git a/test/vinyl/upgrade/upsert/00000000000000000010.vylog b/test/vinyl/upgrade/upsert/00000000000000000010.vylog new file mode 100644 index 000000000..954a51a4c Binary files /dev/null and b/test/vinyl/upgrade/upsert/00000000000000000010.vylog differ diff --git a/test/vinyl/upgrade/upsert/00000000000000000010.xlog b/test/vinyl/upgrade/upsert/00000000000000000010.xlog new file mode 100644 index 000000000..f5921223d --- /dev/null +++ b/test/vinyl/upgrade/upsert/00000000000000000010.xlog @@ -0,0 +1,8 @@ +XLOG +0.13 +Version: 2.6.0-153-g3bc455f7d +Instance: 4b1aba36-0cbc-4d51-9968-53da3908a43d +VClock: {1: 10} +PrevVClock: {1: 4} + +<D5>^P<AD><ED> \ No newline at end of file diff --git a/test/vinyl/upgrade/upsert/512/0/00000000000000000002.index b/test/vinyl/upgrade/upsert/512/0/00000000000000000002.index new file mode 100644 index 000000000..156c23dd7 Binary files /dev/null and b/test/vinyl/upgrade/upsert/512/0/00000000000000000002.index differ diff --git a/test/vinyl/upgrade/upsert/512/0/00000000000000000002.run b/test/vinyl/upgrade/upsert/512/0/00000000000000000002.run new file mode 100644 index 000000000..9757ea341 Binary files /dev/null and b/test/vinyl/upgrade/upsert/512/0/00000000000000000002.run differ diff --git a/test/vinyl/upgrade/upsert/512/0/00000000000000000004.index b/test/vinyl/upgrade/upsert/512/0/00000000000000000004.index new file mode 100644 index 000000000..1c3896547 Binary files /dev/null and b/test/vinyl/upgrade/upsert/512/0/00000000000000000004.index differ diff --git a/test/vinyl/upgrade/upsert/512/0/00000000000000000004.run b/test/vinyl/upgrade/upsert/512/0/00000000000000000004.run new file mode 100644 index 000000000..469e2abab Binary files /dev/null and b/test/vinyl/upgrade/upsert/512/0/00000000000000000004.run differ diff --git a/test/vinyl/upgrade/upsert/512/0/00000000000000000006.index b/test/vinyl/upgrade/upsert/512/0/00000000000000000006.index new file mode 100644 index 000000000..9202ec7e7 Binary files /dev/null and b/test/vinyl/upgrade/upsert/512/0/00000000000000000006.index differ diff --git a/test/vinyl/upgrade/upsert/512/0/00000000000000000006.run b/test/vinyl/upgrade/upsert/512/0/00000000000000000006.run new file mode 100644 index 000000000..d4fcd7599 Binary files /dev/null and b/test/vinyl/upgrade/upsert/512/0/00000000000000000006.run differ diff --git a/test/vinyl/upsert_upgrade.result b/test/vinyl/upsert_upgrade.result new file mode 100644 index 000000000..8882a8b63 --- /dev/null +++ b/test/vinyl/upsert_upgrade.result @@ -0,0 +1,59 @@ +-- test-run result file version 2 +test_run = require('test_run').new() + | --- + | ... + +-- Upsert's internal format have changed: now update operations are stored +-- with additional map package. Let's test backward compatibility. +-- Snapshot (i.e. run files) contain following statements: + +-- s = box.schema.create_space('test', {engine = 'vinyl'}) +-- pk = s:create_index('pk') +-- s:insert({1, 2}) +-- box.snapshot() +-- s:upsert({1, 0}, {{'+', 2, 1}}) +-- s:upsert({1, 0}, {{'-', 2, 2}}) +-- s:upsert({2, 0}, {{'+', 2, 1}}) +-- s:upsert({2, 0}, {{'-', 2, 2}}) +-- s:upsert({1, 0}, {{'=', 2, 2}}) +-- s:upsert({1, 0}, {{'-', 2, 2}}) +-- box.snapshot() +-- +-- Make sure that upserts will be parsed and squashed correctly. +-- + +dst_dir = 'vinyl/upgrade/upsert/' + | --- + | ... + +test_run:cmd('create server upgrade with script="vinyl/upgrade.lua", workdir="' .. dst_dir .. '"') + | --- + | - true + | ... +test_run:cmd('start server upgrade') + | --- + | - true + | ... +test_run:switch('upgrade') + | --- + | - true + | ... + +box.space.test:select() + | --- + | - - [1, 0] + | - [2, -2] + | ... + +test_run:switch('default') + | --- + | - true + | ... +test_run:cmd('stop server upgrade') + | --- + | - true + | ... +test_run:cmd('cleanup server upgrade') + | --- + | - true + | ... diff --git a/test/vinyl/upsert_upgrade.test.lua b/test/vinyl/upsert_upgrade.test.lua new file mode 100644 index 000000000..db409e2dd --- /dev/null +++ b/test/vinyl/upsert_upgrade.test.lua @@ -0,0 +1,32 @@ +test_run = require('test_run').new() + +-- Upsert's internal format have changed: now update operations are stored +-- with additional map package. Let's test backward compatibility. +-- Snapshot (i.e. run files) contain following statements: + +-- s = box.schema.create_space('test', {engine = 'vinyl'}) +-- pk = s:create_index('pk') +-- s:insert({1, 2}) +-- box.snapshot() +-- s:upsert({1, 0}, {{'+', 2, 1}}) +-- s:upsert({1, 0}, {{'-', 2, 2}}) +-- s:upsert({2, 0}, {{'+', 2, 1}}) +-- s:upsert({2, 0}, {{'-', 2, 2}}) +-- s:upsert({1, 0}, {{'=', 2, 2}}) +-- s:upsert({1, 0}, {{'-', 2, 2}}) +-- box.snapshot() +-- +-- Make sure that upserts will be parsed and squashed correctly. +-- + +dst_dir = 'vinyl/upgrade/upsert/' + +test_run:cmd('create server upgrade with script="vinyl/upgrade.lua", workdir="' .. dst_dir .. '"') +test_run:cmd('start server upgrade') +test_run:switch('upgrade') + +box.space.test:select() + +test_run:switch('default') +test_run:cmd('stop server upgrade') +test_run:cmd('cleanup server upgrade')
next prev parent reply other threads:[~2020-10-13 10:18 UTC|newest] Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-10-03 13:28 Nikita Pettik 2020-10-03 13:28 ` [Tarantool-patches] [PATCH v3 1/2] " Nikita Pettik 2020-10-06 22:12 ` Vladislav Shpilevoy 2020-10-09 15:06 ` Nikita Pettik 2020-10-13 19:00 ` Aleksandr Lyapunov 2020-10-14 0:15 ` Nikita Pettik 2020-10-14 8:58 ` Aleksandr Lyapunov 2020-10-14 10:42 ` Nikita Pettik 2020-10-14 11:47 ` Aleksandr Lyapunov 2020-10-15 0:36 ` Nikita Pettik 2020-10-03 13:28 ` [Tarantool-patches] [PATCH v3 2/2] vinyl: remove squash procedures from source code Nikita Pettik 2020-10-03 13:52 ` [Tarantool-patches] [PATCH v3 0/2] vinyl: rework upsert operation Nikita Pettik 2020-10-06 22:12 ` Vladislav Shpilevoy 2020-10-09 15:10 ` Nikita Pettik 2020-10-11 15:35 ` Vladislav Shpilevoy 2020-10-11 15:35 ` Vladislav Shpilevoy 2020-10-13 10:18 ` Nikita Pettik [this message] 2020-10-14 23:44 ` Vladislav Shpilevoy 2020-10-15 1:42 ` Nikita Pettik
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20201013101839.GA18306@tarantool.org \ --to=korablev@tarantool.org \ --cc=tarantool-patches@dev.tarantool.org \ --cc=v.shpilevoy@tarantool.org \ --subject='Re: [Tarantool-patches] [PATCH v3 0/2] vinyl: rework upsert operation' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox