From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from localhost (localhost [127.0.0.1]) by turing.freelists.org (Avenir Technologies Mail Multiplex) with ESMTP id 96ABE2EFE9 for ; Tue, 27 Nov 2018 14:25:19 -0500 (EST) Received: from turing.freelists.org ([127.0.0.1]) by localhost (turing.freelists.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 4z_5c3VUo92t for ; Tue, 27 Nov 2018 14:25:19 -0500 (EST) Received: from smtp32.i.mail.ru (smtp32.i.mail.ru [94.100.177.92]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by turing.freelists.org (Avenir Technologies Mail Multiplex) with ESMTPS id DA33B2EFCC for ; Tue, 27 Nov 2018 14:25:18 -0500 (EST) From: imeevma@tarantool.org Subject: [tarantool-patches] [PATCH v3 0/7] Remove box.sql.execute Date: Tue, 27 Nov 2018 22:25:16 +0300 Message-Id: Sender: tarantool-patches-bounce@freelists.org Errors-to: tarantool-patches-bounce@freelists.org Reply-To: tarantool-patches@freelists.org List-help: List-unsubscribe: List-software: Ecartis version 1.0.0 List-Id: tarantool-patches List-subscribe: List-owner: List-post: List-archive: To: v.shpilevoy@tarantool.org, tarantool-patches@freelists.org The goal of this patch-set is to make functions from execute.c the only way to execute SQL statements. This goal includes similar output for executed SQL statements no matter how they were executed: through net.box or through box. This is the third version of patch-set. It is not complete. It still has no last part, which is replacing box.sql.execute by box.execute, because it will lead to massive test editing. The main goal of this version of patch-set is to try new design of box.sql.execute() and decide to leave it as it is or modify it for better performance. https://github.com/tarantool/tarantool/issues/3505 https://github.com/tarantool/tarantool/tree/imeevma/gh-3505-replace-box_sql_execute-by-box_execute General information of difference from previous version of patch-set: - Some refactoring has been done. - Some design decisions were fixed. A bit about patches of patch-set with comments about changes in this version: Patch 1 allows to use SQL query as plain text in sql_request. Nothing changes. Patch 2 creates method for port which will allow us to dump port directly to Lua stack. In this version this method creates new table and dump into it instead of dump into already created one. Patch 3 makes function sql_response_dump() a bit more universal by removing IPROTO functions from there. Some deprecated due to this patch code was removed. Patch 4 allows us to design vstream by wrapping mpstream functions. Now function sql_response_dump() uses function port_dump_msgpack() instead of port_dump_msgpack_16(). It allows us to wrap port_dump_* by vstream methods. Patch 5 creates interface vstream and its mpstream implementation. Difference from previous version: - vstream do not contain "struct lua_State" and "struct mpstream" now. Now it has inheritance_padding() which allows it to be inherited from mpstream and luastream, that will be intoduced in next patch. - Some refactoring has been done. Patch 6 creates vstream implementation for Lua and defines new box.sql.new_execute() function that will become box.execute() in next vesions. Difference from previous version: - Luastream created. It has the same encode_* methods as mpstream. - Lua implementation of vstream methods was moved to luastream.c. - Some refactoring has been done. Patch 7 is created to check that box.sql.new_execute() is able to pass through tests created for box.sql.execute(). Almost nothing changes from previous version. v1: https://www.freelists.org/post/tarantool-patches/PATCH-v1-0010-sql-remove-boxsqlexecute v2: https://www.freelists.org/post/tarantool-patches/PATCH-v2-07-Remove-boxsqlexecute Kirill Shcherbatov (1): box: store sql text and length in sql_request Mergen Imeev (6): box: add method dump_lua to port iproto: remove iproto functions from execute.c iproto: replace obuf by mpstream in execute.c sql: create interface vstream lua: create vstream implementation for Lua sql: check new box.sql.execute() src/box/CMakeLists.txt | 1 + src/box/execute.c | 318 +++++++++++++++++++++++++++++++++++++----------- src/box/execute.h | 51 +++++--- src/box/iproto.cc | 32 ++++- src/box/lua/call.c | 1 + src/box/lua/luastream.c | 151 +++++++++++++++++++++++ src/box/lua/misc.cc | 29 +++-- src/box/lua/schema.lua | 23 ++++ src/box/lua/sql.c | 109 ++++------------- src/box/lua/sql.h | 4 + src/box/port.c | 10 ++ src/box/port.h | 6 + src/box/vstream.h | 177 +++++++++++++++++++++++++++ src/box/xrow.c | 45 ------- src/box/xrow.h | 19 --- src/mpstream.c | 53 ++++++++ 16 files changed, 777 insertions(+), 252 deletions(-) create mode 100644 src/box/lua/luastream.c create mode 100644 src/box/vstream.h -- 2.7.4