Tarantool development patches archive
 help / color / mirror / Atom feed
From: imeevma@tarantool.org
To: v.shpilevoy@tarantool.org
Cc: tarantool-patches@dev.tarantool.org
Subject: [Tarantool-patches] [PATCH v1 3/7] sql: move built-in function definitions in _func
Date: Wed, 12 Aug 2020 18:15:48 +0300	[thread overview]
Message-ID: <202a7e7207c04e0196964afca93427dbf208ceec.1597244875.git.imeevma@gmail.com> (raw)
In-Reply-To: <cover.1597244875.git.imeevma@gmail.com>

This patch moves SQL built-in function definitions to _func. This helps
create an unified way to check the types of arguments. It also allows
users to see these definitions.

Part of #4159
---
 src/box/bootstrap.snap       | Bin 5976 -> 6291 bytes
 src/box/lua/upgrade.lua      | 143 +++++++++++++++++++++++++++++++++++
 src/box/sql/func.c           |   7 +-
 src/box/sql/resolve.c        |   2 +-
 test/box-py/bootstrap.result |   2 +-
 test/sql/types.result        |   4 +-
 6 files changed, 148 insertions(+), 10 deletions(-)

diff --git a/src/box/bootstrap.snap b/src/box/bootstrap.snap
index 8bd4f7ce24216a8bcced6aa97c20c83eb7a02c77..9163165b13b27771414243650051e900b3af8def 100644
GIT binary patch
literal 6291
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
Jf<M&|t?j=z`0@Y%

literal 5976
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
G5UuU4uRFp3

diff --git a/src/box/lua/upgrade.lua b/src/box/lua/upgrade.lua
index add791cd7..54fc82dc6 100644
--- a/src/box/lua/upgrade.lua
+++ b/src/box/lua/upgrade.lua
@@ -971,6 +971,148 @@ local function upgrade_to_2_3_1()
     create_session_settings_space()
 end
 
+--------------------------------------------------------------------------------
+-- Tarantool 2.5.2
+--------------------------------------------------------------------------------
+
+local function update_sql_builtin_functions()
+    local _func = box.space[box.schema.FUNC_ID]
+    local updates
+
+    _func:run_triggers(false)
+    updates = {{'=', 'param_list', {'number'}}, {'=', 'returns', 'number'},
+               {'=', 'is_deterministic', true}, {'=', 'exports', {'SQL'}}}
+    _func.index[2]:update('ABS', updates)
+
+    updates = {{'=', 'param_list', {'number'}}, {'=', 'returns', 'number'},
+               {'=', 'aggregate', 'group'}, {'=', 'exports', {'SQL'}}}
+    _func.index[2]:update('AVG', updates)
+    _func.index[2]:update('SUM', updates)
+    _func.index[2]:update('TOTAL', updates)
+
+    updates = {{'=', 'param_list', {'unsigned'}}, {'=', 'returns', 'string'},
+               {'=', 'is_deterministic', true}, {'=', 'exports', {'SQL'}},
+               {'=', 'opts', {has_vararg = true}}}
+    _func.index[2]:update('CHAR', updates)
+
+    updates = {{'=', 'param_list', {'scalar'}}, {'=', 'returns', 'integer'},
+               {'=', 'is_deterministic', true}, {'=', 'exports', {'SQL'}}}
+    _func.index[2]:update('CHARACTER_LENGTH', updates)
+    _func.index[2]:update('CHAR_LENGTH', updates)
+    _func.index[2]:update('LENGTH', updates)
+
+    updates = {{'=', 'param_list', {'scalar'}}, {'=', 'returns', 'scalar'},
+               {'=', 'is_deterministic', true}, {'=', 'exports', {'SQL'}},
+               {'=', 'opts', {has_vararg = true}}}
+    _func.index[2]:update('COALESCE', updates)
+
+    updates = {{'=', 'param_list', {'scalar'}}, {'=', 'returns', 'integer'},
+               {'=', 'aggregate', 'group'}, {'=', 'exports', {'SQL'}},
+               {'=', 'opts', {has_vararg = true}}}
+    _func.index[2]:update('COUNT', updates)
+
+    updates = {{'=', 'param_list', {'scalar'}}, {'=', 'returns', 'scalar'},
+               {'=', 'is_deterministic', true}, {'=', 'exports', {'SQL'}},
+               {'=', 'opts', {has_vararg = true}}}
+    _func.index[2]:update('GREATEST', updates)
+    _func.index[2]:update('LEAST', updates)
+
+    updates = {{'=', 'param_list', {'scalar', 'scalar'}},
+               {'=', 'returns', 'string'}, {'=', 'aggregate', 'group'},
+               {'=', 'exports', {'SQL'}}, {'=', 'opts', {has_vararg = true}}}
+    _func.index[2]:update('GROUP_CONCAT', updates)
+
+    updates = {{'=', 'param_list', {'scalar'}}, {'=', 'returns', 'string'},
+               {'=', 'is_deterministic', true}, {'=', 'exports', {'SQL'}}}
+    _func.index[2]:update('HEX', updates)
+
+    updates = {{'=', 'param_list', {'scalar', 'scalar'}},
+               {'=', 'returns', 'scalar'}, {'=', 'is_deterministic', true},
+               {'=', 'exports', {'SQL'}}}
+    _func.index[2]:update('IFNULL', updates)
+    _func.index[2]:update('NULLIF', updates)
+
+    updates = {{'=', 'param_list', {'scalar', 'scalar', 'scalar'}},
+               {'=', 'returns', 'boolean'}, {'=', 'is_deterministic', true},
+               {'=', 'exports', {'SQL'}}, {'=', 'opts', {has_vararg = true}}}
+    _func.index[2]:update('LIKE', updates)
+
+    updates = {{'=', 'param_list', {'scalar', 'double'}},
+               {'=', 'returns', 'scalar'}, {'=', 'is_deterministic', true},
+               {'=', 'exports', {'SQL'}}}
+    _func.index[2]:update('LIKELIHOOD', updates)
+
+    updates = {{'=', 'param_list', {'scalar'}}, {'=', 'returns', 'scalar'},
+               {'=', 'is_deterministic', true}, {'=', 'exports', {'SQL'}}}
+    _func.index[2]:update('LIKELY', updates)
+    _func.index[2]:update('UNLIKELY', updates)
+
+    updates = {{'=', 'param_list', {'scalar'}}, {'=', 'returns', 'string'},
+               {'=', 'is_deterministic', true}, {'=', 'exports', {'SQL'}}}
+    _func.index[2]:update('LOWER', updates)
+    _func.index[2]:update('QUOTE', updates)
+    _func.index[2]:update('SOUNDEX', updates)
+    _func.index[2]:update('TYPEOF', updates)
+    _func.index[2]:update('UPPER', updates)
+    _func.index[2]:update('UNICODE', updates)
+
+    updates = {{'=', 'param_list', {'scalar'}}, {'=', 'returns', 'scalar'},
+               {'=', 'aggregate', 'group'}, {'=', 'exports', {'SQL'}}}
+    _func.index[2]:update('MAX', updates)
+    _func.index[2]:update('MIN', updates)
+
+    updates = {{'=', 'param_list', {'scalar', 'scalar'}},
+               {'=', 'returns', 'integer'}, {'=', 'is_deterministic', true},
+               {'=', 'exports', {'SQL'}}}
+    _func.index[2]:update('POSITION', updates)
+
+    updates = {{'=', 'param_list', {'scalar'}}, {'=', 'returns', 'string'},
+               {'=', 'is_deterministic', true}, {'=', 'exports', {'SQL'}},
+               {'=', 'opts', {has_vararg = true}}}
+    _func.index[2]:update('PRINTF', updates)
+    _func.index[2]:update('TRIM', updates)
+
+    updates = {{'=', 'returns', 'integer'}, {'=', 'exports', {'SQL'}}}
+    _func.index[2]:update('RANDOM', updates)
+
+    updates = {{'=', 'returns', 'integer'}, {'=', 'is_deterministic', true},
+               {'=', 'exports', {'SQL'}}}
+    _func.index[2]:update('ROW_COUNT', updates)
+
+    updates = {{'=', 'param_list', {'unsigned'}},
+               {'=', 'returns', 'varbinary'}, {'=', 'exports', {'SQL'}}}
+    _func.index[2]:update('RANDOMBLOB', updates)
+
+    updates = {{'=', 'param_list', {'unsigned'}},
+               {'=', 'returns', 'varbinary'}, {'=', 'is_deterministic', true},
+               {'=', 'exports', {'SQL'}}}
+    _func.index[2]:update('ZEROBLOB', updates)
+
+    updates = {{'=', 'param_list', {'scalar', 'scalar', 'scalar'}},
+               {'=', 'returns', 'string'}, {'=', 'is_deterministic', true},
+               {'=', 'exports', {'SQL'}}}
+    _func.index[2]:update('REPLACE', updates)
+
+    updates = {{'=', 'param_list', {'double', 'unsigned'}},
+               {'=', 'returns', 'double'}, {'=', 'is_deterministic', true},
+               {'=', 'exports', {'SQL'}}, {'=', 'opts', {has_vararg = true}}}
+    _func.index[2]:update('ROUND', updates)
+
+    updates = {{'=', 'param_list', {'scalar', 'integer', 'integer'}},
+               {'=', 'returns', 'string'}, {'=', 'is_deterministic', true},
+               {'=', 'exports', {'SQL'}}, {'=', 'opts', {has_vararg = true}}}
+    _func.index[2]:update('SUBSTR', updates)
+
+    updates = {{'=', 'returns', 'string'}, {'=', 'is_deterministic', true},
+               {'=', 'exports', {'SQL'}}}
+    _func.index[2]:update('VERSION', updates)
+    _func:run_triggers(true)
+end
+
+local function upgrade_to_2_5_2()
+    update_sql_builtin_functions()
+end
+
 --------------------------------------------------------------------------------
 
 local function get_version()
@@ -1007,6 +1149,7 @@ local function upgrade(options)
         {version = mkversion(2, 2, 1), func = upgrade_to_2_2_1, auto = true},
         {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, 5, 2), func = upgrade_to_2_5_2, auto = true},
     }
 
     for _, handler in ipairs(handlers) do
diff --git a/src/box/sql/func.c b/src/box/sql/func.c
index 487cdafe1..df15d303a 100644
--- a/src/box/sql/func.c
+++ b/src/box/sql/func.c
@@ -2188,7 +2188,7 @@ sql_func_by_signature(const char *name, int argc)
 	if (base == NULL || !base->def->exports.sql)
 		return NULL;
 
-	if (base->def->param_count != -1 && base->def->param_count != argc)
+	if (!base->def->opts.has_vararg && base->def->param_count != argc)
 		return NULL;
 	return base;
 }
@@ -2929,11 +2929,6 @@ func_sql_builtin_new(struct func_def *def)
 	func->flags = sql_builtins[idx].flags;
 	func->call = sql_builtins[idx].call;
 	func->finalize = sql_builtins[idx].finalize;
-	def->param_count = sql_builtins[idx].param_count;
-	def->is_deterministic = sql_builtins[idx].is_deterministic;
-	def->returns = sql_builtins[idx].returns;
-	def->aggregate = sql_builtins[idx].aggregate;
-	def->exports.sql = sql_builtins[idx].export_to_sql;
 	return &func->base;
 }
 
diff --git a/src/box/sql/resolve.c b/src/box/sql/resolve.c
index 6f625dc18..5238555c3 100644
--- a/src/box/sql/resolve.c
+++ b/src/box/sql/resolve.c
@@ -614,7 +614,7 @@ resolveExprStep(Walker * pWalker, Expr * pExpr)
 				pNC->nErr++;
 				return WRC_Abort;
 			}
-			if (func->def->param_count != -1 &&
+			if (!func->def->opts.has_vararg &&
 			    func->def->param_count != n) {
 				uint32_t argc = func->def->param_count;
 				const char *err = tt_sprintf("%d", argc);
diff --git a/test/box-py/bootstrap.result b/test/box-py/bootstrap.result
index 0876e77a6..c56f07cef 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, 3, 1]
+  - ['version', 2, 5, 2]
 ...
 box.space._cluster:select{}
 ---
diff --git a/test/sql/types.result b/test/sql/types.result
index 95f7713e8..2498f3a48 100644
--- a/test/sql/types.result
+++ b/test/sql/types.result
@@ -231,7 +231,7 @@ box.execute("SELECT s LIKE NULL FROM t1;")
 ---
 - metadata:
   - name: COLUMN_1
-    type: integer
+    type: boolean
   rows:
   - [null]
 ...
@@ -257,7 +257,7 @@ box.execute("SELECT NULL LIKE s FROM t1;")
 ---
 - metadata:
   - name: COLUMN_1
-    type: integer
+    type: boolean
   rows:
   - [null]
 ...
-- 
2.25.1

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

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-12 15:15 [Tarantool-patches] [PATCH v1 0/7] sql: properly check arguments types of built-in functions imeevma
2020-08-12 15:15 ` [Tarantool-patches] [PATCH v1 1/7] box: add has_vararg option for functions imeevma
2020-08-12 15:15 ` [Tarantool-patches] [PATCH v1 2/7] sql: do not return UNSIGNED in built-in functions imeevma
2020-08-12 15:15 ` imeevma [this message]
2020-08-12 15:15 ` [Tarantool-patches] [PATCH v1 4/7] box: add param_list to 'struct func' imeevma
2020-08-12 15:15 ` [Tarantool-patches] [PATCH v1 5/7] sql: check built-in functions argument types imeevma
2020-08-12 15:15 ` [Tarantool-patches] [PATCH v1 6/7] sql: VARBINARY and STRING in built-in functions imeevma
2020-08-12 15:15 ` [Tarantool-patches] [PATCH v1 7/7] sql: refactor sql/func.c imeevma

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=202a7e7207c04e0196964afca93427dbf208ceec.1597244875.git.imeevma@gmail.com \
    --to=imeevma@tarantool.org \
    --cc=tarantool-patches@dev.tarantool.org \
    --cc=v.shpilevoy@tarantool.org \
    --subject='Re: [Tarantool-patches] [PATCH v1 3/7] sql: move built-in function definitions in _func' \
    /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