@@ -203,11 +203,11 @@ defmodule Ecto.Repo.Queryable do
203
203
struct_load! ( types , values , [ { field , value } | acc ] , all_nil? , struct , adapter )
204
204
end
205
205
206
- def struct_load! ( [ ] , values , _acc , true , _struct , _adapter ) do
206
+ def struct_load! ( [ ] , values , _acc , true , struct , _adapter ) when struct != % { } do
207
207
{ nil , values }
208
208
end
209
209
210
- def struct_load! ( [ ] , values , acc , false , struct , _adapter ) do
210
+ def struct_load! ( [ ] , values , acc , _all_nil? , struct , _adapter ) do
211
211
{ Map . merge ( struct , Map . new ( acc ) ) , values }
212
212
end
213
213
@@ -310,7 +310,7 @@ defmodule Ecto.Repo.Queryable do
310
310
311
311
defp process ( row , { :merge , left , right } , from , adapter ) do
312
312
{ left , row } = process ( row , left , from , adapter )
313
- { right , row } = process_merge ( row , right , from , adapter )
313
+ { right , row } = process ( row , right , from , adapter )
314
314
315
315
data =
316
316
case { left , right } do
@@ -427,15 +427,6 @@ defmodule Ecto.Repo.Queryable do
427
427
end )
428
428
end
429
429
430
- defp process_merge ( row , { :source , { source , schema } , prefix , types } , _from , adapter ) do
431
- struct = Ecto.Schema.Loader . load_struct ( schema , prefix , source )
432
- struct_load! ( types , row , [ ] , false , struct , adapter )
433
- end
434
-
435
- defp process_merge ( row , process , from , adapter ) do
436
- process ( row , process , from , adapter )
437
- end
438
-
439
430
@ compile { :inline , load!: 5 }
440
431
defp load! ( type , value , field , struct , adapter ) do
441
432
case Ecto.Type . adapter_load ( adapter , type , value ) do
0 commit comments