Skip to content

Commit 5924c18

Browse files
Fix super type modifier handling (#705)
1 parent 02d816b commit 5924c18

File tree

5 files changed

+33
-6
lines changed

5 files changed

+33
-6
lines changed

lib/postgrex/extensions/array.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,13 @@ defmodule Postgrex.Extensions.Array do
3333
data::binary>> = binary
3434

3535
# decode_list/2 defined by TypeModule
36-
type =
36+
sub_type_with_mod =
3737
case type do
3838
{extension, sub_oids, sub_types} -> {extension, sub_oids, sub_types, var!(mod)}
3939
extension -> {extension, var!(mod)}
4040
end
4141

42-
flat = decode_list(data, type)
42+
flat = decode_list(data, sub_type_with_mod)
4343

4444
unquote(__MODULE__).decode(dims, flat)
4545
end

lib/postgrex/extensions/multirange.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,13 @@ defmodule Postgrex.Extensions.Multirange do
3131
<<_num_ranges::int32(), ranges::binary>> = data
3232

3333
# decode_list/2 defined by TypeModule
34-
type =
34+
sub_type_with_mod =
3535
case type do
3636
{extension, sub_oids, sub_types} -> {extension, sub_oids, sub_types, nil}
3737
extension -> {extension, nil}
3838
end
3939

40-
bound_decoder = &decode_list(&1, type)
40+
bound_decoder = &decode_list(&1, sub_type_with_mod)
4141
unquote(__MODULE__).decode(ranges, bound_decoder, [])
4242
end
4343
end

lib/postgrex/extensions/range.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,13 @@ defmodule Postgrex.Extensions.Range do
3939
<<flags, data::binary>> = binary
4040

4141
# decode_list/2 defined by TypeModule
42-
type =
42+
sub_type_with_mod =
4343
case type do
4444
{extension, sub_oids, sub_types} -> {extension, sub_oids, sub_types, nil}
4545
extension -> {extension, nil}
4646
end
4747

48-
case decode_list(data, type) do
48+
case decode_list(data, sub_type_with_mod) do
4949
[upper, lower] ->
5050
unquote(__MODULE__).decode(flags, [lower, upper])
5151

test/calendar_test.exs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,12 @@ defmodule CalendarTest do
2727
test "decode time with precision", context do
2828
assert [[~T[00:00:00.000]]] = query("SELECT time(3) '00:00:00'", [])
2929
assert [[[~T[00:00:00.000]]]] = query("SELECT ARRAY[time(3) '00:00:00']", [])
30+
31+
assert [[[[~T[00:00:00.000], ~T[00:00:00.000]], [~T[01:00:00.000], ~T[01:00:00.000]]]]] =
32+
query(
33+
"SELECT ARRAY[ARRAY[time(3) '00:00:00', time(3) '00:00:00'], ARRAY[time(3) '01:00:00', time(3) '01:00:00']]",
34+
[]
35+
)
3036
end
3137

3238
test "decode timetz", context do

test/query_test.exs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -531,6 +531,27 @@ defmodule QueryTest do
531531
}
532532
]
533533
] = query("SELECT '[2014-1-1,2014-12-31)'::tsrange", [])
534+
535+
assert [
536+
[
537+
[
538+
%Postgrex.Range{
539+
lower: ~N[2014-01-01 00:00:00.000000],
540+
upper: ~N[2014-12-31 00:00:00.000000],
541+
lower_inclusive: true,
542+
upper_inclusive: false
543+
},
544+
%Postgrex.Range{
545+
lower: ~N[2014-01-01 00:00:00.000000],
546+
upper: ~N[2014-12-31 00:00:00.000000],
547+
lower_inclusive: true,
548+
upper_inclusive: false
549+
}
550+
]
551+
]
552+
]
553+
554+
query("SELECT ARRAY['[2014-1-1,2014-12-31)'::tsrange, '[2014-1-1,2014-12-31)'::tsrange]", [])
534555
end
535556

536557
@tag min_pg_version: "14.0"

0 commit comments

Comments
 (0)