Tarantool development patches archive
 help / color / mirror / Atom feed
From: Safin Timur via Tarantool-patches <tarantool-patches@dev.tarantool.org>
To: Serge Petrenko <sergepetrenko@tarantool.org>
Cc: tarantool-patches@dev.tarantool.org, v.shpilevoy@tarantool.org
Subject: Re: [Tarantool-patches] [PATCH v5 3/8] lua, datetime: display datetime
Date: Wed, 18 Aug 2021 02:32:57 +0300	[thread overview]
Message-ID: <471b3f4b-f7d4-af25-24fa-7a64bb8b635d@tarantool.org> (raw)
In-Reply-To: <d6090e7a-f3bc-da67-2a72-c0afa79f2f01@tarantool.org>

My responses below, thanks...

On 17.08.2021 15:15, Serge Petrenko wrote:
> 
> 
> 16.08.2021 02:59, Timur Safin via Tarantool-patches пишет:
>> * introduced output routine for converting datetime
>>    to their default output format.
>>
>> * use this routine for tostring() in datetime.lua
>>
>> Part of #5941
>> ---
>>   extra/exports                  |   1 +
>>   src/lib/core/datetime.c        |  71 ++++++++++++++++++
>>   src/lib/core/datetime.h        |   9 +++
>>   src/lua/datetime.lua           |  35 +++++++++
>>   test/app-tap/datetime.test.lua | 131 ++++++++++++++++++---------------
>>   test/unit/CMakeLists.txt       |   2 +-
>>   test/unit/datetime.c           |  61 +++++++++++----
>>   7 files changed, 236 insertions(+), 74 deletions(-)
>>
>> diff --git a/extra/exports b/extra/exports
>> index 80eb92abd..2437e175c 100644
>> --- a/extra/exports
>> +++ b/extra/exports
>> @@ -152,6 +152,7 @@ datetime_asctime
>>   datetime_ctime
>>   datetime_now
>>   datetime_strftime
>> +datetime_to_string
>>   decimal_unpack
>>   decimal_from_string
>>   decimal_unpack
>> diff --git a/src/lib/core/datetime.c b/src/lib/core/datetime.c
>> index c48295a6f..c24a0df82 100644
>> --- a/src/lib/core/datetime.c
>> +++ b/src/lib/core/datetime.c
>> @@ -29,6 +29,8 @@
>>    * SUCH DAMAGE.
>>    */
>> +#include <assert.h>
>> +#include <limits.h>
>>   #include <string.h>
>>   #include <time.h>
>> @@ -94,3 +96,72 @@ datetime_strftime(const struct datetime *date, 
>> const char *fmt, char *buf,
>>       struct tm *p_tm = datetime_to_tm(date);
>>       return strftime(buf, len, fmt, p_tm);
>>   }
>> +
>> +#define SECS_EPOCH_1970_OFFSET ((int64_t)DT_EPOCH_1970_OFFSET * 
>> SECS_PER_DAY)
>> +
>> +/* NB! buf may be NULL, and we should handle it gracefully, returning
>> + * calculated length of output string
>> + */
>> +int
>> +datetime_to_string(const struct datetime *date, char *buf, uint32_t len)
>> +{
>> +#define ADVANCE(sz)        \
>> +    if (buf != NULL) {     \
>> +        buf += sz;     \
>> +        len -= sz;     \
>> +    }            \
>> +    ret += sz;
>> +
>> +    int offset = date->offset;
>> +    /* for negative offsets around Epoch date we could get
>> +     * negative secs value, which should be attributed to
>> +     * 1969-12-31, not 1970-01-01, thus we first shift
>> +     * epoch to Rata Die then divide by seconds per day,
>> +     * not in reverse
>> +     */
>> +    int64_t secs = (int64_t)date->secs + offset * 60 + 
>> SECS_EPOCH_1970_OFFSET;
>> +    assert((secs / SECS_PER_DAY) <= INT_MAX);
>> +    dt_t dt = dt_from_rdn(secs / SECS_PER_DAY);
>> +
>> +    int year, month, day, sec, ns, sign;
>> +    dt_to_ymd(dt, &year, &month, &day);
>> +
>> +    int hour = (secs / 3600) % 24,
>> +        minute = (secs / 60) % 60;
>> +    sec = secs % 60;
>> +    ns = date->nsec;
>> +
>> +    int ret = 0;
>> +    uint32_t sz = snprintf(buf, len, "%04d-%02d-%02dT%02d:%02d",
>> +                   year, month, day, hour, minute);
>> +    ADVANCE(sz);
> 
> 
> Please, replace snprintf + ADVANCE() with SNPRINT macro
> from src/trivia/util.h
> 
> It does exactly what you need.

OMG! What a coincidence! Thanks!

Updated accordingly...
-----------------------------------------
diff --git a/src/lib/core/datetime.c b/src/lib/core/datetime.c
index c05197efd..bdaaff555 100644
--- a/src/lib/core/datetime.c
+++ b/src/lib/core/datetime.c
@@ -78,15 +78,8 @@ datetime_strftime(const struct datetime *date, const 
char *fmt, char *buf,
   * calculated length of output string
   */
  int
-datetime_to_string(const struct datetime *date, char *buf, uint32_t len)
+datetime_to_string(const struct datetime *date, char *buf, int len)
  {
-#define ADVANCE(sz)            \
-       if (buf != NULL) {      \
-               buf += sz;      \
-               len -= sz;      \
-       }                       \
-       ret += sz;
-
         int offset = date->offset;
         /* for negative offsets around Epoch date we could get
          * negative secs value, which should be attributed to
@@ -106,26 +99,24 @@ datetime_to_string(const struct datetime *date, 
char *buf, uint32_t len)
         sec = secs % 60;
         ns = date->nsec;

-       int ret = 0;
-       uint32_t sz = snprintf(buf, len, "%04d-%02d-%02dT%02d:%02d",
-                              year, month, day, hour, minute);
-       ADVANCE(sz);
+       int sz = 0;
+       SNPRINT(sz, snprintf, buf, len, "%04d-%02d-%02dT%02d:%02d",
+               year, month, day, hour, minute);
         if (sec || ns) {
-               sz = snprintf(buf, len, ":%02d", sec);
-               ADVANCE(sz);
+               SNPRINT(sz, snprintf, buf, len, ":%02d", sec);
                 if (ns) {
                         if ((ns % 1000000) == 0)
-                               sz = snprintf(buf, len, ".%03d", ns / 
1000000);
+                               SNPRINT(sz, snprintf, buf, len, ".%03d",
+                                       ns / 1000000);
                         else if ((ns % 1000) == 0)
-                               sz = snprintf(buf, len, ".%06d", ns / 1000);
+                               SNPRINT(sz, snprintf, buf, len, ".%06d",
+                                       ns / 1000);
                         else
-                               sz = snprintf(buf, len, ".%09d", ns);
-                       ADVANCE(sz);
+                               SNPRINT(sz, snprintf, buf, len, ".%09d", 
ns);
                 }
         }
         if (offset == 0) {
-               sz = snprintf(buf, len, "Z");
-               ADVANCE(sz);
+               SNPRINT(sz, snprintf, buf, len, "Z");
         }
         else {
                 if (offset < 0)
@@ -133,10 +124,9 @@ datetime_to_string(const struct datetime *date, 
char *buf, uint32_t len)
                 else
                         sign = '+';

-               sz = snprintf(buf, len, "%c%02d:%02d", sign, offset / 
60, offset % 60);
-               ADVANCE(sz);
+               SNPRINT(sz, snprintf, buf, len, "%c%02d:%02d", sign,
+                       offset / 60, offset % 60);
         }
-       return ret;
+       return sz;
  }
-#undef ADVANCE

diff --git a/src/lib/core/datetime.h b/src/lib/core/datetime.h
index 3c7a7d99d..688ab59ec 100644
--- a/src/lib/core/datetime.h
+++ b/src/lib/core/datetime.h
@@ -62,7 +62,7 @@ struct datetime_interval {
   * @param len size ofoutput buffer
   */
  int
-datetime_to_string(const struct datetime *date, char *buf, uint32_t len);
+datetime_to_string(const struct datetime *date, char *buf, int len);

  /**
   * Convert datetime to string using default asctime format
diff --git a/src/lua/datetime.lua b/src/lua/datetime.lua
index 4d946f194..96ecd1fee 100644
--- a/src/lua/datetime.lua
+++ b/src/lua/datetime.lua
@@ -31,7 +31,7 @@ ffi.cdef [[

      // datetime.c
      int
-    datetime_to_string(const struct datetime * date, char *buf, 
uint32_t len);
+    datetime_to_string(const struct datetime * date, char *buf, int len);

      char *
      datetime_asctime(const struct datetime *date, char *buf);
-----------------------------------------

> 
> 
>> +    if (sec || ns) {
>> +        sz = snprintf(buf, len, ":%02d", sec);
>> +        ADVANCE(sz);
>> +        if (ns) {
>> +            if ((ns % 1000000) == 0)
>> +                sz = snprintf(buf, len, ".%03d", ns / 1000000);
>> +            else if ((ns % 1000) == 0)
>> +                sz = snprintf(buf, len, ".%06d", ns / 1000);
>> +            else
>> +                sz = snprintf(buf, len, ".%09d", ns);
>> +            ADVANCE(sz);
>> +        }
>> +    }
>> +    if (offset == 0) {
>> +        sz = snprintf(buf, len, "Z");
>> +        ADVANCE(sz);
>> +    }
>> +    else {
>> +        if (offset < 0)
>> +            sign = '-', offset = -offset;
>> +        else
>> +            sign = '+';
>> +
>> +        sz = snprintf(buf, len, "%c%02d:%02d", sign, offset / 60, 
>> offset % 60);
>> +        ADVANCE(sz);
>> +    }
>> +    return ret;
>> +}
>> +#undef ADVANCE
>> +
> 
> 
> <stripped>
> 
> 
>> diff --git a/test/app-tap/datetime.test.lua 
>> b/test/app-tap/datetime.test.lua
>> index 464d4bd49..244ec2575 100755
>> --- a/test/app-tap/datetime.test.lua
>> +++ b/test/app-tap/datetime.test.lua
>> @@ -6,7 +6,7 @@ local date = require('datetime')
>>   local ffi = require('ffi')
>> -test:plan(6)
>> +test:plan(7)
>>   test:test("Simple tests for parser", function(test)
>>       test:plan(2)
>> @@ -17,74 +17,78 @@ test:test("Simple tests for parser", function(test)
>>   end)
>>   test:test("Multiple tests for parser (with nanoseconds)", 
>> function(test)
>> -    test:plan(168)
>> +    test:plan(193)
>>       -- borrowed from p5-time-moments/t/180_from_string.t
>>       local tests =
>>       {
>> -        { '1970-01-01T00:00:00Z',                       0,           
>> 0,    0 },
>> -        { '1970-01-01T02:00:00+02:00',                  0,           
>> 0,  120 },
>> -        { '1970-01-01T01:30:00+01:30',                  0,           
>> 0,   90 },
>> -        { '1970-01-01T01:00:00+01:00',                  0,           
>> 0,   60 },
>> -        { '1970-01-01T00:01:00+00:01',                  0,           
>> 0,    1 },
>> -        { '1970-01-01T00:00:00+00:00',                  0,           
>> 0,    0 },
>> -        { '1969-12-31T23:59:00-00:01',                  0,           
>> 0,   -1 },
>> -        { '1969-12-31T23:00:00-01:00',                  0,           
>> 0,  -60 },
>> -        { '1969-12-31T22:30:00-01:30',                  0,           
>> 0,  -90 },
>> -        { '1969-12-31T22:00:00-02:00',                  0,           
>> 0, -120 },
>> -        { '1970-01-01T00:00:00.123456789Z',             0,   
>> 123456789,    0 },
>> -        { '1970-01-01T00:00:00.12345678Z',              0,   
>> 123456780,    0 },
>> -        { '1970-01-01T00:00:00.1234567Z',               0,   
>> 123456700,    0 },
>> -        { '1970-01-01T00:00:00.123456Z',                0,   
>> 123456000,    0 },
>> -        { '1970-01-01T00:00:00.12345Z',                 0,   
>> 123450000,    0 },
>> -        { '1970-01-01T00:00:00.1234Z',                  0,   
>> 123400000,    0 },
>> -        { '1970-01-01T00:00:00.123Z',                   0,   
>> 123000000,    0 },
>> -        { '1970-01-01T00:00:00.12Z',                    0,   
>> 120000000,    0 },
>> -        { '1970-01-01T00:00:00.1Z',                     0,   
>> 100000000,    0 },
>> -        { '1970-01-01T00:00:00.01Z',                    0,    
>> 10000000,    0 },
>> -        { '1970-01-01T00:00:00.001Z',                   0,     
>> 1000000,    0 },
>> -        { '1970-01-01T00:00:00.0001Z',                  0,      
>> 100000,    0 },
>> -        { '1970-01-01T00:00:00.00001Z',                 0,       
>> 10000,    0 },
>> -        { '1970-01-01T00:00:00.000001Z',                0,        
>> 1000,    0 },
>> -        { '1970-01-01T00:00:00.0000001Z',               0,         
>> 100,    0 },
>> -        { '1970-01-01T00:00:00.00000001Z',              0,          
>> 10,    0 },
>> -        { '1970-01-01T00:00:00.000000001Z',             0,           
>> 1,    0 },
>> -        { '1970-01-01T00:00:00.000000009Z',             0,           
>> 9,    0 },
>> -        { '1970-01-01T00:00:00.00000009Z',              0,          
>> 90,    0 },
>> -        { '1970-01-01T00:00:00.0000009Z',               0,         
>> 900,    0 },
>> -        { '1970-01-01T00:00:00.000009Z',                0,        
>> 9000,    0 },
>> -        { '1970-01-01T00:00:00.00009Z',                 0,       
>> 90000,    0 },
>> -        { '1970-01-01T00:00:00.0009Z',                  0,      
>> 900000,    0 },
>> -        { '1970-01-01T00:00:00.009Z',                   0,     
>> 9000000,    0 },
>> -        { '1970-01-01T00:00:00.09Z',                    0,    
>> 90000000,    0 },
>> -        { '1970-01-01T00:00:00.9Z',                     0,   
>> 900000000,    0 },
>> -        { '1970-01-01T00:00:00.99Z',                    0,   
>> 990000000,    0 },
>> -        { '1970-01-01T00:00:00.999Z',                   0,   
>> 999000000,    0 },
>> -        { '1970-01-01T00:00:00.9999Z',                  0,   
>> 999900000,    0 },
>> -        { '1970-01-01T00:00:00.99999Z',                 0,   
>> 999990000,    0 },
>> -        { '1970-01-01T00:00:00.999999Z',                0,   
>> 999999000,    0 },
>> -        { '1970-01-01T00:00:00.9999999Z',               0,   
>> 999999900,    0 },
>> -        { '1970-01-01T00:00:00.99999999Z',              0,   
>> 999999990,    0 },
>> -        { '1970-01-01T00:00:00.999999999Z',             0,   
>> 999999999,    0 },
>> -        { '1970-01-01T00:00:00.0Z',                     0,           
>> 0,    0 },
>> -        { '1970-01-01T00:00:00.00Z',                    0,           
>> 0,    0 },
>> -        { '1970-01-01T00:00:00.000Z',                   0,           
>> 0,    0 },
>> -        { '1970-01-01T00:00:00.0000Z',                  0,           
>> 0,    0 },
>> -        { '1970-01-01T00:00:00.00000Z',                 0,           
>> 0,    0 },
>> -        { '1970-01-01T00:00:00.000000Z',                0,           
>> 0,    0 },
>> -        { '1970-01-01T00:00:00.0000000Z',               0,           
>> 0,    0 },
>> -        { '1970-01-01T00:00:00.00000000Z',              0,           
>> 0,    0 },
>> -        { '1970-01-01T00:00:00.000000000Z',             0,           
>> 0,    0 },
>> -        { '1973-11-29T21:33:09Z',               123456789,           
>> 0,    0 },
>> -        { '2013-10-28T17:51:56Z',              1382982716,           
>> 0,    0 },
>> -        { '9999-12-31T23:59:59Z',            253402300799,           
>> 0,    0 },
>> +        {'1970-01-01T00:00Z',                  0,         0,    0, 1},
>> +        {'1970-01-01T02:00+02:00',             0,         0,  120, 1},
>> +        {'1970-01-01T01:30+01:30',             0,         0,   90, 1},
>> +        {'1970-01-01T01:00+01:00',             0,         0,   60, 1},
>> +        {'1970-01-01T00:01+00:01',             0,         0,    1, 1},
>> +        {'1970-01-01T00:00Z',                  0,         0,    0, 1},
>> +        {'1969-12-31T23:59-00:01',             0,         0,   -1, 1},
>> +        {'1969-12-31T23:00-01:00',             0,         0,  -60, 1},
>> +        {'1969-12-31T22:30-01:30',             0,         0,  -90, 1},
>> +        {'1969-12-31T22:00-02:00',             0,         0, -120, 1},
>> +        {'1970-01-01T00:00:00.123456789Z',     0, 123456789,    0, 1},
>> +        {'1970-01-01T00:00:00.12345678Z',      0, 123456780,    0, 0},
>> +        {'1970-01-01T00:00:00.1234567Z',       0, 123456700,    0, 0},
>> +        {'1970-01-01T00:00:00.123456Z',        0, 123456000,    0, 1},
>> +        {'1970-01-01T00:00:00.12345Z',         0, 123450000,    0, 0},
>> +        {'1970-01-01T00:00:00.1234Z',          0, 123400000,    0, 0},
>> +        {'1970-01-01T00:00:00.123Z',           0, 123000000,    0, 1},
>> +        {'1970-01-01T00:00:00.12Z',            0, 120000000,    0, 0},
>> +        {'1970-01-01T00:00:00.1Z',             0, 100000000,    0, 0},
>> +        {'1970-01-01T00:00:00.01Z',            0,  10000000,    0, 0},
>> +        {'1970-01-01T00:00:00.001Z',           0,   1000000,    0, 1},
>> +        {'1970-01-01T00:00:00.0001Z',          0,    100000,    0, 0},
>> +        {'1970-01-01T00:00:00.00001Z',         0,     10000,    0, 0},
>> +        {'1970-01-01T00:00:00.000001Z',        0,      1000,    0, 1},
>> +        {'1970-01-01T00:00:00.0000001Z',       0,       100,    0, 0},
>> +        {'1970-01-01T00:00:00.00000001Z',      0,        10,    0, 0},
>> +        {'1970-01-01T00:00:00.000000001Z',     0,         1,    0, 1},
>> +        {'1970-01-01T00:00:00.000000009Z',     0,         9,    0, 1},
>> +        {'1970-01-01T00:00:00.00000009Z',      0,        90,    0, 0},
>> +        {'1970-01-01T00:00:00.0000009Z',       0,       900,    0, 0},
>> +        {'1970-01-01T00:00:00.000009Z',        0,      9000,    0, 1},
>> +        {'1970-01-01T00:00:00.00009Z',         0,     90000,    0, 0},
>> +        {'1970-01-01T00:00:00.0009Z',          0,    900000,    0, 0},
>> +        {'1970-01-01T00:00:00.009Z',           0,   9000000,    0, 1},
>> +        {'1970-01-01T00:00:00.09Z',            0,  90000000,    0, 0},
>> +        {'1970-01-01T00:00:00.9Z',             0, 900000000,    0, 0},
>> +        {'1970-01-01T00:00:00.99Z',            0, 990000000,    0, 0},
>> +        {'1970-01-01T00:00:00.999Z',           0, 999000000,    0, 1},
>> +        {'1970-01-01T00:00:00.9999Z',          0, 999900000,    0, 0},
>> +        {'1970-01-01T00:00:00.99999Z',         0, 999990000,    0, 0},
>> +        {'1970-01-01T00:00:00.999999Z',        0, 999999000,    0, 1},
>> +        {'1970-01-01T00:00:00.9999999Z',       0, 999999900,    0, 0},
>> +        {'1970-01-01T00:00:00.99999999Z',      0, 999999990,    0, 0},
>> +        {'1970-01-01T00:00:00.999999999Z',     0, 999999999,    0, 1},
>> +        {'1970-01-01T00:00:00.0Z',             0,         0,    0, 0},
>> +        {'1970-01-01T00:00:00.00Z',            0,         0,    0, 0},
>> +        {'1970-01-01T00:00:00.000Z',           0,         0,    0, 0},
>> +        {'1970-01-01T00:00:00.0000Z',          0,         0,    0, 0},
>> +        {'1970-01-01T00:00:00.00000Z',         0,         0,    0, 0},
>> +        {'1970-01-01T00:00:00.000000Z',        0,         0,    0, 0},
>> +        {'1970-01-01T00:00:00.0000000Z',       0,         0,    0, 0},
>> +        {'1970-01-01T00:00:00.00000000Z',      0,         0,    0, 0},
>> +        {'1970-01-01T00:00:00.000000000Z',     0,         0,    0, 0},
>> +        {'1973-11-29T21:33:09Z',       123456789,         0,    0, 1},
>> +        {'2013-10-28T17:51:56Z',      1382982716,         0,    0, 1},
>> +        {'9999-12-31T23:59:59Z',    253402300799,         0,    0, 1},
> 
> 
> Please, squash this change into the previous commit.

Surprisingly, that was original configuration of patches, then I've 
split it to smaller chunks.

But yes, this test dependency shows that code should be in a single 
patch. Will do. [Will not push updated branch yet, to accumulate changes 
for Vova feedback]

> 
> 
>>       }
>>       for _, value in ipairs(tests) do
>> -        local str, epoch, nsec, offset
>> -        str, epoch, nsec, offset = unpack(value)
>> +        local str, epoch, nsec, offset, check
>> +        str, epoch, nsec, offset, check = unpack(value)
>>           local dt = date(str)
>>           test:ok(dt.secs == epoch, ('%s: dt.secs == %d'):format(str, 
>> epoch))
>>           test:ok(dt.nsec == nsec, ('%s: dt.nsec == %d'):format(str, 
>> nsec))
>>           test:ok(dt.offset == offset, ('%s: dt.offset == 
>> %d'):format(str, offset))
>> +        if check > 0 then
>> +            test:ok(str == tostring(dt), ('%s == tostring(%s)'):
>> +                    format(str, tostring(dt)))
>> +        end
>>       end
>>   end)
>> @@ -203,4 +207,11 @@ test:test("Parse tiny date into seconds and other 
>> parts", function(test)
>>       test:ok(tiny.hours == 0.00848, "hours")
>>   end)
>>
>>
> 
> 
> <stripped>
> 

Thanks,
Timur

  reply	other threads:[~2021-08-17 23:33 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-08-15 23:59 [Tarantool-patches] [PATCH v5 0/8] Initial datetime implementation Timur Safin via Tarantool-patches
2021-08-15 23:59 ` [Tarantool-patches] [PATCH v5 1/8] build: add Christian Hansen c-dt to the build Timur Safin via Tarantool-patches
2021-08-17 12:15   ` Serge Petrenko via Tarantool-patches
2021-08-17 23:24     ` Safin Timur via Tarantool-patches
2021-08-18  8:56       ` Serge Petrenko via Tarantool-patches
2021-08-17 15:50   ` Vladimir Davydov via Tarantool-patches
2021-08-18 10:04     ` Safin Timur via Tarantool-patches
2021-08-15 23:59 ` [Tarantool-patches] [PATCH v5 2/8] lua: built-in module datetime Timur Safin via Tarantool-patches
2021-08-17 12:15   ` Serge Petrenko via Tarantool-patches
2021-08-17 23:30     ` Safin Timur via Tarantool-patches
2021-08-18  8:56       ` Serge Petrenko via Tarantool-patches
2021-08-17 16:52   ` Vladimir Davydov via Tarantool-patches
2021-08-17 19:16     ` Vladimir Davydov via Tarantool-patches
2021-08-18 13:38       ` Safin Timur via Tarantool-patches
2021-08-18 10:03     ` Safin Timur via Tarantool-patches
2021-08-18 10:06       ` Safin Timur via Tarantool-patches
2021-08-18 11:45       ` Vladimir Davydov via Tarantool-patches
2021-08-15 23:59 ` [Tarantool-patches] [PATCH v5 3/8] lua, datetime: display datetime Timur Safin via Tarantool-patches
2021-08-17 12:15   ` Serge Petrenko via Tarantool-patches
2021-08-17 23:32     ` Safin Timur via Tarantool-patches [this message]
2021-08-17 17:06   ` Vladimir Davydov via Tarantool-patches
2021-08-18 14:10     ` Safin Timur via Tarantool-patches
2021-08-15 23:59 ` [Tarantool-patches] [PATCH v5 4/8] box, datetime: messagepack support for datetime Timur Safin via Tarantool-patches
2021-08-16  0:20   ` Safin Timur via Tarantool-patches
2021-08-17 12:15     ` Serge Petrenko via Tarantool-patches
2021-08-17 12:16   ` Serge Petrenko via Tarantool-patches
2021-08-17 23:42     ` Safin Timur via Tarantool-patches
2021-08-18  9:01       ` Serge Petrenko via Tarantool-patches
2021-08-17 18:36   ` Vladimir Davydov via Tarantool-patches
2021-08-18 14:27     ` Safin Timur via Tarantool-patches
2021-08-15 23:59 ` [Tarantool-patches] [PATCH v5 5/8] box, datetime: datetime comparison for indices Timur Safin via Tarantool-patches
2021-08-17 12:16   ` Serge Petrenko via Tarantool-patches
2021-08-17 23:43     ` Safin Timur via Tarantool-patches
2021-08-18  9:03       ` Serge Petrenko via Tarantool-patches
2021-08-17 19:05   ` Vladimir Davydov via Tarantool-patches
2021-08-18 17:18     ` Safin Timur via Tarantool-patches
2021-08-15 23:59 ` [Tarantool-patches] [PATCH v5 6/8] lua, datetime: time intervals support Timur Safin via Tarantool-patches
2021-08-17 12:16   ` Serge Petrenko via Tarantool-patches
2021-08-17 23:44     ` Safin Timur via Tarantool-patches
2021-08-17 18:52   ` Vladimir Davydov via Tarantool-patches
2021-08-15 23:59 ` [Tarantool-patches] [PATCH v5 7/8] datetime: perf test for datetime parser Timur Safin via Tarantool-patches
2021-08-17 19:13   ` Vladimir Davydov via Tarantool-patches
2021-08-15 23:59 ` [Tarantool-patches] [PATCH v5 8/8] datetime: changelog for datetime module Timur Safin via Tarantool-patches
2021-08-17 12:16   ` Serge Petrenko via Tarantool-patches
2021-08-17 23:44     ` Safin Timur via Tarantool-patches
2021-08-18  9:04       ` Serge Petrenko via Tarantool-patches
2021-08-17 12:15 ` [Tarantool-patches] [PATCH v5 0/8] Initial datetime implementation Serge Petrenko via Tarantool-patches
     [not found] ` <20210818082222.mofgheciutpipelz@esperanza>
2021-08-18  8:25   ` Vladimir Davydov via Tarantool-patches
2021-08-18 13:24     ` Safin Timur via Tarantool-patches
2021-08-18 14:22       ` Vladimir Davydov via Tarantool-patches

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=471b3f4b-f7d4-af25-24fa-7a64bb8b635d@tarantool.org \
    --to=tarantool-patches@dev.tarantool.org \
    --cc=sergepetrenko@tarantool.org \
    --cc=tsafin@tarantool.org \
    --cc=v.shpilevoy@tarantool.org \
    --subject='Re: [Tarantool-patches] [PATCH v5 3/8] lua, datetime: display datetime' \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox