Tarantool development patches archive
 help / color / mirror / Atom feed
From: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
To: tarantool-patches@dev.tarantool.org, babinoleg@mail.ru,
	alexander.turenko@tarantool.org, imun@tarantool.org
Subject: [Tarantool-patches] [PATCH 2/2] tuple: make box.tuple.is() public
Date: Sat, 15 Feb 2020 19:08:45 +0100	[thread overview]
Message-ID: <a986784a1b577cde5d64caa59a4a91613f37144d.1581790002.git.v.shpilevoy@tarantool.org> (raw)
In-Reply-To: <cover.1581790002.git.v.shpilevoy@tarantool.org>

In #4684 it was found that box.tuple.* contained some private
functions: bless(), encode(), and is().

Bless() and encode() didn't make any sense for a user, so they
were hidden into box.internal.tuple.*.

But box.tuple.is() is actually a useful thing. It is harnessed in
the tests a lot, and is likely to be already used by customers,
because it is available in box.tuple.* for a long time. It is a
matter of time when someone will open a doc ticket saying that
box.tuple.is() is not documented.

So the patch makes it legally public.

Follow-up #4684

@TarantoolBot document
Title: box.tuple.is()
A function to check whether a given object is a tuple cdata
object. Returns true or false. Never raises nor returns an error.
---
 src/box/lua/tuple.lua   |  7 ++++---
 test/box/tuple.result   | 40 ++++++++++++++++++++++++++++++++++++++++
 test/box/tuple.test.lua | 14 ++++++++++++++
 3 files changed, 58 insertions(+), 3 deletions(-)

diff --git a/src/box/lua/tuple.lua b/src/box/lua/tuple.lua
index eb3946a0f..f97aa1579 100644
--- a/src/box/lua/tuple.lua
+++ b/src/box/lua/tuple.lua
@@ -352,7 +352,8 @@ internal.tuple.tostring = nil
 internal.tuple.bless = tuple_bless
 internal.tuple.encode = tuple_encode
 
--- The function is internal in a sense that it is not documented.
--- But it is safe and widely used in the tests. Keep it here at
--- least for test code.
+-- Public API, additional to implemented in C.
+
+-- is() is implemented in Lua, because then it is
+-- easy to be JITed.
 box.tuple.is = is_tuple
diff --git a/test/box/tuple.result b/test/box/tuple.result
index 78f919deb..a499aa43a 100644
--- a/test/box/tuple.result
+++ b/test/box/tuple.result
@@ -1450,6 +1450,46 @@ level == max_depth + 5 or {level, max_depth}
 ---
 - true
 ...
+-- gh-4684: some box.tuple.* methods were private and could be
+-- used by customers to shoot in their own legs. Some of them
+-- were moved to a more secret place. box.tuple.is() was moved to
+-- the public API, legally.
+box.tuple.is()
+---
+- false
+...
+box.tuple.is(nil)
+---
+- false
+...
+box.tuple.is(box.NULL)
+---
+- false
+...
+box.tuple.is({})
+---
+- false
+...
+box.tuple.is(ffi.new('char[1]'))
+---
+- false
+...
+box.tuple.is(1)
+---
+- false
+...
+box.tuple.is('1')
+---
+- false
+...
+box.tuple.is(box.tuple.new())
+---
+- true
+...
+box.tuple.is(box.tuple.new({1}))
+---
+- true
+...
 msgpack.cfg({encode_max_depth = max_depth, encode_deep_as_nil = deep_as_nil})
 ---
 ...
diff --git a/test/box/tuple.test.lua b/test/box/tuple.test.lua
index baf2f22d5..b83fca5cd 100644
--- a/test/box/tuple.test.lua
+++ b/test/box/tuple.test.lua
@@ -496,4 +496,18 @@ while tuple ~= nil do level = level + 1 tuple = tuple[1] end
 -- serializer allows deeper tables.
 level == max_depth + 5 or {level, max_depth}
 
+-- gh-4684: some box.tuple.* methods were private and could be
+-- used by customers to shoot in their own legs. Some of them
+-- were moved to a more secret place. box.tuple.is() was moved to
+-- the public API, legally.
+box.tuple.is()
+box.tuple.is(nil)
+box.tuple.is(box.NULL)
+box.tuple.is({})
+box.tuple.is(ffi.new('char[1]'))
+box.tuple.is(1)
+box.tuple.is('1')
+box.tuple.is(box.tuple.new())
+box.tuple.is(box.tuple.new({1}))
+
 msgpack.cfg({encode_max_depth = max_depth, encode_deep_as_nil = deep_as_nil})
-- 
2.21.1 (Apple Git-122.3)

  parent reply	other threads:[~2020-02-15 18:08 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-15 18:08 [Tarantool-patches] [PATCH 0/2] box.tuple.* cleanup Vladislav Shpilevoy
2020-02-15 18:08 ` [Tarantool-patches] [PATCH 1/2] tuple: hide internal functions from box.tuple.* Vladislav Shpilevoy
2020-03-16 13:15   ` Nikita Pettik
2020-02-15 18:08 ` Vladislav Shpilevoy [this message]
2020-02-16 15:07   ` [Tarantool-patches] [PATCH 2/2] tuple: make box.tuple.is() public Vladislav Shpilevoy
2020-02-17 20:21     ` Oleg Babin
2020-02-17 21:11       ` Vladislav Shpilevoy
2020-03-16 13:19   ` Nikita Pettik
2020-02-15 19:02 ` [Tarantool-patches] [PATCH 0/2] box.tuple.* cleanup Oleg Babin
2020-02-16 15:07 ` Vladislav Shpilevoy
2020-03-01 14:21 ` Igor Munkin
2020-03-15 17:42 ` Vladislav Shpilevoy
2020-03-15 22:38   ` Nikita Pettik
2020-03-16 14:07 ` Kirill Yukhin
2020-03-16 17:48   ` 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=a986784a1b577cde5d64caa59a4a91613f37144d.1581790002.git.v.shpilevoy@tarantool.org \
    --to=v.shpilevoy@tarantool.org \
    --cc=alexander.turenko@tarantool.org \
    --cc=babinoleg@mail.ru \
    --cc=imun@tarantool.org \
    --cc=tarantool-patches@dev.tarantool.org \
    --subject='Re: [Tarantool-patches] [PATCH 2/2] tuple: make box.tuple.is() public' \
    /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