From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp48.i.mail.ru (smtp48.i.mail.ru [94.100.177.108]) (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 A14AC446444 for ; Wed, 23 Sep 2020 04:14:27 +0300 (MSK) From: Alexander Turenko Date: Wed, 23 Sep 2020 04:14:17 +0300 Message-Id: In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [Tarantool-patches] [PATCH 12/14] WIP: module api: expose box_key_def_merge() List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Vladislav Shpilevoy Cc: tarantool-patches@dev.tarantool.org, Alexander Turenko Part of #5273 --- src/box/key_def_api.c | 6 ++++++ src/box/key_def_api.h | 14 ++++++++++++++ src/exports.h | 1 + 3 files changed, 21 insertions(+) diff --git a/src/box/key_def_api.c b/src/box/key_def_api.c index b8a0d5807..740fb4339 100644 --- a/src/box/key_def_api.c +++ b/src/box/key_def_api.c @@ -292,4 +292,10 @@ box_tuple_compare_with_key(box_tuple_t *tuple_a, const char *key_b, } +box_key_def_t * +box_key_def_merge(const box_key_def_t *first, const box_key_def_t *second) +{ + return key_def_merge(first, second); +} + /* }}} API functions implementations */ diff --git a/src/box/key_def_api.h b/src/box/key_def_api.h index 16934eeb4..0cef7d1ea 100644 --- a/src/box/key_def_api.h +++ b/src/box/key_def_api.h @@ -229,6 +229,20 @@ API_EXPORT int box_tuple_compare_with_key(box_tuple_t *tuple_a, const char *key_b, box_key_def_t *key_def); +/** + * Allocate a new key_def with a set union of key parts from + * first and second key defs. + * + * Parts of the new key_def consist of the first key_def's parts + * and those parts of the second key_def that were not among the + * first parts. + * + * @retval not NULL Ok. + * @retval NULL Memory error. + */ +API_EXPORT box_key_def_t * +box_key_def_merge(const box_key_def_t *first, const box_key_def_t *second); + /** \endcond public */ /* diff --git a/src/exports.h b/src/exports.h index 45a62421e..be8144036 100644 --- a/src/exports.h +++ b/src/exports.h @@ -31,6 +31,7 @@ EXPORT(box_iterator_free) EXPORT(box_iterator_next) EXPORT(box_key_def_delete) EXPORT(box_key_def_dump_parts) +EXPORT(box_key_def_merge) EXPORT(box_key_def_new) EXPORT(box_key_def_new_ex) EXPORT(box_key_part_def_create) -- 2.25.0