Tarantool development patches archive
 help / color / mirror / Atom feed
From: Kirill Shcherbatov <kshcherbatov@tarantool.org>
To: tarantool-patches@freelists.org, korablev@tarantool.org
Cc: Kirill Shcherbatov <kshcherbatov@tarantool.org>
Subject: [tarantool-patches] [PATCH v2 0/8] sql: uniform SQL and Lua functions subsystem
Date: Thu,  8 Aug 2019 17:50:44 +0300	[thread overview]
Message-ID: <cover.1565275469.git.kshcherbatov@tarantool.org> (raw)

This patchset reworks SQL functions subsystem. Previously Tarantool's
SQL used an own FuncDef function representation and corresponding
FuncDef cache. Replacing it with Tarantool's uniform function
representation makes possible to call any function on any supported
language in SQL.

Changes in version 2:
  - introduced GREATER, LESSER entries
  - reworked multiple signatures for functions: only SQL builtins
    support name overload and it is trivial and processed by
    single function implementation
  - introduced OP_BuiltinFunction to use func_sql_builtin's
    function implementation directly without port proxy object

Branch: http://github.com/tarantool/tarantool/tree/kshch/gh-4182-persistent-functions
Issue: https://github.com/tarantool/tarantool/issues/2233

Kirill Shcherbatov (8):
  sql: remove SQL_PreferBuiltin flag
  sql: GREATEST, LEAST instead of MIN/MAX overload
  sql: wrap all trim functions in dispatcher
  sql: get rid of SQL_FUNC_COUNT flag
  sql: introduce a signature_mask for functions
  sql: rename OP_Function to OP_BuiltinFunction
  sql: get rid of FuncDef function hash
  box: get rid of box.internal.sql_function_create

 src/box/func_def.h              |   2 +-
 src/box/lua/lua_sql.h           |  39 --
 src/box/port.h                  |  17 +
 src/box/sql.h                   |   5 +
 src/box/sql/sqlInt.h            | 240 ++++--------
 src/box/sql/vdbe.h              |   9 +-
 src/box/sql/vdbeInt.h           |  26 +-
 src/lib/core/port.h             |  19 +
 src/box/call.c                  |   1 +
 src/box/execute.c               |   1 +
 src/box/func.c                  |  34 +-
 src/box/lua/call.c              |   6 +-
 src/box/lua/lua_sql.c           | 205 -----------
 src/box/port.c                  |   4 +
 src/box/sql.c                   |  24 ++
 src/box/sql/analyze.c           |  41 +--
 src/box/sql/callback.c          | 212 +----------
 src/box/sql/date.c              |  28 --
 src/box/sql/expr.c              |  64 ++--
 src/box/sql/func.c              | 627 ++++++++++++++++++++++++++------
 src/box/sql/global.c            |   7 -
 src/box/sql/main.c              | 137 -------
 src/box/sql/resolve.c           |  50 +--
 src/box/sql/select.c            |   9 +-
 src/box/sql/vdbe.c              |  94 +++--
 src/box/sql/vdbeapi.c           |  11 +-
 src/box/sql/vdbeaux.c           |  31 +-
 src/box/sql/vdbemem.c           |  50 ++-
 src/box/sql/whereexpr.c         |   2 +-
 src/box/CMakeLists.txt          |   1 -
 src/box/bootstrap.snap          | Bin 5907 -> 5944 bytes
 src/box/lua/schema.lua          |   3 +-
 src/box/lua/upgrade.lua         |  20 +
 test-run                        |   2 +-
 test/box-py/bootstrap.result    |   4 +-
 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_misc.result     | 134 +++----
 test/box/access_sysview.result  |   8 +-
 test/box/function1.result       | 179 ++++++++-
 test/box/function1.test.lua     |  62 +++-
 test/sql-tap/alias.test.lua     |  11 +-
 test/sql-tap/check.test.lua     |  11 +-
 test/sql-tap/coalesce.test.lua  |   2 +-
 test/sql-tap/func3.test.lua     |  12 +-
 test/sql-tap/func5.test.lua     |  61 ++--
 test/sql-tap/in1.test.lua       |   6 +-
 test/sql-tap/insert1.test.lua   |   2 +-
 test/sql-tap/lua_sql.test.lua   | 121 +++---
 test/sql-tap/misc1.test.lua     |   2 +-
 test/sql-tap/select1.test.lua   |  22 +-
 test/sql-tap/select2.test.lua   |   6 +-
 test/sql-tap/select3.test.lua   |   2 +-
 test/sql-tap/subquery.test.lua  |  21 +-
 test/sql-tap/trigger9.test.lua  |   8 +-
 test/sql-tap/where2.test.lua    |   4 +-
 test/sql-tap/with1.test.lua     |   2 +-
 test/sql/errinj.result          |  26 --
 test/sql/errinj.test.lua        |  10 -
 test/sql/func-recreate.result   |  41 ++-
 test/sql/func-recreate.test.lua |  26 +-
 test/sql/iproto.result          |   8 +-
 test/sql/iproto.test.lua        |   4 +-
 test/sql/types.result           |  12 +-
 test/sql/types.test.lua         |   6 +-
 test/wal_off/func_max.result    |   8 +-
 68 files changed, 1458 insertions(+), 1392 deletions(-)
 delete mode 100644 src/box/lua/lua_sql.h
 delete mode 100644 src/box/lua/lua_sql.c

