@@ -470,25 +470,16 @@ defmodule Postgrex.TypeModule do
470470 end
471471
472472 defp decode_simple ( ) do
473- rest = quote do: rest
474- acc = quote do: acc
475-
476- dispatch = decode_simple_dispatch ( Postgrex.Extensions.Raw , rest , acc )
477-
478473 quote do
479474 @ doc false
480- def decode_simple ( binary ) do
481- decode_simple ( binary , [ ] )
482- end
475+ def decode_simple ( << >> ) ,
476+ do: [ ]
483477
484- defp decode_simple ( << >> , unquote ( acc ) ) , do: Enum . reverse ( acc )
485- defp decode_simple ( << unquote ( rest ) :: binary >> , unquote ( acc ) ) , do: unquote ( dispatch )
486- end
487- end
478+ def decode_simple ( << - 1 :: int32 ( ) , rest :: binary >> ) ,
479+ do: [ @ null | decode_simple ( rest ) ]
488480
489- defp decode_simple_dispatch ( extension , rest , acc ) do
490- quote do
491- unquote ( extension ) ( unquote ( rest ) , nil , unquote ( acc ) , & decode_simple / 2 )
481+ def decode_simple ( << len :: int32 ( ) , value :: binary - size ( len ) , rest :: binary >> ) ,
482+ do: [ :binary . copy ( value ) | decode_simple ( rest ) ]
492483 end
493484 end
494485
@@ -716,17 +707,6 @@ defmodule Postgrex.TypeModule do
716707 unquote ( extension ) ( rest , var! ( mod ) , [ unquote ( body ) | acc ] )
717708 end
718709
719- defp unquote ( extension ) (
720- << unquote ( pattern ) , rest :: binary >> ,
721- var! ( mod ) ,
722- acc ,
723- callback
724- )
725- when unquote ( guard ) do
726- _ = var! ( mod )
727- unquote ( extension ) ( rest , var! ( mod ) , [ unquote ( body ) | acc ] , callback )
728- end
729-
730710 defp unquote ( extension ) (
731711 << unquote ( pattern ) , rest :: binary >> ,
732712 var! ( mod ) ,
@@ -767,17 +747,6 @@ defmodule Postgrex.TypeModule do
767747 unquote ( extension ) ( rest , var! ( mod ) , [ decoded | acc ] )
768748 end
769749
770- defp unquote ( extension ) (
771- << unquote ( pattern ) , rest :: binary >> ,
772- var! ( mod ) ,
773- acc ,
774- callback
775- ) do
776- _ = var! ( mod )
777- decoded = unquote ( body )
778- unquote ( extension ) ( rest , var! ( mod ) , [ decoded | acc ] , callback )
779- end
780-
781750 defp unquote ( extension ) (
782751 << unquote ( pattern ) , rest :: binary >> ,
783752 var! ( mod ) ,
@@ -818,14 +787,6 @@ defmodule Postgrex.TypeModule do
818787 acc
819788 end
820789
821- defp unquote ( extension ) ( << - 1 :: int32 ( ) , rest :: binary >> , var! ( mod ) , acc , callback ) do
822- unquote ( extension ) ( rest , var! ( mod ) , [ @ null | acc ] , callback )
823- end
824-
825- defp unquote ( extension ) ( << rest :: binary - size ( 0 ) >> , _ , acc , callback ) do
826- callback . ( rest , acc )
827- end
828-
829790 defp unquote ( extension ) ( << - 1 :: int32 ( ) , rest :: binary >> , _mod , oids , types , n , acc ) do
830791 decode_tuple ( rest , oids , types , n , acc )
831792 end
0 commit comments