From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from [87.239.111.99] (localhost [127.0.0.1]) by dev.tarantool.org (Postfix) with ESMTP id 8393A7F62A; Fri, 6 Aug 2021 22:59:16 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 8393A7F62A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tarantool.org; s=dev; t=1628279956; bh=6iFOxbo8gw4wHBsj7Iqy08QYZlTcgtzZY7J+cQdcdmw=; h=Date:To:References:In-Reply-To:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=dQHRqCukuoXQAjJYKLXpcFg0NUV+1hIfIPHNZsKecpafheNs62S6FJmlwGLn1X0iP FbILcQfezcPNm+AQ0L5t0OnycXL5Un8Mg1TzMvGeRXr+prqKmbHSlVJlOblgOcXAsg rQqrItqgBruziZ2QyaVKtNpEvVhJj8bjKA9mCX4Q= Received: from smtp49.i.mail.ru (smtp49.i.mail.ru [94.100.177.109]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id 5DA3C7F62A for ; Fri, 6 Aug 2021 22:59:15 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 5DA3C7F62A Received: by smtp49.i.mail.ru with esmtpa (envelope-from ) id 1mC5zu-0002fX-Lp; Fri, 06 Aug 2021 22:59:15 +0300 Date: Fri, 6 Aug 2021 22:59:13 +0300 To: v.shpilevoy@tarantool.org, tarantool-patches@dev.tarantool.org Message-ID: <20210806195913.GF11107@tarantool.org> References: <20a13f2ae829a4fffcd95e120f31293efdfad506.1628081224.git.imeevma@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20a13f2ae829a4fffcd95e120f31293efdfad506.1628081224.git.imeevma@gmail.com> X-4EC0790: 10 X-7564579A: B8F34718100C35BD X-77F55803: 4F1203BC0FB41BD92087353F0EC44DD94BB7C0677F3ED9D05EB08EAFC9298EA6182A05F5380850401C56E36015D91B380FA3256EA877729FD192CFFF76B8A26EEB90F966D8FBBE67 X-7FA49CB5: FF5795518A3D127A4AD6D5ED66289B5278DA827A17800CE796563325B6E011C8C2099A533E45F2D0395957E7521B51C2CFCAF695D4D8E9FCEA1F7E6F0F101C6778DA827A17800CE7560ADFC8AADDC107EA1F7E6F0F101C6723150C8DA25C47586E58E00D9D99D84E1BDDB23E98D2D38BBCA57AF85F7723F294E2C3E2C4A26A0E788496C750BD264BCC7F00164DA146DAFE8445B8C89999728AA50765F7900637F6B57BC7E64490618DEB871D839B7333395957E7521B51C2DFABB839C843B9C08941B15DA834481F8AA50765F7900637F6B57BC7E6449061A352F6E88A58FB86F5D81C698A659EA73AA81AA40904B5D9A18204E546F3947C331E8EC09D67D04903F1AB874ED890284AD6D5ED66289B52698AB9A7B718F8C46E0066C2D8992A16725E5C173C3A84C3C82992CCEE412624BA3038C0950A5D36B5C8C57E37DE458B0BC6067A898B09E46D1867E19FE14079C09775C1D3CA48CF3D321E7403792E342EB15956EA79C166A417C69337E82CC275ECD9A6C639B01B78DA827A17800CE798228CBAD4AC77F6731C566533BA786AA5CC5B56E945C8DA X-B7AD71C0: AC4F5C86D027EB782CDD5689AFBDA7A213B5FB47DCBC3458F0AFF96BAACF4158235E5A14AD4A4A4625E192CAD1D9E79D94463893BF8742D00D9C551856646A34 X-C1DE0DAB: 0D63561A33F958A58C12776F455B5AC30DEB6E4A8D44ADDA6F2F620248822E6DD59269BC5F550898D99A6476B3ADF6B47008B74DF8BB9EF7333BD3B22AA88B938A852937E12ACA75AF0B556A5A327A45410CA545F18667F91A7EA1CDA0B5A7A0 X-C8649E89: 4E36BF7865823D7055A7F0CF078B5EC49A30900B95165D3494FB0335DF05DC3A32E6739F10659E5A78090B737D550A17A488EED19A348DCD667CECC4770FA7FE1D7E09C32AA3244C5EBC6EB9D07B4E9222CFBEA5012608158894E9C85370243E729B2BEF169E0186 X-D57D3AED: 3ZO7eAau8CL7WIMRKs4sN3D3tLDjz0dLbV79QFUyzQ2Ujvy7cMT6pYYqY16iZVKkSc3dCLJ7zSJH7+u4VD18S7Vl4ZUrpaVfd2+vE6kuoey4m4VkSEu530nj6fImhcD4MUrOEAnl0W826KZ9Q+tr5ycPtXkTV4k65bRjmOUUP8cvGozZ33TWg5HZplvhhXbhDGzqmQDTd6OAevLeAnq3Ra9uf7zvY2zzsIhlcp/Y7m53TZgf2aB4JOg4gkr2biojFhlvmGwdUwTUfIo7Fuybsg== X-Mailru-Sender: 3A338A78718AEC5A7171F149183FF3A7702BA2C028E13F7C513B22C7E09CCFC07CD86A2904C1AE73A3E7B4BFDCAD2EFE027D9DD7AE851095A2E8D17B49942DB0CBEE3F9BE14373499437F6177E88F7363CDA0F3B3F5B9367 X-Mras: Ok Subject: Re: [Tarantool-patches] [PATCH v2 6/6] sql: remove unnecessary function initialization X-BeenThere: tarantool-patches@dev.tarantool.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Mergen Imeev via Tarantool-patches Reply-To: Mergen Imeev Errors-To: tarantool-patches-bounces@dev.tarantool.org Sender: "Tarantool-patches" I removed SQL built-ins support from func_def_check(). Diff and new patch below. On Wed, Aug 04, 2021 at 03:58:47PM +0300, Mergen Imeev via Tarantool-patches wrote: > After removing the SQL built-in functions from _func, the code used to > initialize these SQL built-in functions is no longer used and should be > removed. > > Follow-up #6106 > --- > src/box/func.c | 7 ------- > src/box/sql/func.c | 49 ---------------------------------------------- > 2 files changed, 56 deletions(-) > > diff --git a/src/box/func.c b/src/box/func.c > index 731f18a3b..04ae1b958 100644 > --- a/src/box/func.c > +++ b/src/box/func.c > @@ -394,10 +394,6 @@ restore_fail: > static struct func * > func_c_new(struct func_def *def); > > -/** Construct a SQL builtin function object. */ > -extern struct func * > -func_sql_builtin_new(struct func_def *def); > - > struct func * > func_new(struct func_def *def) > { > @@ -409,9 +405,6 @@ func_new(struct func_def *def) > case FUNC_LANGUAGE_LUA: > func = func_lua_new(def); > break; > - case FUNC_LANGUAGE_SQL_BUILTIN: > - func = func_sql_builtin_new(def); > - break; > default: > unreachable(); > } > diff --git a/src/box/sql/func.c b/src/box/sql/func.c > index 2a3a5d457..50014b756 100644 > --- a/src/box/sql/func.c > +++ b/src/box/sql/func.c > @@ -2789,55 +2789,6 @@ sql_built_in_functions_cache_free(void) > mh_strnptr_delete(built_in_functions); > } > > -struct func * > -func_sql_builtin_new(struct func_def *def) > -{ > - assert(def->language == FUNC_LANGUAGE_SQL_BUILTIN); > - /** Binary search for corresponding builtin entry. */ > - int idx = -1, left = 0, right = nelem(sql_builtins) - 1; > - while (left <= right) { > - uint32_t mid = (left + right) / 2; > - int rc = strcmp(def->name, sql_builtins[mid].name); > - if (rc == 0) { > - idx = mid; > - break; > - } > - if (rc < 0) > - right = mid - 1; > - else > - left = mid + 1; > - } > - /* > - * All SQL built-in(s) (stubs) are defined in a snapshot. > - * Implementation-specific metadata is defined in > - * sql_builtins list. When a definition were not found > - * above, the function name is invalid, i.e. it is > - * not built-in function. > - */ > - if (idx == -1) { > - diag_set(ClientError, ER_CREATE_FUNCTION, def->name, > - "given built-in is not predefined"); > - return NULL; > - } > - struct func_sql_builtin *func = > - (struct func_sql_builtin *) calloc(1, sizeof(*func)); > - if (func == NULL) { > - diag_set(OutOfMemory, sizeof(*func), "malloc", "func"); > - return NULL; > - } > - func->base.def = def; > - func->base.vtab = &func_sql_builtin_vtab; > - 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; > -} > - > static void > func_sql_builtin_destroy(struct func *func) > { > -- > 2.25.1 > Diff: diff --git a/src/box/func_def.c b/src/box/func_def.c index 11d2bdb84..630b4a43c 100644 --- a/src/box/func_def.c +++ b/src/box/func_def.c @@ -116,14 +116,6 @@ func_def_check(struct func_def *def) return -1; } break; - case FUNC_LANGUAGE_SQL_BUILTIN: - if (def->body != NULL || def->is_sandboxed) { - diag_set(ClientError, ER_CREATE_FUNCTION, def->name, - "body and is_sandboxed options are not compatible " - "with SQL language"); - return -1; - } - break; default: break; } New patch: commit 79871a45476aca400ecb921a44550a3807c309ca Author: Mergen Imeev Date: Sat Jul 31 13:09:07 2021 +0300 sql: remove unnecessary function initialization After removing the SQL built-in functions from _func, the code used to initialize these SQL built-in functions is no longer used and should be removed. Follow-up #6106 diff --git a/src/box/func.c b/src/box/func.c index 731f18a3b..04ae1b958 100644 --- a/src/box/func.c +++ b/src/box/func.c @@ -394,10 +394,6 @@ restore_fail: static struct func * func_c_new(struct func_def *def); -/** Construct a SQL builtin function object. */ -extern struct func * -func_sql_builtin_new(struct func_def *def); - struct func * func_new(struct func_def *def) { @@ -409,9 +405,6 @@ func_new(struct func_def *def) case FUNC_LANGUAGE_LUA: func = func_lua_new(def); break; - case FUNC_LANGUAGE_SQL_BUILTIN: - func = func_sql_builtin_new(def); - break; default: unreachable(); } diff --git a/src/box/func_def.c b/src/box/func_def.c index 11d2bdb84..630b4a43c 100644 --- a/src/box/func_def.c +++ b/src/box/func_def.c @@ -116,14 +116,6 @@ func_def_check(struct func_def *def) return -1; } break; - case FUNC_LANGUAGE_SQL_BUILTIN: - if (def->body != NULL || def->is_sandboxed) { - diag_set(ClientError, ER_CREATE_FUNCTION, def->name, - "body and is_sandboxed options are not compatible " - "with SQL language"); - return -1; - } - break; default: break; } diff --git a/src/box/sql/func.c b/src/box/sql/func.c index 2a3a5d457..50014b756 100644 --- a/src/box/sql/func.c +++ b/src/box/sql/func.c @@ -2789,55 +2789,6 @@ sql_built_in_functions_cache_free(void) mh_strnptr_delete(built_in_functions); } -struct func * -func_sql_builtin_new(struct func_def *def) -{ - assert(def->language == FUNC_LANGUAGE_SQL_BUILTIN); - /** Binary search for corresponding builtin entry. */ - int idx = -1, left = 0, right = nelem(sql_builtins) - 1; - while (left <= right) { - uint32_t mid = (left + right) / 2; - int rc = strcmp(def->name, sql_builtins[mid].name); - if (rc == 0) { - idx = mid; - break; - } - if (rc < 0) - right = mid - 1; - else - left = mid + 1; - } - /* - * All SQL built-in(s) (stubs) are defined in a snapshot. - * Implementation-specific metadata is defined in - * sql_builtins list. When a definition were not found - * above, the function name is invalid, i.e. it is - * not built-in function. - */ - if (idx == -1) { - diag_set(ClientError, ER_CREATE_FUNCTION, def->name, - "given built-in is not predefined"); - return NULL; - } - struct func_sql_builtin *func = - (struct func_sql_builtin *) calloc(1, sizeof(*func)); - if (func == NULL) { - diag_set(OutOfMemory, sizeof(*func), "malloc", "func"); - return NULL; - } - func->base.def = def; - func->base.vtab = &func_sql_builtin_vtab; - 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; -} - static void func_sql_builtin_destroy(struct func *func) {