@@ -949,13 +949,26 @@ defmodule Ecto.Query.PlannerTest do
949
949
end
950
950
951
951
test "plan: tuple source with fragment" do
952
- { query , cast_params , dump_params , cache_key } =
953
- plan ( from { fragment ( "? as num" , ^ 0 ) , Barebone } )
952
+ query =
953
+ from f1 in { fragment ( "? as num" , ^ 0 ) , Barebone } ,
954
+ join: f2 in { fragment ( "? as visits" , ^ 0 ) , Post } ,
955
+ on: f1 . num == f2 . visits ,
956
+ select: { f1 , f2 }
957
+
958
+ { query , cast_params , dump_params , cache_key } = plan ( query )
954
959
955
- assert { { { :fragment , [ ] , _ } , Barebone , nil } } = query . sources
956
- assert cast_params == [ 0 ]
957
- assert dump_params == [ 0 ]
958
- assert [ :all , { :from , { { :fragment , _ , _ } , Barebone , _ , _ } , [ ] } ] = cache_key
960
+ assert { from_source , join_source } = query . sources
961
+ assert { { :fragment , [ ] , _ } , Barebone , nil } = from_source
962
+ assert { { :fragment , [ ] , _ } , Post , nil } = join_source
963
+ assert cast_params == [ 0 , 0 ]
964
+ assert dump_params == [ 0 , 0 ]
965
+
966
+ assert [
967
+ :all ,
968
+ { :join , [ { :inner , { { :fragment , _ , _ } , Post , _ , _ } , { :== , _ , _ } , [ ] } ] } ,
969
+ { :from , { { :fragment , _ , _ } , Barebone , _ , _ } , [ ] } ,
970
+ { :select , { :{} , [ ] , [ { :& , [ ] , [ 0 ] } , { :& , [ ] , [ 1 ] } ] } }
971
+ ] = cache_key
959
972
end
960
973
961
974
test "plan: tuple source with fragment and take" do
@@ -2609,13 +2622,23 @@ defmodule Ecto.Query.PlannerTest do
2609
2622
end
2610
2623
2611
2624
test "normalize: tuple source with fragment" do
2612
- { query , _ , _ , select } =
2613
- normalize_with_params ( from { fragment ( "? as num" , ^ 0 ) , Barebone } )
2625
+ query =
2626
+ from f1 in { fragment ( "? as num" , ^ 0 ) , Barebone } ,
2627
+ join: f2 in { fragment ( "? as num" , ^ 0 ) , Barebone } ,
2628
+ on: f1 . num == f2 . num ,
2629
+ select: { f1 , f2 }
2614
2630
2615
- % { from: { _ , { :source , { { :fragment , _ , _ } , Barebone } , nil , types } } } = select
2616
- assert types == [ num: :integer ]
2631
+ { query , _ , _ , select } = normalize_with_params ( query )
2632
+
2633
+ % { from: { _ , { :source , { { :fragment , _ , _ } , Barebone } , nil , from_types } } } = select
2634
+ assert from_types == [ num: :integer ]
2617
2635
assert { { :fragment , _ , _ } , Barebone } = query . from . source
2618
- assert query . select . fields == [ { { :. , [ writable: :always ] , [ { :& , [ ] , [ 0 ] } , :num ] } , [ ] , [ ] } ]
2636
+ assert [ % { source: { { :fragment , _ , _ } , Barebone } } ] = query . joins
2637
+
2638
+ assert query . select . fields == [
2639
+ { { :. , [ writable: :always ] , [ { :& , [ ] , [ 0 ] } , :num ] } , [ ] , [ ] } ,
2640
+ { { :. , [ writable: :always ] , [ { :& , [ ] , [ 1 ] } , :num ] } , [ ] , [ ] }
2641
+ ]
2619
2642
end
2620
2643
2621
2644
test "normalize: tuple source with fragment and take" do
0 commit comments