@@ -209,25 +209,29 @@ checkConstraints context = case failures of
209 deps = inclusionDependencies context
209 deps = inclusionDependencies context
210 eval expr = runState (evalRelationalExpr expr) context
210 eval expr = runState (evalRelationalExpr expr) context
211 checkIncDep (InclusionDependency depName subsetExpr supersetExpr) = case evaldSub of
211 checkIncDep (InclusionDependency depName subsetExpr supersetExpr) = case evaldSub of
212− Left err -> Just err
212+ (Left err, _) -> Just err
213− Right relSub -> case evaldSub of
213+ (Right relSub, _) -> case evaldSuper of
214− Left err -> Just err
214+ (Left err, _) -> Just err
215− Right relSuper -> case union relSub relSuper of
215+ (Right relSuper, _) -> case union relSub relSuper of
216 Left err -> Just err
216 Left err -> Just err
217− Right resultRel -> case resultRel of
217+ Right resultRel -> case resultRel == relSuper of
218 False -> Just $ InclusionDependencyCheckError depName
218 False -> Just $ InclusionDependencyCheckError depName
219 True -> Nothing
219 True -> Nothing
221 evaldSub = eval subsetExpr
221 evaldSub = eval subsetExpr
222 evaldSuper = eval supersetExpr
222 evaldSuper = eval supersetExpr
224checkConstraint :: InclusionDependency -> DatabaseState (Maybe RelationalError)
225checkConstraint :: InclusionDependency -> DatabaseState (Maybe RelationalError)
225checkConstraint (InclusionDependency name subDep superDep) = do
226checkConstraint (InclusionDependency name subDep superDep) = do
226− evalSub <- evalRelExpr subDep
227+ evalSub <- evalRelationalExpr subDep
227− evalSuper <- evalRelExpr superDep
228+ evalSuper <- evalRelationalExpr superDep
230+ Left err -> Just err
228 result <- liftM2 union evalSub evalSuper
232 result <- liftM2 union evalSub evalSuper
229−
233+ return $ Nothing