@@ -216,11 +216,13 @@ evalRelationalExpr (Equals relExprA relExprB) = do
217evalRelationalExpr (With views mainExpr) = do
217evalRelationalExpr (With views mainExpr) = do
218 rstate <- ask
218 rstate <- ask
219− --let ctx = stateElemsContext rstate
220+ let addScopedView ctx (vname,vexpr) = if vname `M.member` relationVariables ctx then
221+ Left (RelVarAlreadyDefinedError vname)
221− let addScopedView ctx (vname,vexpr) = case runState (evalDatabaseContextExpr (Assign vname vexpr)) (freshDatabaseState ctx) of
223+ case runState (evalDatabaseContextExpr (Assign vname vexpr)) (freshDatabaseState ctx) of
222− (Left err,_) -> (Left err)
224+ (Left err,_) -> Left err
223− (Right (), elems@(ctx',_,_)) -> (Right ctx')
225+ (Right (), (ctx',_,_)) -> Right ctx'
225 case foldM addScopedView (stateElemsContext rstate) views of
227 case foldM addScopedView (stateElemsContext rstate) views of
226 Left err -> return $ Left err
228 Left err -> return $ Left err