@@ -112,4 +112,34 @@ defmodule Ecto.Integration.SubQueryTest do
112112              select:  fragment ( "? + ?" ,  p . visits ,  ^ 1 ) 
113113    assert  [ 12 ,  12 ]  =  TestRepo . all ( query ) 
114114  end 
115+ 
116+   test  "subqueries in order by"  do 
117+     TestRepo . insert! ( % Post { visits:  10 ,  title:  "hello" } ) 
118+     TestRepo . insert! ( % Post { visits:  11 ,  title:  "hello" } ) 
119+ 
120+     query  =  from  p  in  Post ,  as:  :p ,  order_by:  [ asc:  exists ( from  p  in  Post ,  where:  p . visits  >  parent_as ( :p ) . visits ) ] 
121+ 
122+     assert  [ % { visits:  11 } ,  % { visits:  10 } ]  =  TestRepo . all ( query ) 
123+   end 
124+ 
125+   @ tag  :multicolumn_distinct 
126+   test  "subqueries in distinct"  do 
127+     TestRepo . insert! ( % Post { visits:  10 ,  title:  "hello1" } ) 
128+     TestRepo . insert! ( % Post { visits:  10 ,  title:  "hello2" } ) 
129+     TestRepo . insert! ( % Post { visits:  11 ,  title:  "hello" } ) 
130+ 
131+     query  =  from  p  in  Post ,  as:  :p ,  distinct:  exists ( from  p  in  Post ,  where:  p . visits  >  parent_as ( :p ) . visits ) ,  order_by:  [ asc:  :title ] 
132+ 
133+     assert  [ % { title:  "hello" } ,  % { title:  "hello1" } ]  =  TestRepo . all ( query ) 
134+   end 
135+ 
136+   test  "subqueries in group by"  do 
137+     TestRepo . insert! ( % Post { visits:  10 ,  title:  "hello1" } ) 
138+     TestRepo . insert! ( % Post { visits:  10 ,  title:  "hello2" } ) 
139+     TestRepo . insert! ( % Post { visits:  11 ,  title:  "hello" } ) 
140+ 
141+     query  =  from  p  in  Post ,  as:  :p ,  select:  sum ( p . visits ) ,  distinct:  exists ( from  p  in  Post ,  where:  p . visits  >  parent_as ( :p ) . visits ) 
142+ 
143+     assert  [ 20 ,  11 ]  =  TestRepo . all ( query ) 
144+   end 
115145end 
0 commit comments