From: Vladimir Davydov <vdavydov.dev@gmail.com> To: Vladislav Shpilevoy <v.shpilevoy@tarantool.org> Cc: tarantool-patches@freelists.org, kostja@tarantool.org Subject: Re: [tarantool-patches] Re: [PATCH 09/12] vinyl: consolidate skip optimization checks in read iterator Date: Tue, 15 May 2018 18:00:50 +0300 [thread overview] Message-ID: <20180515150050.rkcav2rcrmfdwng7@esperanza> (raw) In-Reply-To: <df6575ee-1d8a-c52d-d4f8-fdeae37249ef@tarantool.org> On Mon, May 14, 2018 at 09:25:45PM +0300, Vladislav Shpilevoy wrote: > 1. Old skip functions had returned their last_stmt (itr->last_stmt), that > updates their current statement (itr->curr_stmt). This was done if an iterator > is not 'behind' according to the new terminology. But now if an iterator is > behind, it does nothing and does not update itr->curr_stmt as well. If a source iterator is behind the current read iterator position, 'skip' method will update src_itr->curr_stmt, just like before. Otherwise, there's no need to update src_itr->curr_stmt, because the position is up-to-date as the source was not skipped at the previous iteration, neither was it restored. All we need to do in this case is move the source to the next key provided it was used at the previous iteration. > > 2. Old vy_cache_iterator_skip in the non-behind state could set 'stop' > flag triggering skipped_src propagation, but now if cache is not behind, > stop flag is always false, and skipped_src is not propagated. If the cache iterator is up-to-date with the current read iterator position (not behind), its 'skip' method is not called, but it still can (and does) set the 'stop' flag in the 'next_key' method. > > 3. vy_read_iterator_scan_txw does not use vy_read_src_is_behind() - it > continues old way usage: > if (!src->is_started) > vy_txw_iterator_skip(src_itr, itr->last_stmt, &src->stmt); Because txw iterator cannot be behind the current position (skipped), and there's an assertion for this in vy_read_iterator_scan_txw(): assert(itr->txw_src < itr->skipped_src);
next prev parent reply other threads:[~2018-05-15 15:00 UTC|newest] Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-04-15 19:55 [PATCH 00/12] vinyl: prepare read iterator for index rebuild Vladimir Davydov 2018-04-15 19:55 ` [PATCH 01/12] vinyl: rename vy_stmt_history to vy_history Vladimir Davydov 2018-04-15 19:55 ` [PATCH 02/12] vinyl: factor out vy_history_apply from vy_point_lookup_apply_history Vladimir Davydov 2018-05-14 18:19 ` [tarantool-patches] " Vladislav Shpilevoy 2018-04-15 19:55 ` [PATCH 03/12] vinyl: add vy_history_append_stmt helper Vladimir Davydov 2018-04-15 19:55 ` [PATCH 04/12] vinyl: zap iterator_src_type enum Vladimir Davydov 2018-04-15 19:55 ` [PATCH 05/12] vinyl: encapsulate key history with struct Vladimir Davydov 2018-04-15 19:55 ` [PATCH 06/12] vinyl: refine vy_history_cleanup Vladimir Davydov 2018-04-15 19:55 ` [PATCH 07/12] vinyl: move vy_history to its own source file Vladimir Davydov 2018-04-15 19:55 ` [PATCH 08/12] vinyl: use mempool for vy_history_node allocations Vladimir Davydov 2018-04-15 19:55 ` [PATCH 09/12] vinyl: consolidate skip optimization checks in read iterator Vladimir Davydov 2018-05-14 18:25 ` [tarantool-patches] " Vladislav Shpilevoy 2018-05-15 15:00 ` Vladimir Davydov [this message] 2018-04-15 19:55 ` [PATCH 10/12] vinyl: refactor vy_read_iterator_next Vladimir Davydov 2018-04-15 19:55 ` [PATCH 11/12] vinyl: make read iterator always return newest tuple version Vladimir Davydov 2018-04-15 19:55 ` [PATCH 12/12] vinyl: zap vy_read_iterator::curr_stmt Vladimir Davydov 2018-05-04 18:05 ` [tarantool-patches] Re: [PATCH 00/12] vinyl: prepare read iterator for index rebuild Vladislav Shpilevoy
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=20180515150050.rkcav2rcrmfdwng7@esperanza \ --to=vdavydov.dev@gmail.com \ --cc=kostja@tarantool.org \ --cc=tarantool-patches@freelists.org \ --cc=v.shpilevoy@tarantool.org \ --subject='Re: [tarantool-patches] Re: [PATCH 09/12] vinyl: consolidate skip optimization checks in read iterator' \ /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