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