@@ -388,32 +388,15 @@ defmodule Ecto.Adapters.SQL do
388
388
do_execute ( repo , meta , prepared , params , mapper , put_source ( opts , meta ) )
389
389
end
390
390
391
- defp do_execute ( repo , _meta , { :cache , update , { id , prepared } } , params , nil , opts ) do
392
- execute_and_cache ( repo , id , update , prepared , params , nil , opts )
393
- end
394
-
395
- defp do_execute ( repo , % { fields: fields , sources: sources } , { :cache , update , { id , prepared } } , params , process , opts ) do
396
- mapper = & process_row ( & 1 , process , fields , sources )
391
+ defp do_execute ( repo , _meta , { :cache , update , { id , prepared } } , params , mapper , opts ) do
397
392
execute_and_cache ( repo , id , update , prepared , params , mapper , opts )
398
393
end
399
394
400
- defp do_execute ( repo , _meta , { :cached , reset , { id , cached } } , params , nil , opts ) do
401
- execute_or_reset ( repo , id , reset , cached , params , nil , opts )
402
- end
403
-
404
- defp do_execute ( repo , % { fields: fields , sources: sources } , { :cached , reset , { id , cached } } , params , process , opts ) do
405
- mapper = & process_row ( & 1 , process , fields , sources )
395
+ defp do_execute ( repo , _meta , { :cached , reset , { id , cached } } , params , mapper , opts ) do
406
396
execute_or_reset ( repo , id , reset , cached , params , mapper , opts )
407
397
end
408
398
409
- defp do_execute ( repo , _meta , { :nocache , { _id , prepared } } , params , nil , opts ) do
410
- % { rows: rows , num_rows: num } =
411
- sql_call! ( repo , :execute , [ prepared ] , params , nil , opts )
412
- { num , rows }
413
- end
414
-
415
- defp do_execute ( repo , % { fields: fields , sources: sources } , { :nocache , { _id , prepared } } , params , process , opts ) do
416
- mapper = & process_row ( & 1 , process , fields , sources )
399
+ defp do_execute ( repo , _meta , { :nocache , { _id , prepared } } , params , mapper , opts ) do
417
400
% { rows: rows , num_rows: num } =
418
401
sql_call! ( repo , :execute , [ prepared ] , params , mapper , opts )
419
402
{ num , rows }
@@ -491,30 +474,15 @@ defmodule Ecto.Adapters.SQL do
491
474
do_stream ( repo , meta , prepared , params , mapper , put_source ( opts , meta ) )
492
475
end
493
476
494
- def do_stream ( repo , _meta , { :cache , _ , { _ , prepared } } , params , nil , opts ) do
495
- prepare_stream ( repo , prepared , params , nil , opts )
496
- end
497
-
498
- def do_stream ( repo , % { fields: fields , sources: sources } , { :cache , _ , { _ , prepared } } , params , process , opts ) do
499
- mapper = & process_row ( & 1 , process , fields , sources )
477
+ def do_stream ( repo , _meta , { :cache , _ , { _ , prepared } } , params , mapper , opts ) do
500
478
prepare_stream ( repo , prepared , params , mapper , opts )
501
479
end
502
480
503
- def do_stream ( repo , _ , { :cached , _ , { _ , cached } } , params , nil , opts ) do
504
- prepare_stream ( repo , String.Chars . to_string ( cached ) , params , nil , opts )
505
- end
506
-
507
- def do_stream ( repo , % { fields: fields , sources: sources } , { :cached , _ , { _ , cached } } , params , process , opts ) do
508
- mapper = & process_row ( & 1 , process , fields , sources )
481
+ def do_stream ( repo , _ , { :cached , _ , { _ , cached } } , params , mapper , opts ) do
509
482
prepare_stream ( repo , String.Chars . to_string ( cached ) , params , mapper , opts )
510
483
end
511
484
512
- def do_stream ( repo , _meta , { :nocache , { _id , prepared } } , params , nil , opts ) do
513
- prepare_stream ( repo , prepared , params , nil , opts )
514
- end
515
-
516
- def do_stream ( repo , % { fields: fields , sources: sources } , { :nocache , { _id , prepared } } , params , process , opts ) do
517
- mapper = & process_row ( & 1 , process , fields , sources )
485
+ def do_stream ( repo , _meta , { :nocache , { _id , prepared } } , params , mapper , opts ) do
518
486
prepare_stream ( repo , prepared , params , mapper , opts )
519
487
end
520
488
@@ -570,33 +538,6 @@ defmodule Ecto.Adapters.SQL do
570
538
end
571
539
end
572
540
573
- defp process_row ( row , process , fields , sources ) do
574
- num_sources = tuple_size ( sources )
575
- Enum . map_reduce ( fields , row , fn
576
- { :& , _ , [ _ , _ , counter ] } = field , acc when num_sources == 1 ->
577
- { val , rest } = Enum . split ( acc , counter )
578
- { process . ( field , val , nil ) , rest }
579
- { :& , _ , [ _ , _ , counter ] } = field , acc ->
580
- case split_and_not_nil ( acc , counter , true , [ ] ) do
581
- { nil , rest } -> { nil , rest }
582
- { val , rest } -> { process . ( field , val , nil ) , rest }
583
- end
584
- field , [ h | t ] ->
585
- { process . ( field , h , nil ) , t }
586
- end ) |> elem ( 0 )
587
- end
588
-
589
- defp split_and_not_nil ( rest , 0 , true , _acc ) , do: { nil , rest }
590
- defp split_and_not_nil ( rest , 0 , false , acc ) , do: { :lists . reverse ( acc ) , rest }
591
-
592
- defp split_and_not_nil ( [ nil | t ] , count , all_nil? , acc ) do
593
- split_and_not_nil ( t , count - 1 , all_nil? , [ nil | acc ] )
594
- end
595
-
596
- defp split_and_not_nil ( [ h | t ] , count , _all_nil? , acc ) do
597
- split_and_not_nil ( t , count - 1 , false , [ h | acc ] )
598
- end
599
-
600
541
## Transactions
601
542
602
543
@ doc false
0 commit comments