@@ -25,6 +25,7 @@ data RelationalExpr where
25 Join :: RelationalExpr -> RelationalExpr -> RelationalExpr
25 Join :: RelationalExpr -> RelationalExpr -> RelationalExpr
26 Assign :: String -> RelationalExpr -> RelationalExpr
26 Assign :: String -> RelationalExpr -> RelationalExpr
27 MultipleExpr :: [RelationalExpr] -> RelationalExpr
27 MultipleExpr :: [RelationalExpr] -> RelationalExpr
28+ Rename :: AttributeName -> AttributeName -> RelationalExpr -> RelationalExpr
28 --Restrict :: RExpr.RestrictionExpr -> RelationalExpr -> RelationalExpr
29 --Restrict :: RExpr.RestrictionExpr -> RelationalExpr -> RelationalExpr
29{- maybe break this into multiple steps:
30{- maybe break this into multiple steps:
301. check relational types for match (attribute counts) (typechecking step
311. check relational types for match (attribute counts) (typechecking step
@@ -82,7 +83,13 @@ eval (MakeStaticRelation attributes tupleSet) = do
82 case mkRelation attributes tupleSet of
83 case mkRelation attributes tupleSet of
83 Right rel -> return $ Right rel
84 Right rel -> return $ Right rel
84 Left err -> return $ Left err
85 Left err -> return $ Left err
87+eval (Rename oldAttrName newAttrName relExpr) = do
88+ evald <- eval relExpr
90+ Right rel -> return $ rename oldAttrName newAttrName rel
91+ Left err -> return $ Left err
86emptyRelVarContext :: RelVarContext
93emptyRelVarContext :: RelVarContext
87emptyRelVarContext = M.empty
94emptyRelVarContext = M.empty