-- 
2.22.0

             reply	other threads:[~2019-08-08 14:50 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-08 14:50 Kirill Shcherbatov [this message]
2019-08-08 14:50 ` [tarantool-patches] [PATCH v2 1/8] sql: remove SQL_PreferBuiltin flag Kirill Shcherbatov
2019-08-09 16:07   ` [tarantool-patches] " n.pettik
2019-08-12 21:58   ` Konstantin Osipov
2019-08-08 14:50 ` [tarantool-patches] [PATCH v2 2/8] sql: GREATEST, LEAST instead of MIN/MAX overload Kirill Shcherbatov
2019-08-09 17:37   ` [tarantool-patches] " n.pettik
2019-08-13  8:26     ` Kirill Shcherbatov
2019-08-12 21:59   ` Konstantin Osipov
2019-08-08 14:50 ` [tarantool-patches] [PATCH v2 3/8] sql: wrap all trim functions in dispatcher Kirill Shcherbatov
2019-08-09 18:05   ` [tarantool-patches] " n.pettik
2019-08-13  8:28     ` Kirill Shcherbatov
2019-08-13 22:19       ` n.pettik
2019-08-12 22:00   ` Konstantin Osipov
2019-08-08 14:50 ` [tarantool-patches] [PATCH v2 4/8] sql: get rid of SQL_FUNC_COUNT flag Kirill Shcherbatov
2019-08-12 22:01   ` [tarantool-patches] " Konstantin Osipov
2019-08-13 20:35   ` n.pettik
2019-08-14  7:25     ` Kirill Shcherbatov
2019-08-08 14:50 ` [tarantool-patches] [PATCH v2 5/8] sql: introduce a signature_mask for functions Kirill Shcherbatov
2019-08-12 22:04   ` [tarantool-patches] " Konstantin Osipov
2019-08-13  8:32     ` Kirill Shcherbatov
2019-08-13  8:44       ` Konstantin Osipov
2019-08-13 20:38   ` n.pettik
2019-08-14  7:21     ` Kirill Shcherbatov
2019-08-08 14:50 ` [tarantool-patches] [PATCH v2 6/8] sql: rename OP_Function to OP_BuiltinFunction Kirill Shcherbatov
2019-08-12 22:04   ` [tarantool-patches] " Konstantin Osipov
2019-08-13 20:36   ` n.pettik
2019-08-08 14:50 ` [tarantool-patches] [PATCH v2 7/8] sql: get rid of FuncDef function hash Kirill Shcherbatov
2019-08-12 22:11   ` [tarantool-patches] " Konstantin Osipov
2019-08-13  7:29     ` Kirill Shcherbatov
2019-08-13  8:42       ` Konstantin Osipov
2019-08-13  9:45         ` Kirill Shcherbatov
2019-08-13 20:40   ` n.pettik
2019-08-16 12:57     ` Kirill Shcherbatov
2019-08-20 16:06       ` n.pettik
2019-08-08 14:50 ` [tarantool-patches] [PATCH v2 8/8] box: get rid of box.internal.sql_function_create Kirill Shcherbatov
2019-08-13 20:43   ` [tarantool-patches] " n.pettik
2019-08-16 12:57     ` Kirill Shcherbatov
2019-08-20 19:36       ` n.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=cover.1565275469.git.kshcherbatov@tarantool.org \
    --to=kshcherbatov@tarantool.org \
    --cc=korablev@tarantool.org \
    --cc=tarantool-patches@freelists.org \
    --subject='Re: [tarantool-patches] [PATCH v2 0/8] sql: uniform SQL and Lua functions subsystem' \
    /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