|
@@ -29,15 +29,9 @@ names() ->
|
|
|
|
|
|
encode(empty, _T, _CM) ->
|
|
encode(empty, _T, _CM) ->
|
|
<<1>>;
|
|
<<1>>;
|
|
-encode({From, To}, Type, epgsql_idatetime) ->
|
|
|
|
- FromBin = epgsql_idatetime:encode(member_type(Type), From),
|
|
|
|
- ToBin = epgsql_idatetime:encode(member_type(Type), To),
|
|
|
|
- <<2:1/big-signed-unit:8,
|
|
|
|
- (byte_size(FromBin)):?int32, FromBin/binary,
|
|
|
|
- (byte_size(ToBin)):?int32, ToBin/binary>>;
|
|
|
|
-encode({From, To}, Type, epgsql_fdatetime) ->
|
|
|
|
- FromBin = epgsql_fdatetime:encode(member_type(Type), From),
|
|
|
|
- ToBin = epgsql_fdatetime:encode(member_type(Type), To),
|
|
|
|
|
|
+encode({From, To}, Type, EncMod) ->
|
|
|
|
+ FromBin = encode_member(Type, From, EncMod),
|
|
|
|
+ ToBin = encode_member(Type, To, EncMod),
|
|
<<2:1/big-signed-unit:8,
|
|
<<2:1/big-signed-unit:8,
|
|
(byte_size(FromBin)):?int32, FromBin/binary,
|
|
(byte_size(FromBin)):?int32, FromBin/binary,
|
|
(byte_size(ToBin)):?int32, ToBin/binary>>.
|
|
(byte_size(ToBin)):?int32, ToBin/binary>>.
|
|
@@ -47,16 +41,21 @@ decode(<<1>>, _, _) ->
|
|
decode(<<2:1/big-signed-unit:8,
|
|
decode(<<2:1/big-signed-unit:8,
|
|
FromLen:?int32, FromBin:FromLen/binary,
|
|
FromLen:?int32, FromBin:FromLen/binary,
|
|
ToLen:?int32, ToBin:ToLen/binary>>,
|
|
ToLen:?int32, ToBin:ToLen/binary>>,
|
|
- Type, epgsql_idatetime) ->
|
|
|
|
- {epgsql_idatetime:decode(member_type(Type), FromBin), epgsql_idatetime:decode(member_type(Type), ToBin)};
|
|
|
|
-decode(<<2:1/big-signed-unit:8,
|
|
|
|
- FromLen:?int32, FromBin:FromLen/binary,
|
|
|
|
- ToLen:?int32, ToBin:ToLen/binary>>,
|
|
|
|
- Type, epgsql_fdatetime) ->
|
|
|
|
- {epgsql_fdatetime:decode(member_type(Type), FromBin), epgsql_fdatetime:decode(member_type(Type), ToBin)}.
|
|
|
|
|
|
+ Type, EncMod) ->
|
|
|
|
+ {decode_member(Type, FromBin, EncMod), decode_member(Type, ToBin, EncMod)}.
|
|
|
|
|
|
decode_text(V, _, _) -> V.
|
|
decode_text(V, _, _) -> V.
|
|
|
|
|
|
|
|
+encode_member(Type, Val, epgsql_idatetime) ->
|
|
|
|
+ epgsql_idatetime:encode(member_type(Type), Val);
|
|
|
|
+encode_member(Type, Val, epgsql_fdatetime) ->
|
|
|
|
+ epgsql_fdatetime:encode(member_type(Type), Val).
|
|
|
|
+
|
|
|
|
+decode_member(Type, Bin, epgsql_idatetime) ->
|
|
|
|
+ epgsql_idatetime:decode(member_type(Type), Bin);
|
|
|
|
+decode_member(Type, Bin, epgsql_fdatetime) ->
|
|
|
|
+ epgsql_fdatetime:decode(member_type(Type), Bin).
|
|
|
|
+
|
|
member_type(tsrange) -> timestamp;
|
|
member_type(tsrange) -> timestamp;
|
|
member_type(tstzrange) -> timestamptz;
|
|
member_type(tstzrange) -> timestamptz;
|
|
member_type(daterange) -> date.
|
|
member_type(daterange) -> date.
|