diff --git a/kparse.c b/kparse.c index ae104cd..201aeec 100644 --- a/kparse.c +++ b/kparse.c @@ -5,9 +5,6 @@ #include "kparse.h" #include -#define K_EPOCH_OFFSET 946684800000000000.0 -#define NANOS_PER_SECOND 1000000000.0 - SV* sv_from_k(K k) { SV* result; if (k->t < 0) { @@ -305,7 +302,7 @@ SV* timestamp_from_k(K k) { return newSVpvn("-inf", 4); } - return newSVnv( (k->j + K_EPOCH_OFFSET) / NANOS_PER_SECOND); + return newSViv(k->j); } SV* long_from_k(K k) { @@ -441,8 +438,6 @@ SV* int_vector_from_k(K k) { } SV* long_vector_from_k(K k) { - char buffer[33]; - AV *av = newAV(); int i = 0; @@ -462,8 +457,7 @@ SV* long_vector_from_k(K k) { continue; } - snprintf(buffer, 33, "%Ld", kJ(k)[i]); - av_push(av, newSVpv(buffer, 0) ); + av_push(av, newSViv(kJ(k)[i]) ); } return (SV*)av; @@ -489,7 +483,7 @@ SV* timestamp_vector_from_k(K k) { continue; } - av_push(av, newSVnv( (kJ(k)[i] + K_EPOCH_OFFSET) / NANOS_PER_SECOND)); + av_push(av, newSViv(kJ(k)[i]) ); } return (SV*)av; diff --git a/t/k.t b/t/k.t index cc20fca..eb78848 100644 --- a/t/k.t +++ b/t/k.t @@ -15,8 +15,8 @@ test_qserver { is_deeply $k->cmd(q/"abc"/), [qw/a b c/], 'make char vector'; is $k->cmd(q/2012.03.24D12:13:14.15161728/), - '1332591194.15162', - 'timestamp'; + 385906394151617280, + 'timestamp'; }; END { done_testing; } diff --git a/t/raw.t b/t/raw.t index f2ac4e8..b8c5e60 100644 --- a/t/raw.t +++ b/t/raw.t @@ -52,17 +52,17 @@ sub scalar_tests { is k($handle, '`float$13.7'), 13.7, 'parse float'; is k($handle, '`foo'), 'foo', 'parse symbol'; - is k($handle, '2012.03.24D23:25:13.123456789'), - '1332631513.12346', 'parse timestamp'; + is k($handle, '2012.03.24D23:25:13.12345678912345'), + 385946713123456789, 'parse timestamp'; is k($handle, '385946713123000000j'), - '385946713123000000', 'parse long'; + 385946713123000000, 'parse long'; is k($handle, '`month$3'), 3, 'parse month'; is k($handle, '2012.03.24'), 4466, 'parse date'; is k($handle, '17D12:13:14.000001234'), - '1512794000001234', 'parse timespan'; + 1512794000001234, 'parse timespan'; is k($handle, '`minute$4'), 4, 'parse minute'; is k($handle, '`second$5'), 5, 'parse second'; @@ -182,7 +182,7 @@ sub vector_tests { is_deeply k($handle, 'enlist 2012.03.24D23:25:13.123456789'), - [ qw(1332631513.12346)], + [ 385946713123456789 ], 'parse timestamp vector'; }