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 891D46EC58; Wed, 4 Aug 2021 00:26:31 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 891D46EC58 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tarantool.org; s=dev; t=1628025991; bh=Iy1+CUnvvhfFnz+wxudqcDfHDy/CXBlyyFXblCIiB5I=; h=To:References:In-Reply-To:Date:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=MvGY0Aq6a4e67vxRJt07tQ75QZ7EtMy22kbXFqvvnmYdLzOsBkANNu0asEM1ldH48 IAjUGom98tpCwzh7uFNMk/UNfAuRDCLyM7uHHeOjifB0uaLwf1A6r7xL4OqYNMiSkM fhAXt9Nvdy28ct2AIY4VsgLGyZeje0FWXcCwfhfc= Received: from smtp51.i.mail.ru (smtp51.i.mail.ru [94.100.177.111]) (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 236E26EC58 for ; Wed, 4 Aug 2021 00:26:30 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 236E26EC58 Received: by smtp51.i.mail.ru with esmtpa (envelope-from ) id 1mB1vg-0000Xs-QF; Wed, 04 Aug 2021 00:26:29 +0300 To: , References: In-Reply-To: Date: Wed, 4 Aug 2021 00:26:24 +0300 Message-ID: <102401d788ae$367f04e0$a37d0ea0$@tarantool.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Mailer: Microsoft Outlook 16.0 Thread-Index: AQKU0cwvkTasfMq0ugtyZVj5je82UKnnuFBA Content-Language: ru X-4EC0790: 10 X-7564579A: 646B95376F6C166E X-77F55803: 4F1203BC0FB41BD941C43E597735A9C351B198F4576AC7B20CA14D9DFB46B94A182A05F5380850409EF11493664D0344DCAB21659D62276DA02212C20786D650D06FC03F386C8ADD X-7FA49CB5: FF5795518A3D127A4AD6D5ED66289B5278DA827A17800CE7DECE8D0A5E25C0FCEA1F7E6F0F101C67BD4B6F7A4D31EC0BCC500DACC3FED6E28638F802B75D45FF8AA50765F790063707C4856229E8E7E48638F802B75D45FF36EB9D2243A4F8B5A6FCA7DBDB1FC311F39EFFDF887939037866D6147AF826D8A2503234C1C9B37CA422A1E39048C587117882F4460429724CE54428C33FAD305F5C1EE8F4F765FC8C7ADC89C2F0B2A5A471835C12D1D9774AD6D5ED66289B52BA9C0B312567BB23117882F446042972877693876707352033AC447995A7AD18CB629EEF1311BF91D2E47CDBA5A96583BA9C0B312567BB2376E601842F6C81A19E625A9149C048EEC8105B04EFE076280CB8D3112395442FD8FC6C240DEA7642DBF02ECDB25306B2B78CF848AE20165D0A6AB1C7CE11FEE3632EDEA9CD5989A3C0837EA9F3D19764C4224003CC836476EA7A3FFF5B025636E2021AF6380DFAD1A18204E546F3947CB11811A4A51E3B096D1867E19FE1407959CC434672EE6371089D37D7C0E48F6C8AA50765F79006371F24DFF1B2961425731C566533BA786AA5CC5B56E945C8DA X-B7AD71C0: AC4F5C86D027EB782CDD5689AFBDA7A213B5FB47DCBC3458F0AFF96BAACF4158235E5A14AD4A4A4625E192CAD1D9E79D94463893BF8742D0E3ACAF5F7E50EB38 X-C1DE0DAB: 0D63561A33F958A5D236EFF89728551A69864B74433EB6A04DF73359312F8B12D59269BC5F550898D99A6476B3ADF6B47008B74DF8BB9EF7333BD3B22AA88B938A852937E12ACA751B940EDA0DFB0535410CA545F18667F91A7EA1CDA0B5A7A0 X-C8649E89: 4E36BF7865823D7055A7F0CF078B5EC49A30900B95165D34060C3C6DE316ECE4460C26A2616A8FA1B295004FDC0C08265676A03573F8DC007C3CCA01D40528D61D7E09C32AA3244C179A5B7A29677B697DED3CF2C58B984C35DA7DC5AF9B58C083B48618A63566E0 X-D57D3AED: 3ZO7eAau8CL7WIMRKs4sN3D3tLDjz0dLbV79QFUyzQ2Ujvy7cMT6pYYqY16iZVKkSc3dCLJ7zSJH7+u4VD18S7Vl4ZUrpaVfd2+vE6kuoey4m4VkSEu530nj6fImhcD4MUrOEAnl0W826KZ9Q+tr5ycPtXkTV4k65bRjmOUUP8cvGozZ33TWg5HZplvhhXbhDGzqmQDTd6OAevLeAnq3Ra9uf7zvY2zzsIhlcp/Y7m53TZgf2aB4JOg4gkr2biojeDyvyeZJDJEN2M8wzjZanw== X-Mailru-Sender: B5B6A6EBBD94DAD8516C636B482E0CE48057E44BBE8AA4EA6CF8FC342AF14D24BE4EE8AA3A2260841EC9E4A2C82A33BC8C24925A86E657CE0C70AEE3C9A96FBAB3D7EE8ED63280BE112434F685709FCF0DA7A0AF5A3A8387 X-Mras: Ok Subject: Re: [Tarantool-patches] [PATCH v3 0/9] Initial datetime support 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: Timur Safin via Tarantool-patches Reply-To: Timur Safin Cc: tarantool-patches@dev.tarantool.org Errors-To: tarantool-patches-bounces@dev.tarantool.org Sender: "Tarantool-patches" I've sent a couple of extra patches, which became part of=20 This patch-set: - [PATCH v3 1/2] datetime: update tests for macosx - [PATCH v3 2/2] lua, datetime: introduce ctime, strftime wrappers Those 2 patches fixed CI for FreeBSD and MacOSX. Timur > -----Original Message----- > From: Timur Safin > Sent: Monday, August 2, 2021 3:41 AM > To: v.shpilevoy@tarantool.org; olegrok@tarantool.org > Cc: Timur Safin ; imun@tarantool.org; > imeevma@tarantool.org; tarantool-patches@dev.tarantool.org > Subject: [PATCH v3 0/9] Initial datetime support >=20 > * Version #3 changes: >=20 > - renamed `struct datetime_t` to `struct datetime`, and `struct > datetime_interval_t` to `struct datetime_interval`; > - significantly reworked arguments checks in module api entries; > - fixed datetime comparisons; > - changed hints calculation to take into account fractional part; > - provided more comments here and there; >=20 > NB! There are MacOSX problems due to GLIBC specific code used (as Vlad > has already pointed out) - so additional patch, making it more > cross-compatible coming here soon... >=20 > * Version #2 changes: >=20 > - fixed problem with overloaded '-' and '+' operations for datetime > arguments; > - fixed messagepack serialization problems; > - heavily documented MessagePack serialization schema in the code; > - introduced working implementation of datetime hints for storage = engines; > - made interval related names be more consistent, renamed durations = and > period > to intervals, i.e. t_datetime_duration to datetime_interval_t, > duration_* to interval_*, period to interval; > - properly implemented all reasonable cases of datetime+interval > arithmetic; > - moved all initialization code to utils.c; > - renamed core/mp_datetime.c to core/datetime.c because it makes = more > sense now; >=20 > * Version #1 - initial RFC series >=20 > In brief > -------- > This patchset implements datetime lua support in box, with = serialization > to messagepack, yaml, json and lua mode. Also it contains storage > engines' indices implementation for datetime type introduced. >=20 > * Current implementation is heavily influenced by Sci-Lua lua-time = module > https://github.com/stepelu/lua-time > e.g. you could find very similar approach for handling of operations > with year or month long intervals (which should be handled = differently > than > usual intervals of seconds, or days). >=20 > * But internally we actually use Christian Hanson' c-dt module > https://github.com/chansen/c-dt > (though it has been modified slightly for cleaner integration > into cmake build process) >=20 >=20 > Datetime Module API > ------------------- >=20 > We used to have here draft documentation of datetime module api, but > for a convenience it has been extracted to the discussion topic there = - > = https://github.com/tarantool/tarantool/discussions/6244#discussioncomment= - > 1043988 >=20 > Messagepack serialization schema > -------------------------------- >=20 > In short it looks like: > - now we introduce new MP_EXT extension type #4; > - we may save 1 required and 2 optional fields for datetime field; >=20 > In all gory details it's explained in MessagePack serialization schema > depicted here: > = https://github.com/tarantool/tarantool/discussions/6244#discussioncomment= - > 1043990 >=20 >=20 > https://github.com/tarantool/tarantool/issues/5941 > https://github.com/tarantool/tarantool/issues/5946 >=20 > https://github.com/tarantool/tarantool/tree/tsafin/gh-5941-datetime-v3 >=20 > Timur Safin (9): > build: add Christian Hansen c-dt to the build > lua: built-in module datetime > lua, datetime: datetime tests > lua, datetime: display datetime > box, datetime: messagepack support for datetime > box, datetime: datetime comparison for indices > lua, datetime: time intervals support > datetime: changelog for datetime module > lua, box, datetime: rename struct datetime_t >=20 > .gitmodules | 3 + > CMakeLists.txt | 8 + > .../gh-5941-datetime-type-support.md | 4 + > cmake/BuildCDT.cmake | 6 + > src/CMakeLists.txt | 3 + > src/box/field_def.c | 52 +- > src/box/field_def.h | 4 + > src/box/lua/serialize_lua.c | 7 +- > src/box/memtx_space.c | 3 +- > src/box/msgpack.c | 7 +- > src/box/tuple_compare.cc | 76 ++ > src/box/vinyl.c | 3 +- > src/exports.h | 29 + > src/lib/core/CMakeLists.txt | 4 +- > src/lib/core/datetime.c | 250 ++++ > src/lib/core/datetime.h | 115 ++ > src/lib/core/mp_extension_types.h | 1 + > src/lib/mpstream/mpstream.c | 10 + > src/lib/mpstream/mpstream.h | 3 + > src/lua/datetime.lua | 1058 = +++++++++++++++++ > src/lua/init.c | 4 +- > src/lua/msgpack.c | 12 + > src/lua/msgpackffi.lua | 18 + > src/lua/serializer.c | 4 + > src/lua/serializer.h | 2 + > src/lua/utils.c | 28 +- > src/lua/utils.h | 12 + > test/app-tap/datetime.test.lua | 367 ++++++ > test/engine/datetime.result | 77 ++ > test/engine/datetime.test.lua | 35 + > test/unit/CMakeLists.txt | 2 + > test/unit/datetime.c | 221 ++++ > test/unit/datetime.result | 358 ++++++ > third_party/c-dt | 1 + > third_party/lua-cjson/lua_cjson.c | 8 + > third_party/lua-yaml/lyaml.cc | 6 +- > 36 files changed, 2776 insertions(+), 25 deletions(-) > create mode 100644 = changelogs/unreleased/gh-5941-datetime-type-support.md > create mode 100644 cmake/BuildCDT.cmake > create mode 100755 src/lib/core/datetime.c > create mode 100644 src/lib/core/datetime.h > create mode 100644 src/lua/datetime.lua > create mode 100755 test/app-tap/datetime.test.lua > create mode 100644 test/engine/datetime.result > create mode 100644 test/engine/datetime.test.lua > create mode 100644 test/unit/datetime.c > create mode 100644 test/unit/datetime.result > create mode 160000 third_party/c-dt >=20 > -- > 2.29.2