diff --git a/src/Database/Esqueleto/Internal/Language.hs b/src/Database/Esqueleto/Internal/Language.hs index ac398b2..48ad25b 100644 --- a/src/Database/Esqueleto/Internal/Language.hs +++ b/src/Database/Esqueleto/Internal/Language.hs @@ -237,12 +237,12 @@ class (Functor query, Applicative query, Monad query) => (*.) :: PersistField a => expr (Value a) -> expr (Value a) -> expr (Value a) - random_ :: PersistField a => expr (Value a) - round_ :: (PersistField a, PersistField b) => expr (Value a) -> expr (Value b) - ceiling_ :: (PersistField a, PersistField b) => expr (Value a) -> expr (Value b) - floor_ :: (PersistField a, PersistField b) => expr (Value a) -> expr (Value b) + random_ :: (PersistField a, Num a) => expr (Value a) + round_ :: (PersistField a, Num a, PersistField b, Num b) => expr (Value a) -> expr (Value b) + ceiling_ :: (PersistField a, Num a, PersistField b, Num b) => expr (Value a) -> expr (Value b) + floor_ :: (PersistField a, Num a, PersistField b, Num b) => expr (Value a) -> expr (Value b) - sum_ :: (PersistField a) => expr (Value a) -> expr (Value (Maybe a)) + sum_ :: (PersistField a, PersistField b) => expr (Value a) -> expr (Value (Maybe b)) min_ :: (PersistField a) => expr (Value a) -> expr (Value (Maybe a)) max_ :: (PersistField a) => expr (Value a) -> expr (Value (Maybe a)) avg_ :: (PersistField a, PersistField b) => expr (Value a) -> expr (Value (Maybe b)) diff --git a/test/Test.hs b/test/Test.hs index b084802..35636ae 100644 --- a/test/Test.hs +++ b/test/Test.hs @@ -323,7 +323,13 @@ main = do ret <- select $ from $ \p-> return $ joinV $ sum_ (p ^. PersonAge) +#if defined(WITH_POSTGRESQL) + liftIO $ ret `shouldBe` [ Value $ Just (36 + 17 + 17 :: Rational ) ] +#elif defined(WITH_MYSQL) + liftIO $ ret `shouldBe` [ Value $ Just (36 + 17 + 17 :: Double ) ] +#else liftIO $ ret `shouldBe` [ Value $ Just (36 + 17 + 17 :: Int) ] +#endif it "works with avg_" $ run $ do