From 84f2f086feb2382064504a616d7c3defcc16b3ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Crist=C3=B3v=C3=A3o?= Date: Wed, 11 Sep 2013 10:29:40 +0100 Subject: [PATCH 1/4] IN works for subList_select assumes ordering. Made ordering explicit. --- test/Test.hs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/Test.hs b/test/Test.hs index 3d92243..908afa1 100644 --- a/test/Test.hs +++ b/test/Test.hs @@ -643,7 +643,8 @@ main = do ret <- select $ from $ \p -> do let subquery = - from $ \bp -> + from $ \bp -> do + orderBy [ asc (bp ^. BlogPostAuthorId) ] return (bp ^. BlogPostAuthorId) where_ (p ^. PersonId `in_` subList_select subquery) return p From 161621cbd4e17de33ff395cbb25f2bdc34437680 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Crist=C3=B3v=C3=A3o?= Date: Wed, 11 Sep 2013 10:48:12 +0100 Subject: [PATCH 2/4] sum_ result type may not be the same as the parameters type. --- src/Database/Esqueleto/Internal/Language.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Database/Esqueleto/Internal/Language.hs b/src/Database/Esqueleto/Internal/Language.hs index ebc220d..b245550 100644 --- a/src/Database/Esqueleto/Internal/Language.hs +++ b/src/Database/Esqueleto/Internal/Language.hs @@ -241,7 +241,7 @@ class (Functor query, Applicative query, Monad query) => ceiling_ :: (PersistField a, PersistField b) => expr (Value a) -> expr (Value b) floor_ :: (PersistField a, PersistField 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)) From 753e4bccac569d3210013badb21bbbd98225c264 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Crist=C3=B3v=C3=A3o?= Date: Thu, 19 Sep 2013 09:30:16 +0100 Subject: [PATCH 3/4] Added num class restriction to random, round_, floor_. --- src/Database/Esqueleto/Internal/Language.hs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Database/Esqueleto/Internal/Language.hs b/src/Database/Esqueleto/Internal/Language.hs index b737f77..48ad25b 100644 --- a/src/Database/Esqueleto/Internal/Language.hs +++ b/src/Database/Esqueleto/Internal/Language.hs @@ -237,10 +237,10 @@ 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, PersistField b) => expr (Value a) -> expr (Value (Maybe b)) min_ :: (PersistField a) => expr (Value a) -> expr (Value (Maybe a)) From 60e73c0a0ce3b887562cc6a3409bef3fef8469f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Crist=C3=B3v=C3=A3o?= Date: Thu, 19 Sep 2013 09:31:30 +0100 Subject: [PATCH 4/4] Sum returns different types on different backends. --- test/Test.hs | 6 ++++++ 1 file changed, 6 insertions(+) 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