From 603023a57925e230381acff0e00def70add3d7c0 Mon Sep 17 00:00:00 2001 From: Philipp Balzarek Date: Tue, 21 Apr 2015 17:05:47 +0200 Subject: [PATCH] don't match on clauses with cross joins --- src/Database/Esqueleto/Internal/Language.hs | 1 + src/Database/Esqueleto/Internal/Sql.hs | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Database/Esqueleto/Internal/Language.hs b/src/Database/Esqueleto/Internal/Language.hs index 37be821..c1a8cd7 100644 --- a/src/Database/Esqueleto/Internal/Language.hs +++ b/src/Database/Esqueleto/Internal/Language.hs @@ -550,6 +550,7 @@ data JoinKind = | LeftOuterJoinKind -- ^ @LEFT OUTER JOIN@ | RightOuterJoinKind -- ^ @RIGHT OUTER JOIN@ | FullOuterJoinKind -- ^ @FULL OUTER JOIN@ + deriving Eq -- | (Internal) Functions that operate on types (that should be) diff --git a/src/Database/Esqueleto/Internal/Sql.hs b/src/Database/Esqueleto/Internal/Sql.hs index 4876334..1cd8893 100644 --- a/src/Database/Esqueleto/Internal/Sql.hs +++ b/src/Database/Esqueleto/Internal/Sql.hs @@ -152,7 +152,9 @@ collectOnClauses = go [] matchR = (\r' -> FromJoin l k r' onClause) <$> tryMatch expr r matchL = (\l' -> FromJoin l' k r onClause) <$> tryMatch expr l matchC = case onClause of - Nothing -> return (FromJoin l k r (Just expr)) + Nothing | k /= CrossJoinKind + -> return (FromJoin l k r (Just expr)) + | otherwise -> mzero Just _ -> mzero tryMatch _ _ = mzero