on dev help sign in
IsLabel instances for grouped columns
commitf0e564464fc09b546899fe1e87b5e0a803d0173d authorEitan Chatav <eitan.chatav@gmail.com> dateSat 2 Jun 2018, 15:17 (8 years ago) parent06a7c05
2 files changed+17−7
squeal-postgresql/src/Squeal/PostgreSQL/Expression.hs+16−6 squeal-postgresql/src/Squeal/PostgreSQL/Query.hs+1−1
squeal-postgresql/src/Squeal/PostgreSQL/Expression.hs+16−6
@@ -198,12 +198,10 @@ instance {-# OVERLAPPABLE #-} (KnownNat n, HasParameter (n-1) params ty)
198198instance (HasUnique relation relations columns, Has column columns ty)
199199 => IsLabel column (Expression relations 'Ungrouped params ty) where
200200 fromLabel = UnsafeExpression $ renderAlias (Alias @column)
201−
202201instance (HasUnique relation relations columns, Has column columns ty)
203202 => IsLabel column
204203 (Aliased (Expression relations 'Ungrouped params) (column ::: ty)) where
205204 fromLabel = fromLabel @column `As` Alias @column
206−
207205instance (HasUnique relation relations columns, Has column columns ty)
208206 => IsLabel column
209207 (NP (Aliased (Expression relations 'Ungrouped params)) '[column ::: ty]) where
@@ -213,12 +211,10 @@ instance (Has relation relations columns, Has column columns ty)
213211 => IsQualified relation column (Expression relations 'Ungrouped params ty) where
214212 relation ! column = UnsafeExpression $
215213 renderAlias relation <> "." <> renderAlias column
216−
217214instance (Has relation relations columns, Has column columns ty)
218215 => IsQualified relation column
219216 (Aliased (Expression relations 'Ungrouped params) (column ::: ty)) where
220217 relation ! column = relation ! column `As` column
221−
222218instance (Has relation relations columns, Has column columns ty)
223219 => IsQualified relation column
224220 (NP (Aliased (Expression relations 'Ungrouped params)) '[column ::: ty]) where
@@ -231,6 +227,22 @@ instance
231227 ) => IsLabel column
232228 (Expression relations ('Grouped bys) params ty) where
233229 fromLabel = UnsafeExpression $ renderAlias (Alias @column)
230+instance
231+ ( HasUnique relation relations columns
232+ , Has column columns ty
233+ , GroupedBy relation column bys
234+ ) => IsLabel column
235+ ( Aliased (Expression relations ('Grouped bys) params)
236+ (column ::: ty) ) where
237+ fromLabel = fromLabel @column `As` Alias @column
238+instance
239+ ( HasUnique relation relations columns
240+ , Has column columns ty
241+ , GroupedBy relation column bys
242+ ) => IsLabel column
243+ ( NP (Aliased (Expression relations ('Grouped bys) params))
244+ '[column ::: ty] ) where
245+ fromLabel = fromLabel @column :* Nil
234246
235247instance
236248 ( Has relation relations columns
@@ -240,7 +252,6 @@ instance
240252 (Expression relations ('Grouped bys) params ty) where
241253 relation ! column = UnsafeExpression $
242254 renderAlias relation <> "." <> renderAlias column
243−
244255instance
245256 ( Has relation relations columns
246257 , Has column columns ty
@@ -249,7 +260,6 @@ instance
249260 (Aliased (Expression relations ('Grouped bys) params)
250261 (column ::: ty)) where
251262 relation ! column = relation ! column `As` column
252−
253263instance
254264 ( Has relation relations columns
255265 , Has column columns ty
squeal-postgresql/src/Squeal/PostgreSQL/Query.hs+1−1
@@ -177,7 +177,7 @@ let
177177 '[ "sum" ::: 'NotNull 'PGint4
178178 , "col1" ::: 'NotNull 'PGint4 ]
179179 query =
180− select (sum_ #col2 `As` #sum :* #col1 `As` #col1 :* Nil)
180+ select (sum_ #col2 `As` #sum :* #col1 :* Nil)
181181 ( from (table (#tab `As` #table1))
182182 & group (By #col1 :* Nil)
183183 & having (#col1 + sum_ #col2 .> 1) )