* Re: [Tarantool-patches] [tarantool-patches] Re: [PATCH 1/3] tuple: rework updates to improve code extendibility
[not found] ` <20191005134949.GH3913@atlas>
@ 2019-10-19 15:12 ` Vladislav Shpilevoy
0 siblings, 0 replies; only message in thread
From: Vladislav Shpilevoy @ 2019-10-19 15:12 UTC (permalink / raw)
To: Konstantin Osipov; +Cc: tarantool-patches, tarantool-patches
Thanks for the review!
On 05/10/2019 15:49, Konstantin Osipov wrote:
> I don't know why my mutt folder hook are messed up, will
> take some time to figure out.
>
> Resending from the right email.
>
> * Vladislav Shpilevoy <v.shpilevoy@tarantool.org> [19/09/28 09:10]:
>> Before the patch update was implemented as a set of operations
>> applicable for arrays only. It was ok until field names and JSON
>> paths appearance, because tuple is array on the top level.
>>
>> But now there are four reasons to allow more complex updates of
>> tuple field internals via JSON paths:
>> * tuple field access by JSON path is allowed so for consistency
>> JSON paths should be allowed in updates as well;
>> * JSON indexes are supported. JSON update should be able to
>> change an indexed field without rewriting half of a tuple;
>> * Tarantool is going to support documents in storage so JSON
>> path updates is one more step forward;
>> * JSON updates are going to be faster than get + in-memory
>> Lua/connector update + replace (or update of a whole tuple
>> field).
>>
>> The patch prepares current update code to be extended by updates
>> of map, so named isolated 'bar' updates, and multilevel updates.
>>
>> The concept is to build a tree of update objects. Each updates a
>> scalar terminal value (leaf of that tree), or a complex object
>> like array or map. In the latter case these objects contain >= 2
>> children updates.
>>
>> This organization allows to split update implementation into
>> several independent files-modules for each update type. Next
>> commits will introduce them one by one.
>
> Now that you provide some rationale for the rename, does the
> naming scheme you used reflects this rationale?
>
> 1) update - a very general name, there is sql update, tuple
> update, lsm tree update, configuration update
From my point of view 'update' is a very short and descriptive
name. Anyone who would somehow fail to understand it still may
open update/update.h and see 'tuple_update_execute'. That makes
it already obvious what is it for. And since all the update-related
files are in own directory, it becomes obvious that all the other
files are also about tuple updates.
> 2) update_array - impossible to say by looking at the code whether
> it is a function which udpates an array or an array of updates.
In the code I said explicitly what it is:
/**
* Field is an updated array. Check the rope for updates
* of individual fields.
*/
UPDATE_ARRAY,
Even twice:
/**
* This update changes an array. Children fields
* are stored in rope nodes.
*/
struct {
struct rope *rope;
} array;
>
> Generally, the key reason to exist for the update interface
> is being able to represent partial tuple changes in the binary
> log - i.e. update micro-language exists only because we want
> to send compact changes over the network to replicas. There is
> no other reason *for the microlanguage* to exist.
How is it related to my patchset?
>
> So maybe it should be called xrow_update, to avoid ambiguity with
> other types of updates?
>
It has nothing to do with xrow. There is no a header, metadata,
persistency, or networking. Additionally, this code uses names,
tuple formats, which do not exist in xrow.
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2019-10-19 15:07 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <cover.1569622868.git.v.shpilevoy@tarantool.org>
[not found] ` <aab74e6b5aec7d41360656957b184b00eea2bdce.1569622868.git.v.shpilevoy@tarantool.org>
[not found] ` <20191005133140.GF3913@atlas>
[not found] ` <20191005134949.GH3913@atlas>
2019-10-19 15:12 ` [Tarantool-patches] [tarantool-patches] Re: [PATCH 1/3] tuple: rework updates to improve code extendibility Vladislav Shpilevoy
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox