From: Mergen Imeev via Tarantool-patches <tarantool-patches@dev.tarantool.org> To: tsafin@tarantool.org Cc: tarantool-patches@dev.tarantool.org Subject: [Tarantool-patches] [PATCH v2 2/2] sql: introduce SQL built-in function UUID() Date: Wed, 2 Jun 2021 11:02:50 +0300 [thread overview] Message-ID: <8562fcc66ad464231cd916a94a41f556d6e57f38.1622620858.git.imeevma@gmail.com> (raw) In-Reply-To: <cover.1622620858.git.imeevma@gmail.com> This patch introduces a new SQL built-in function UUID(). Closes #5886 @TarantoolBot document Title: SQL built-in function UUID() SQL built-in function UUID() takes zero or one argument. If no argument is specified, a UUID v4 is generated. If the version of the UUID to generate is specified as an argument, the function returns the new UUID of the given version. Currently only version 4 of UUID is supported. --- .../unreleased/introduce-uuid-to-sql.md | 3 + src/box/bootstrap.snap | Bin 5991 -> 6016 bytes src/box/lua/upgrade.lua | 19 +++++++ src/box/sql/func.c | 39 +++++++++++++ src/box/sql/parse.y | 2 +- test/box-py/bootstrap.result | 3 +- test/box/access.result | 2 +- test/box/access.test.lua | 2 +- test/box/access_bin.result | 2 +- test/box/access_bin.test.lua | 2 +- test/box/access_sysview.result | 8 +-- test/box/function1.result | 6 +- test/sql-tap/uuid.test.lua | 52 +++++++++++++++++- test/wal_off/func_max.result | 8 +-- 14 files changed, 130 insertions(+), 18 deletions(-) create mode 100644 changelogs/unreleased/introduce-uuid-to-sql.md diff --git a/changelogs/unreleased/introduce-uuid-to-sql.md b/changelogs/unreleased/introduce-uuid-to-sql.md new file mode 100644 index 000000000..642ac94fb --- /dev/null +++ b/changelogs/unreleased/introduce-uuid-to-sql.md @@ -0,0 +1,3 @@ +## feature/core + + * Field type UUID is now available in SQL, and new UUID can be generated using new SQL built-in function uuid() (gh-5886). diff --git a/src/box/bootstrap.snap b/src/box/bootstrap.snap index c4a70297aad138d426a24ee4447af485e3597536..57374decc0f9de140772d9809a227e3ba4ce61eb 100644 GIT binary patch delta 5952 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 delta 5889 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 XiRzV{$H~qf!X)LlH2ly9)ex=ijTS!2 diff --git a/src/box/lua/upgrade.lua b/src/box/lua/upgrade.lua index 6fba260bd..97afc0b4d 100644 --- a/src/box/lua/upgrade.lua +++ b/src/box/lua/upgrade.lua @@ -1000,6 +1000,24 @@ local function upgrade_to_2_7_1() function_access() end +-------------------------------------------------------------------------------- +-- Tarantool 2.9.1 +-------------------------------------------------------------------------------- +local function sql_builtin_function_uuid() + local _func = box.space._func + local _priv = box.space._priv + local datetime = os.date("%Y-%m-%d %H:%M:%S") + local t = _func:auto_increment({ADMIN, 'UUID', 1, 'SQL_BUILTIN', '', + 'function', {}, 'any', 'none', 'none', + false, false, true, {}, setmap({}), '', + datetime, datetime}) + _priv:replace{ADMIN, PUBLIC, 'function', t.id, box.priv.X} +end + +local function upgrade_to_2_9_1() + sql_builtin_function_uuid() +end + -------------------------------------------------------------------------------- local handlers = { @@ -1015,6 +1033,7 @@ local handlers = { {version = mkversion(2, 3, 0), func = upgrade_to_2_3_0, auto = true}, {version = mkversion(2, 3, 1), func = upgrade_to_2_3_1, auto = true}, {version = mkversion(2, 7, 1), func = upgrade_to_2_7_1, auto = true}, + {version = mkversion(2, 9, 1), func = upgrade_to_2_9_1, auto = true}, } -- Schema version of the snapshot. diff --git a/src/box/sql/func.c b/src/box/sql/func.c index 9c4480a92..f93ae867d 100644 --- a/src/box/sql/func.c +++ b/src/box/sql/func.c @@ -66,6 +66,35 @@ mem_as_bin(struct Mem *mem) return s; } +static void +sql_func_uuid(struct sql_context *ctx, int argc, struct Mem **argv) +{ + if (argc > 1) { + diag_set(ClientError, ER_FUNC_WRONG_ARG_COUNT, "UUID", + "one or zero", argc); + ctx->is_aborted = true; + return; + } + if (argc == 1) { + uint64_t version; + if (mem_get_uint(argv[0], &version) != 0) { + diag_set(ClientError, ER_SQL_TYPE_MISMATCH, + mem_str(argv[0]), "integer"); + ctx->is_aborted = true; + return; + } + if (version != 4) { + diag_set(ClientError, ER_UNSUPPORTED, "Function UUID", + "versions other than 4"); + ctx->is_aborted = true; + return; + } + } + struct tt_uuid uuid; + tt_uuid_create(&uuid); + mem_set_uuid(ctx->pOut, &uuid); +} + /* * Return the collating function associated with a function. */ @@ -2544,6 +2573,16 @@ static struct { .call = UpperICUFunc, .finalize = NULL, .export_to_sql = true, + }, { + .name = "UUID", + .param_count = -1, + .returns = FIELD_TYPE_UUID, + .aggregate = FUNC_AGGREGATE_NONE, + .is_deterministic = false, + .flags = 0, + .call = sql_func_uuid, + .finalize = NULL, + .export_to_sql = true, }, { .name = "VERSION", .param_count = 0, diff --git a/src/box/sql/parse.y b/src/box/sql/parse.y index 4c9cf475e..bd041e862 100644 --- a/src/box/sql/parse.y +++ b/src/box/sql/parse.y @@ -268,7 +268,7 @@ columnlist ::= tcons. CONFLICT DEFERRED END ENGINE FAIL IGNORE INITIALLY INSTEAD NO MATCH PLAN QUERY KEY OFFSET RAISE RELEASE REPLACE RESTRICT - RENAME CTIME_KW IF ENABLE DISABLE + RENAME CTIME_KW IF ENABLE DISABLE UUID . %wildcard ANY. diff --git a/test/box-py/bootstrap.result b/test/box-py/bootstrap.result index ed7accea3..b2328487c 100644 --- a/test/box-py/bootstrap.result +++ b/test/box-py/bootstrap.result @@ -4,7 +4,7 @@ box.internal.bootstrap() box.space._schema:select{} --- - - ['max_id', 511] - - ['version', 2, 7, 1] + - ['version', 2, 9, 1] ... box.space._cluster:select{} --- @@ -242,6 +242,7 @@ box.space._priv:select{} - [1, 2, 'function', 65, 4] - [1, 2, 'function', 66, 4] - [1, 2, 'function', 67, 4] + - [1, 2, 'function', 68, 4] - [1, 2, 'space', 276, 2] - [1, 2, 'space', 277, 1] - [1, 2, 'space', 281, 1] diff --git a/test/box/access.result b/test/box/access.result index 27e636122..1a8730f1a 100644 --- a/test/box/access.result +++ b/test/box/access.result @@ -703,7 +703,7 @@ box.schema.func.exists(1) --- - true ... -box.schema.func.exists(68) +box.schema.func.exists(69) --- - false ... diff --git a/test/box/access.test.lua b/test/box/access.test.lua index a62f87ad8..2bf772b7b 100644 --- a/test/box/access.test.lua +++ b/test/box/access.test.lua @@ -282,7 +282,7 @@ box.schema.user.exists{} box.schema.func.exists('nosuchfunc') box.schema.func.exists('guest') box.schema.func.exists(1) -box.schema.func.exists(68) +box.schema.func.exists(69) box.schema.func.exists('box.schema.user.info') box.schema.func.exists() box.schema.func.exists(nil) diff --git a/test/box/access_bin.result b/test/box/access_bin.result index c58f331d3..aeb8b3bd8 100644 --- a/test/box/access_bin.result +++ b/test/box/access_bin.result @@ -298,7 +298,7 @@ box.schema.user.grant('guest', 'execute', 'universe') function f1() return box.space._func:get(1)[4] end --- ... -function f2() return box.space._func:get(68)[4] end +function f2() return box.space._func:get(69)[4] end --- ... box.schema.func.create('f1') diff --git a/test/box/access_bin.test.lua b/test/box/access_bin.test.lua index 41d5f4245..954266858 100644 --- a/test/box/access_bin.test.lua +++ b/test/box/access_bin.test.lua @@ -112,7 +112,7 @@ test:drop() -- notice that guest can execute stuff, but can't read space _func box.schema.user.grant('guest', 'execute', 'universe') function f1() return box.space._func:get(1)[4] end -function f2() return box.space._func:get(68)[4] end +function f2() return box.space._func:get(69)[4] end box.schema.func.create('f1') box.schema.func.create('f2',{setuid=true}) c = net.connect(box.cfg.listen) diff --git a/test/box/access_sysview.result b/test/box/access_sysview.result index 6468a0709..d7a7b7534 100644 --- a/test/box/access_sysview.result +++ b/test/box/access_sysview.result @@ -258,11 +258,11 @@ box.session.su('guest') ... #box.space._vpriv:select{} --- -- 82 +- 83 ... #box.space._vfunc:select{} --- -- 67 +- 68 ... #box.space._vcollation:select{} --- @@ -290,11 +290,11 @@ box.session.su('guest') ... #box.space._vpriv:select{} --- -- 82 +- 83 ... #box.space._vfunc:select{} --- -- 67 +- 68 ... #box.space._vsequence:select{} --- diff --git a/test/box/function1.result b/test/box/function1.result index 928cd5758..0166c828f 100644 --- a/test/box/function1.result +++ b/test/box/function1.result @@ -97,7 +97,7 @@ box.func["function1.args"] exports: lua: true sql: false - id: 68 + id: 69 setuid: false is_multikey: false is_deterministic: false @@ -593,7 +593,7 @@ func exports: lua: true sql: false - id: 68 + id: 69 setuid: false is_multikey: false is_deterministic: false @@ -665,7 +665,7 @@ func exports: lua: true sql: false - id: 68 + id: 69 setuid: false is_multikey: false is_deterministic: false diff --git a/test/sql-tap/uuid.test.lua b/test/sql-tap/uuid.test.lua index 4287f0921..83fcc3d0e 100755 --- a/test/sql-tap/uuid.test.lua +++ b/test/sql-tap/uuid.test.lua @@ -3,7 +3,7 @@ local build_path = os.getenv("BUILDDIR") package.cpath = build_path..'/test/sql-tap/?.so;'..build_path..'/test/sql-tap/?.dylib;'..package.cpath local test = require("sqltester") -test:plan(139) +test:plan(145) local uuid = require("uuid") local uuid1 = uuid.fromstr("11111111-1111-1111-1111-111111111111") @@ -1266,6 +1266,56 @@ test:do_execsql_test( 3,2,1 }) +-- Check function uuid(). +test:do_execsql_test( + "uuid-16.1", + [[ + SELECT typeof(uuid()); + ]], { + "uuid" + }) + +test:do_execsql_test( + "uuid-16.2", + [[ + SELECT typeof(uuid(4)); + ]], { + "uuid" + }) + +test:do_catchsql_test( + "uuid-16.3", + [[ + SELECT uuid(1); + ]], { + 1, "Function UUID does not support versions other than 4" + }) + +test:do_catchsql_test( + "uuid-16.4", + [[ + SELECT uuid('asd'); + ]], { + 1, "Type mismatch: can not convert asd to integer" + }) + +test:do_catchsql_test( + "uuid-16.5", + [[ + SELECT uuid(4, 5); + ]], { + 1, "Wrong number of arguments is passed to UUID(): expected one or zero, got 2" + }) + +-- Make sure the uuid() function generates a new UUID each time when called. +test:do_execsql_test( + "uuid-16.6", + [[ + SELECT uuid() != uuid(); + ]], { + true + }) + test:execsql([[ DROP TRIGGER t; DROP VIEW v; diff --git a/test/wal_off/func_max.result b/test/wal_off/func_max.result index 78db38d6b..cc5bcc141 100644 --- a/test/wal_off/func_max.result +++ b/test/wal_off/func_max.result @@ -42,11 +42,11 @@ test_run:cmd("setopt delimiter ''"); ... func_limit() --- -- error: 'Failed to create function ''func31934'': function id is too big' +- error: 'Failed to create function ''func31933'': function id is too big' ... drop_limit_func() --- -- error: Function 'func31934' does not exist +- error: Function 'func31933' does not exist ... box.schema.user.create('testuser') --- @@ -62,11 +62,11 @@ session.su('testuser') ... func_limit() --- -- error: 'Failed to create function ''func31934'': function id is too big' +- error: 'Failed to create function ''func31933'': function id is too big' ... drop_limit_func() --- -- error: Function 'func31934' does not exist +- error: Function 'func31933' does not exist ... session.su('admin') --- -- 2.25.1
next prev parent reply other threads:[~2021-06-02 8:03 UTC|newest] Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-06-02 8:02 [Tarantool-patches] [PATCH v2 0/2] sql: introduce UUID Mergen Imeev via Tarantool-patches 2021-06-02 8:02 ` [Tarantool-patches] [PATCH v2 1/2] sql: introduce UUID field type Mergen Imeev via Tarantool-patches 2021-06-02 20:13 ` Timur Safin via Tarantool-patches 2021-06-03 9:04 ` Mergen Imeev via Tarantool-patches 2021-06-03 9:40 ` Timur Safin via Tarantool-patches 2021-06-02 8:02 ` Mergen Imeev via Tarantool-patches [this message] 2021-06-02 20:13 ` [Tarantool-patches] [PATCH v2 2/2] sql: introduce SQL built-in function UUID() Timur Safin via Tarantool-patches 2021-06-02 20:13 ` [Tarantool-patches] [PATCH v2 0/2] sql: introduce UUID Timur Safin via Tarantool-patches
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=8562fcc66ad464231cd916a94a41f556d6e57f38.1622620858.git.imeevma@gmail.com \ --to=tarantool-patches@dev.tarantool.org \ --cc=imeevma@tarantool.org \ --cc=tsafin@tarantool.org \ --subject='Re: [Tarantool-patches] [PATCH v2 2/2] sql: introduce SQL built-in function UUID()' \ /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