@@ -526,6 +526,51 @@ defmodule Ecto.Integration.PreloadTest do
526526 assert [ ] = sort_by_id ( p3 . comments )
527527 end
528528
529+ test "take with join nil maps (many association)" do
530+ p = TestRepo . insert! ( % Post { } )
531+
532+ # many
533+ query =
534+ from p in Post ,
535+ left_join: c in Comment ,
536+ on: p . id == c . post_id ,
537+ select: map ( p , [ :id , comments: [ :id , :post_id ] ] ) ,
538+ preload: [ comments: c ]
539+
540+ assert TestRepo . one ( query ) == % { id: p . id , comments: [ ] }
541+
542+ query =
543+ from p in Post ,
544+ left_join: c in Comment ,
545+ on: p . id == c . post_id ,
546+ select: map ( p , [ :id , comments: [ :id , :post_id ] ] ) ,
547+ preload: [ :comments ]
548+
549+ assert TestRepo . one ( query ) == % { id: p . id , comments: [ ] }
550+ end
551+
552+ test "take with join nil maps (one association)" do
553+ p = TestRepo . insert! ( % Post { } )
554+
555+ query =
556+ from p in Post ,
557+ left_join: u in User ,
558+ on: p . author_id == u . id ,
559+ select: map ( p , [ :id , author: [ :id , :name ] ] ) ,
560+ preload: [ author: u ]
561+
562+ assert TestRepo . one ( query ) == % { id: p . id , author: nil }
563+
564+ query =
565+ from p in Post ,
566+ left_join: u in User ,
567+ on: p . author_id == u . id ,
568+ select: map ( p , [ :id , author: [ :id , :name ] ] ) ,
569+ preload: [ :author ]
570+
571+ assert TestRepo . one ( query ) == % { id: p . id , author: nil }
572+ end
573+
529574 test "preload through with take" do
530575 % Post { id: pid1 } = TestRepo . insert! ( % Post { } )
531576
0 commit comments