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 61B3D6EC55; Thu, 29 Jul 2021 21:58:01 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 61B3D6EC55 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tarantool.org; s=dev; t=1627585081; bh=nOOvYqrWLxY96Ce1Hjnz3Du+YedaCWoZ4PkH2ui1eHs=; h=To:Cc:References:Date:In-Reply-To:Subject:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=BY2uL+u7PkG7zCqhC0FHB5oRFXiF2+CCC17kfnZ9rN+ED0g/L+8hM2qDbWhdaxsM+ E43WLqihdmk1FrYkFzXKJYY6hm1W16mqPI+xeVnoK6za2spWGmw2xZkjr263GqFmJz MhfQaDx10AiwFGr8e8cemiujO9L3hvcthrO6LiDE= Received: from smtp30.i.mail.ru (smtp30.i.mail.ru [94.100.177.90]) (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 2C4F56EC6F for ; Thu, 29 Jul 2021 21:57:02 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 2C4F56EC6F Received: by smtp30.i.mail.ru with esmtpa (envelope-from ) id 1m9BDJ-0006Ar-EJ; Thu, 29 Jul 2021 21:57:01 +0300 To: Timur Safin , v.shpilevoy@tarantool.org Cc: tarantool-patches@dev.tarantool.org References: <509f7a039e57914ef5a869735b1136fbd969a52b.1627468002.git.tsafin@tarantool.org> Message-ID: <643ba6f8-0342-d9c0-0651-772c575762a5@tarantool.org> Date: Thu, 29 Jul 2021 21:57:00 +0300 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:78.0) Gecko/20100101 Thunderbird/78.12.0 MIME-Version: 1.0 In-Reply-To: <509f7a039e57914ef5a869735b1136fbd969a52b.1627468002.git.tsafin@tarantool.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-GB X-7564579A: 646B95376F6C166E X-77F55803: 4F1203BC0FB41BD941C43E597735A9C33D83595CA30D6DC5179D1C9A908C47E5182A05F538085040ABDF5744D54B66BDB95F8FFD4A308EF85F9FF81F43E1078A46ED5E2F12B270FD X-7FA49CB5: FF5795518A3D127A4AD6D5ED66289B5278DA827A17800CE75263010198C72082EA1F7E6F0F101C67BD4B6F7A4D31EC0BCC500DACC3FED6E28638F802B75D45FF8AA50765F7900637F757A79C3007ACA28638F802B75D45FF36EB9D2243A4F8B5A6FCA7DBDB1FC311F39EFFDF887939037866D6147AF826D8FFFFFA2407F278D7F718CF51ACD52F88117882F4460429724CE54428C33FAD305F5C1EE8F4F765FCF1175FABE1C0F9B6A471835C12D1D9774AD6D5ED66289B52BA9C0B312567BB23117882F446042972877693876707352033AC447995A7AD18F04B652EEC242312D2E47CDBA5A96583BA9C0B312567BB2376E601842F6C81A19E625A9149C048EE91ADC097FE2C3A08098B145E00970258D8FC6C240DEA7642DBF02ECDB25306B2B78CF848AE20165D0A6AB1C7CE11FEE3CF7CD7A0D5AA5F2503F1AB874ED89028C4224003CC836476EA7A3FFF5B025636E2021AF6380DFAD1A18204E546F3947CB11811A4A51E3B096D1867E19FE1407959CC434672EE6371089D37D7C0E48F6C8AA50765F7900637EC3198ECE464ADAEEFF80C71ABB335746BA297DBC24807EABDAD6C7F3747799A X-B7AD71C0: AC4F5C86D027EB782CDD5689AFBDA7A213B5FB47DCBC3458F0AFF96BAACF4158235E5A14AD4A4A4625E192CAD1D9E79DB53CE84373687089F33B32CFE2BCE7D8 X-C1DE0DAB: 0D63561A33F958A536984CDDF19A3159FADB746C77A3CFAC66551F7687CFC23BD59269BC5F550898D99A6476B3ADF6B47008B74DF8BB9EF7333BD3B22AA88B938A852937E12ACA7536C62C4FBC402878410CA545F18667F91A7EA1CDA0B5A7A0 X-C8649E89: 4E36BF7865823D7055A7F0CF078B5EC49A30900B95165D34A541DB4061E938327D7CEA5719A626183685AD17F48774964426CF095A7D4D0B6E7BEF17022B55021D7E09C32AA3244CC796000168DA90F05CC9399BABCD5D4BB4DF56057A86259FFACE5A9C96DEB163 X-D57D3AED: 3ZO7eAau8CL7WIMRKs4sN3D3tLDjz0dLbV79QFUyzQ2Ujvy7cMT6pYYqY16iZVKkSc3dCLJ7zSJH7+u4VD18S7Vl4ZUrpaVfd2+vE6kuoey4m4VkSEu530nj6fImhcD4MUrOEAnl0W826KZ9Q+tr5ycPtXkTV4k65bRjmOUUP8cvGozZ33TWg5HZplvhhXbhDGzqmQDTd6OAevLeAnq3Ra9uf7zvY2zzsIhlcp/Y7m53TZgf2aB4JOg4gkr2biojPp/mPgZxawH4Zl+0Jq5K4Q== X-Mailru-Sender: 583F1D7ACE8F49BD1042885CEC987B6B63FD42C032CE22F1B95F8FFD4A308EF8E8285F0AB37D98A77019711D9D5B048E1458020726E2BC9FD5ECBA0B92C0A936CDC7563AA7CEBD287402F9BA4338D657ED14614B50AE0675 X-Mras: Ok Subject: Re: [Tarantool-patches] [PATCH resend v2 07/11] lua, datetime: proper datetime encoding 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: Oleg Babin via Tarantool-patches Reply-To: Oleg Babin Errors-To: tarantool-patches-bounces@dev.tarantool.org Sender: "Tarantool-patches" Thanks for your patch. This change should be squashed into the patch where encoding was introduced. On 28.07.2021 13:34, Timur Safin via Tarantool-patches wrote: > * correct incorrect encoding of MP_EXT sizes for datetime > messagepack values; > * export necessary symbols for datetime messagepack size calculations > so they will be available for Lua consumption. > > Part of #5941 > --- > src/exports.h | 2 ++ > src/lib/core/datetime.c | 15 ++++++++++----- > src/lua/msgpackffi.lua | 10 ++++++++++ > 3 files changed, 22 insertions(+), 5 deletions(-) > > diff --git a/src/exports.h b/src/exports.h > index 586444b65..3a1e8854c 100644 > --- a/src/exports.h > +++ b/src/exports.h > @@ -437,6 +437,7 @@ EXPORT(mp_encode_decimal) > EXPORT(mp_encode_double) > EXPORT(mp_encode_float) > EXPORT(mp_encode_uuid) > +EXPORT(mp_encode_datetime) > EXPORT(mp_ext_hint) > EXPORT(mp_format) > EXPORT(mp_fprint) > @@ -446,6 +447,7 @@ EXPORT(mp_fprint_recursion) > EXPORT(mp_parser_hint) > EXPORT(mp_sizeof_decimal) > EXPORT(mp_sizeof_uuid) > +EXPORT(mp_sizeof_datetime) > EXPORT(mp_snprint) > EXPORT(mp_snprint_ext) > EXPORT(mp_snprint_ext_default) > diff --git a/src/lib/core/datetime.c b/src/lib/core/datetime.c > index 26ba8a702..76b06eae5 100755 > --- a/src/lib/core/datetime.c > +++ b/src/lib/core/datetime.c > @@ -83,8 +83,8 @@ mp_decode_Xint(const char **data) > return 0; > } > > -uint32_t > -mp_sizeof_datetime(const struct datetime_t *date) > +static inline uint32_t > +mp_sizeof_datetime_raw(const struct datetime_t *date) > { > uint32_t sz = mp_sizeof_Xint(date->secs); > > @@ -94,10 +94,15 @@ mp_sizeof_datetime(const struct datetime_t *date) > sz += mp_sizeof_Xint(date->nsec); > if (date->offset) > sz += mp_sizeof_Xint(date->offset); > - > return sz; > } > > +uint32_t > +mp_sizeof_datetime(const struct datetime_t *date) > +{ > + return mp_sizeof_ext(mp_sizeof_datetime_raw(date)); > +} > + > struct datetime_t * > datetime_unpack(const char **data, uint32_t len, struct datetime_t *date) > { > @@ -112,7 +117,7 @@ datetime_unpack(const char **data, uint32_t len, struct datetime_t *date) > return date; > > svp = *data; > - date->secs = mp_decode_Xint(data); > + date->nsec = mp_decode_Xint(data); > len -= *data - svp; > > if (len <= 0) > @@ -153,7 +158,7 @@ datetime_pack(char *data, const struct datetime_t *date) > char * > mp_encode_datetime(char *data, const struct datetime_t *date) > { > - uint32_t len = mp_sizeof_datetime(date); > + uint32_t len = mp_sizeof_datetime_raw(date); > > data = mp_encode_extl(data, MP_DATETIME, len); > > diff --git a/src/lua/msgpackffi.lua b/src/lua/msgpackffi.lua > index 271be857a..c47d77acb 100644 > --- a/src/lua/msgpackffi.lua > +++ b/src/lua/msgpackffi.lua > @@ -26,6 +26,10 @@ char * > mp_encode_uuid(char *data, const struct tt_uuid *uuid); > uint32_t > mp_sizeof_uuid(); > +uint32_t > +mp_sizeof_datetime(const struct t_datetime_tz *date); > +char * > +mp_encode_datetime(char *data, const struct t_datetime_tz *date); > float > mp_decode_float(const char **data); > double > @@ -144,6 +148,11 @@ local function encode_uuid(buf, uuid) > builtin.mp_encode_uuid(p, uuid) > end > > +local function encode_datetime(buf, date) > + local p = buf:alloc(builtin.mp_sizeof_datetime(date)) > + builtin.mp_encode_datetime(p, date) > +end > + > local function encode_int(buf, num) > if num >= 0 then > if num <= 0x7f then > @@ -322,6 +331,7 @@ on_encode(ffi.typeof('float'), encode_float) > on_encode(ffi.typeof('double'), encode_double) > on_encode(ffi.typeof('decimal_t'), encode_decimal) > on_encode(ffi.typeof('struct tt_uuid'), encode_uuid) > +on_encode(ffi.typeof('struct datetime_t'), encode_datetime) > > -------------------------------------------------------------------------------- > -- Decoder