From: Vladislav Shpilevoy <v.shpilevoy@tarantool.org> To: tarantool-patches@dev.tarantool.org, kostja.osipov@gmail.com, imun@tarantool.org, korablev@tarantool.org Subject: [Tarantool-patches] [PATCH v2 0/4] Don't truncate float in update Date: Tue, 4 Feb 2020 23:53:43 +0100 [thread overview] Message-ID: <cover.1580856721.git.v.shpilevoy@tarantool.org> (raw) The patchset fixes float value truncation in tuple/space:update/upsert. First commit fixes the actual issue, but introduces another bug that a float value can be stored into a field having double type in its format. The rest 3 commits fix this new bug. However, there is an alternative how these 3 could be done. My solution is that I calculate the result types in xrow_update_*_store() functions. Because of that I don't know the types during xrow_update_*_sizeof(), and it needs to return the maximal possible size instead of exact size. The alternative is to calculate types during sizeof. It would allow to return the exact size. But it also would complicate the code. I can implement this option if it looks better. Branch: http://github.com/tarantool/tarantool/tree/gerold103/gh-4701-update-float-truncate Issue: https://github.com/tarantool/tarantool/issues/4701 Changes in V2: - Taken into account, that a field may have double type in its tuple format, and can't store floats at all. Vladislav Shpilevoy (4): tuple: don't truncate float in :update() tuple: pass tuple format to xrow_update_*_store() tuple: allow xrow_update sizeof reserve more memory tuple: use field type in update of a float/double src/box/lua/tuple.c | 2 +- src/box/memtx_space.c | 7 ++- src/box/session_settings.c | 2 +- src/box/space.c | 6 +-- src/box/tuple.c | 4 +- src/box/vinyl.c | 9 ++-- src/box/vy_upsert.c | 4 +- src/box/xrow_update.c | 43 +++++++++------ src/box/xrow_update.h | 10 ++-- src/box/xrow_update_array.c | 50 ++++++++++++----- src/box/xrow_update_bar.c | 13 +++-- src/box/xrow_update_field.c | 102 ++++++++++++++++++++++++----------- src/box/xrow_update_field.h | 22 +++++--- src/box/xrow_update_map.c | 34 ++++++++++-- src/box/xrow_update_route.c | 13 +++-- test/box/update.result | 103 ++++++++++++++++++++++++++++++++++++ test/box/update.test.lua | 62 ++++++++++++++++++++++ test/unit/column_mask.c | 4 +- 18 files changed, 388 insertions(+), 102 deletions(-) -- 2.21.1 (Apple Git-122.3)
next reply other threads:[~2020-02-04 22:53 UTC|newest] Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-02-04 22:53 Vladislav Shpilevoy [this message] 2020-02-04 22:53 ` [Tarantool-patches] [PATCH v2 1/4] tuple: don't truncate float in :update() Vladislav Shpilevoy 2020-02-10 14:41 ` Nikita Pettik 2020-02-10 21:18 ` Vladislav Shpilevoy 2020-02-19 21:36 ` Nikita Pettik 2020-02-04 22:53 ` [Tarantool-patches] [PATCH v2 2/4] tuple: pass tuple format to xrow_update_*_store() Vladislav Shpilevoy 2020-02-10 16:51 ` Nikita Pettik 2020-02-10 21:18 ` Vladislav Shpilevoy 2020-02-04 22:53 ` [Tarantool-patches] [PATCH v2 3/4] tuple: allow xrow_update sizeof reserve more memory Vladislav Shpilevoy 2020-02-10 16:05 ` Nikita Pettik 2020-02-04 22:53 ` [Tarantool-patches] [PATCH v2 4/4] tuple: use field type in update of a float/double Vladislav Shpilevoy 2020-02-10 16:16 ` Nikita Pettik 2020-02-10 21:18 ` Vladislav Shpilevoy 2020-02-05 11:09 ` [Tarantool-patches] [PATCH v2 0/4] Don't truncate float in update Konstantin Osipov 2020-02-05 22:11 ` Vladislav Shpilevoy 2020-02-20 6:15 ` Kirill Yukhin 2020-02-20 13:27 ` Nikita Pettik 2020-02-20 20:30 ` 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=cover.1580856721.git.v.shpilevoy@tarantool.org \ --to=v.shpilevoy@tarantool.org \ --cc=imun@tarantool.org \ --cc=korablev@tarantool.org \ --cc=kostja.osipov@gmail.com \ --cc=tarantool-patches@dev.tarantool.org \ --subject='Re: [Tarantool-patches] [PATCH v2 0/4] Don'\''t truncate float in update' \ /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