diff --git a/Language/SQL/SimpleSQL/Parser.lhs b/Language/SQL/SimpleSQL/Parser.lhs index f88c3e2..f75efaf 100644 --- a/Language/SQL/SimpleSQL/Parser.lhs +++ b/Language/SQL/SimpleSQL/Parser.lhs @@ -514,7 +514,8 @@ tref > tref = nonJoinTref >>= optionSuffix joinTrefSuffix > nonJoinTref = choice [try (TRQueryExpr <$> parens queryExpr) > ,TRParens <$> parens tref -> ,TRLateral <$> (try (keyword_ "lateral") *> tref) +> ,TRLateral <$> (try (keyword_ "lateral") +> *> nonJoinTref) > ,try (TRFunction <$> name > <*> parens (commaSep scalarExpr)) > ,TRSimple <$> name] diff --git a/tools/Language/SQL/SimpleSQL/TableRefs.lhs b/tools/Language/SQL/SimpleSQL/TableRefs.lhs index 466d3d6..00c86ef 100644 --- a/tools/Language/SQL/SimpleSQL/TableRefs.lhs +++ b/tools/Language/SQL/SimpleSQL/TableRefs.lhs @@ -28,9 +28,8 @@ these lateral queries make no sense but the syntax is valid > ,("select a from lateral a,b" > ,ms [TRLateral $ TRSimple "a", TRSimple "b"]) -> -- not sure what the problem is -> --,("select from a, lateral b" -> -- ,ms [TRSimple "a", TRLateral $ TRSimple "b"]) +> ,("select a from a, lateral b" +> ,ms [TRSimple "a", TRLateral $ TRSimple "b"]) > ,("select a from a natural join lateral b" > ,ms [TRJoin (TRSimple "a") JInner @@ -38,10 +37,10 @@ these lateral queries make no sense but the syntax is valid > (Just JoinNatural)]) > -- the lateral binds on the outside of the join which is incorrect -> --,("select a from lateral a natural join lateral b" -> -- ,ms [TRJoin (TRLateral $ TRSimple "a") JInner -> -- (TRLateral $ TRSimple "b") -> -- (Just JoinNatural)]) +> ,("select a from lateral a natural join lateral b" +> ,ms [TRJoin (TRLateral $ TRSimple "a") JInner +> (TRLateral $ TRSimple "b") +> (Just JoinNatural)]) > ,("select a from t inner join u on expr"