[Tarantool-patches] [PATCH 1/1] box: make UUID part of SCALAR

Serge Petrenko sergepetrenko at tarantool.org
Sun Apr 25 12:07:25 MSK 2021



23.04.2021 14:40, imeevma at tarantool.org пишет:
> Prior to this patch, UUID was not part of SCALAR. However, this should
> be changed to comply with the RFC "Consistent Lua/SQL types".
>
> Closes #6042
>
> @TarantoolBot document
> Title: UUID is now part of SCALAR
>
> The UUID field type is now part of the SCALAR field type. This means
> that now values of type UUID can be inserted into the SCALAR field, and
> these values can participate in the sorting of the SCALAR fields. The
> order is as follows: boolean < number < string < varbinary < uuid.
> ---

Thanks for the patch!
Generally LGTM with 2 comments.

> https://github.com/tarantool/tarantool/issues/6042
> https://github.com/tarantool/tarantool/tree/imeevma/gh-6042-make-uuid-part-of-scalar
>
>   .../unreleased/make-uuid-part-of-scalar.md    |  3 ++
>   src/box/field_def.c                           |  2 +-
>   src/box/tuple_compare.cc                      |  2 +
>   test/app/uuid.result                          | 46 +++++++++++++++++++
>   test/app/uuid.test.lua                        | 18 ++++++++
>   test/engine/ddl.result                        |  4 +-
>   test/engine/ddl.test.lua                      |  2 +-
>   7 files changed, 72 insertions(+), 5 deletions(-)
>   create mode 100644 changelogs/unreleased/make-uuid-part-of-scalar.md
>

...


> diff --git a/test/app/uuid.test.lua b/test/app/uuid.test.lua
> index 867bbd832..7c0942fd6 100644
> --- a/test/app/uuid.test.lua
> +++ b/test/app/uuid.test.lua
> @@ -164,6 +164,24 @@ u1 = nil
>   u1_str = nil
>   u2_str = nil
>   
> +--
> +-- gh-6042: add UUID to SCALAR.
> +--
> +s = box.schema.space.create('s', {format={{'s', 'scalar'}}})
> +_ = s:create_index('i')
> +s:insert({1})
> +s:insert({'1'})
> +s:insert({uuid.fromstr('11111111-1111-1111-1111-111111111111')})
> +s:insert({uuid.fromstr('11111111-1111-2222-1111-111111111111')})
> +
> +--
> +-- Make sure that comparison in right. Comparison in SCALAR field:
> +-- bool < number < string < varbinary < uuid.
> +--

I'd also insert a varbinary value to the index, just to check.
Is it possible from lua?

> +s:select()
> +s:select({}, {iterator='LE'})
> +s:drop()
> +
>   uuid = nil
>   
>   test_run:cmd("clear filter")
> diff --git a/test/engine/ddl.result b/test/engine/ddl.result
> index 08ad1a57b..e044bc094 100644
> --- a/test/engine/ddl.result
> +++ b/test/engine/ddl.result
> @@ -1429,10 +1429,8 @@ fail_format_change(12, 'number')
>     number, got extension'
>   ...
>   -- uuid --X--> scalar

The comment should be "-- uuid -----> scalar" now.

> -fail_format_change(12, 'scalar')
> +ok_format_change(12, 'scalar')
>   ---
> -- 'Tuple field 12 (field12) type does not match one required by operation: expected
> -  scalar, got extension'
>   ...
>   -- uuid --X--> string
>   fail_format_change(12, 'string')
> diff --git a/test/engine/ddl.test.lua b/test/engine/ddl.test.lua
> index 5ba80e075..0cf25aa46 100644
> --- a/test/engine/ddl.test.lua
> +++ b/test/engine/ddl.test.lua
> @@ -523,7 +523,7 @@ ok_format_change(12, 'any')
>   -- uuid --X--> number
>   fail_format_change(12, 'number')
>   -- uuid --X--> scalar
> -fail_format_change(12, 'scalar')
> +ok_format_change(12, 'scalar')
>   -- uuid --X--> string
>   fail_format_change(12, 'string')
>   -- uuid --X--> integer

-- 
Serge Petrenko



More information about the Tarantool-patches mailing list