@@ -5,7 +5,6 @@ import qualified Data.Text as T
55import TutorialD.Interpreter.RelationalExpr
66import TutorialD.Interpreter.Types
77import qualified Data.Map as M
8−import Control.Monad.State
98import ProjectM36.StaticOptimizer
109import qualified ProjectM36.Error as PM36E
1110import ProjectM36.Error
@@ -195,11 +194,13 @@ evalDatabaseContextExpr useOptimizer context expr = do
195194 (Left err, _) -> Left err
196195-}
197196
198−interpretDatabaseContextExpr :: DatabaseContext -> T.Text -> Either RelationalError DatabaseContext
199−interpretDatabaseContextExpr context tutdstring = case parse databaseExprOpP "" tutdstring of
200− Left err -> Left $ PM36E.ParseError (T.pack (show err))
201− Right parsed ->
202− evalDatabaseContextExpr True context parsed
197+interpretDatabaseContextExpr :: DatabaseContext -> TransactionId -> TransactionGraph -> T.Text -> Either RelationalError DatabaseContext
198+interpretDatabaseContextExpr context transId graph tutdstring =
199+ case parse databaseExprOpP "" tutdstring of
200+ Left err -> Left $ PM36E.ParseError (T.pack (show err))
201+ Right parsed -> do
202+ let env = RE.mkDatabaseContextEvalEnv transId graph
203+ RE.dbc_context <$> RE.runDatabaseContextEvalMonad context env (optimizeAndEvalDatabaseContextExpr True parsed)
203204
204205{-
205206--no optimization