Tarantool development patches archive
 help / color / mirror / Atom feed
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


  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