|
@@ -31,6 +31,8 @@ encode(boolarray, L) when is_list(L) -> encode_array(bool, L);
|
|
encode(int2array, L) when is_list(L) -> encode_array(int2, L);
|
|
encode(int2array, L) when is_list(L) -> encode_array(int2, L);
|
|
encode(int4array, L) when is_list(L) -> encode_array(int4, L);
|
|
encode(int4array, L) when is_list(L) -> encode_array(int4, L);
|
|
encode(int8array, L) when is_list(L) -> encode_array(int8, L);
|
|
encode(int8array, L) when is_list(L) -> encode_array(int8, L);
|
|
|
|
+encode(float4array, L) when is_list(L) -> encode_array(float4, L);
|
|
|
|
+encode(float8array, L) when is_list(L) -> encode_array(float8, L);
|
|
encode(chararray, L) when is_list(L) -> encode_array(bpchar, L);
|
|
encode(chararray, L) when is_list(L) -> encode_array(bpchar, L);
|
|
encode(textarray, L) when is_list(L) -> encode_array(text, L);
|
|
encode(textarray, L) when is_list(L) -> encode_array(text, L);
|
|
encode(Type, L) when is_list(L) -> encode(Type, list_to_binary(L));
|
|
encode(Type, L) when is_list(L) -> encode(Type, list_to_binary(L));
|
|
@@ -55,6 +57,8 @@ decode(boolarray, B) -> decode_array(B);
|
|
decode(int2array, B) -> decode_array(B);
|
|
decode(int2array, B) -> decode_array(B);
|
|
decode(int4array, B) -> decode_array(B);
|
|
decode(int4array, B) -> decode_array(B);
|
|
decode(int8array, B) -> decode_array(B);
|
|
decode(int8array, B) -> decode_array(B);
|
|
|
|
+decode(float4array, B) -> decode_array(B);
|
|
|
|
+decode(float8array, B) -> decode_array(B);
|
|
decode(chararray, B) -> decode_array(B);
|
|
decode(chararray, B) -> decode_array(B);
|
|
decode(textarray, B) -> decode_array(B);
|
|
decode(textarray, B) -> decode_array(B);
|
|
decode(_Other, Bin) -> Bin.
|
|
decode(_Other, Bin) -> Bin.
|
|
@@ -62,7 +66,7 @@ decode(_Other, Bin) -> Bin.
|
|
encode_array(Type, A) ->
|
|
encode_array(Type, A) ->
|
|
{Data, {NDims, Lengths}} = encode_array(Type, A, 0, []),
|
|
{Data, {NDims, Lengths}} = encode_array(Type, A, 0, []),
|
|
Oid = pgsql_types:type2oid(Type),
|
|
Oid = pgsql_types:type2oid(Type),
|
|
- Lens = [<<N:?int32, 0:?int32>> || N <- lists:reverse(Lengths)],
|
|
|
|
|
|
+ Lens = [<<N:?int32, 1:?int32>> || N <- lists:reverse(Lengths)],
|
|
Hdr = <<NDims:?int32, 0:?int32, Oid:?int32>>,
|
|
Hdr = <<NDims:?int32, 0:?int32, Oid:?int32>>,
|
|
Bin = iolist_to_binary([Hdr, Lens, Data]),
|
|
Bin = iolist_to_binary([Hdr, Lens, Data]),
|
|
<<(byte_size(Bin)):?int32, Bin/binary>>.
|
|
<<(byte_size(Bin)):?int32, Bin/binary>>.
|
|
@@ -131,6 +135,8 @@ supports(boolarray) -> true;
|
|
supports(int2array) -> true;
|
|
supports(int2array) -> true;
|
|
supports(int4array) -> true;
|
|
supports(int4array) -> true;
|
|
supports(int8array) -> true;
|
|
supports(int8array) -> true;
|
|
|
|
+supports(float4array) -> true;
|
|
|
|
+supports(float8array) -> true;
|
|
supports(chararray) -> true;
|
|
supports(chararray) -> true;
|
|
supports(textarray) -> true;
|
|
supports(textarray) -> true;
|
|
supports(_Type) -> false.
|
|
supports(_Type) -> false.
|