@@ -25,6 +25,7 @@ module ProjectM36.Client
25 typeForRelationalExpr,
25 typeForRelationalExpr,
26 inclusionDependencies,
26 inclusionDependencies,
27 ProjectM36.Client.typeConstructorMapping,
27 ProjectM36.Client.typeConstructorMapping,
28+ ProjectM36.Client.databaseContextFunctionsAsRelation,
28 planForDatabaseContextExpr,
29 planForDatabaseContextExpr,
29 currentSchemaName,
30 currentSchemaName,
30 SchemaName,
31 SchemaName,
@@ -32,6 +33,7 @@ module ProjectM36.Client
32 setCurrentSchemaName,
33 setCurrentSchemaName,
33 transactionGraphAsRelation,
34 transactionGraphAsRelation,
34 relationVariablesAsRelation,
35 relationVariablesAsRelation,
36+ ProjectM36.Client.atomFunctionsAsRelation,
35 disconnectedTransactionIsDirty,
37 disconnectedTransactionIsDirty,
37 remoteDBLookupName,
39 remoteDBLookupName,
@@ -98,9 +100,10 @@ import ProjectM36.Base hiding (inclusionDependencies) --defined in this module a
98import qualified ProjectM36.Base as B
100import qualified ProjectM36.Base as B
99import ProjectM36.Error
101import ProjectM36.Error
100import ProjectM36.Atomable
102import ProjectM36.Atomable
101−import ProjectM36.AtomFunction
103+import ProjectM36.AtomFunction as AF
102import ProjectM36.StaticOptimizer
104import ProjectM36.StaticOptimizer
103import ProjectM36.Key
105import ProjectM36.Key
106+import ProjectM36.DatabaseContextFunction as DCF
104import qualified ProjectM36.IsomorphicSchema as Schema
107import qualified ProjectM36.IsomorphicSchema as Schema
105import Control.Monad.State
108import Control.Monad.State
106import Control.Monad.Trans.Reader
109import Control.Monad.Trans.Reader
@@ -910,7 +913,32 @@ relationVariablesAsRelation sessionId (InProcessConnection conf) = do
910 Left err -> pure (Left err)
913 Left err -> pure (Left err)
911 Right relvars -> pure $ R.relationVariablesAsRelation relvars
914 Right relvars -> pure $ R.relationVariablesAsRelation relvars
913−relationVariablesAsRelation sessionId conn@(RemoteProcessConnection _) = remoteCall conn (RetrieveRelationVariableSummary sessionId)
916+relationVariablesAsRelation sessionId conn@(RemoteProcessConnection _) = remoteCall conn (RetrieveRelationVariableSummary sessionId)
918+-- | Returns the names and types of the atom functions in the current 'Session'.
919+atomFunctionsAsRelation :: SessionId -> Connection -> IO (Either RelationalError Relation)
920+atomFunctionsAsRelation sessionId (InProcessConnection conf) = do
921+ let sessions = ipSessions conf
923+ eSession <- sessionAndSchema sessionId sessions
925+ Left err -> pure (Left err)
926+ Right (session, _) ->
927+ pure (AF.atomFunctionsAsRelation (atomFunctions (concreteDatabaseContext session)))
929+atomFunctionsAsRelation sessionId conn@(RemoteProcessConnection _) = remoteCall conn (RetrieveAtomFunctionSummary sessionId)
931+databaseContextFunctionsAsRelation :: SessionId -> Connection -> IO (Either RelationalError Relation)
932+databaseContextFunctionsAsRelation sessionId (InProcessConnection conf) = do
933+ let sessions = ipSessions conf
935+ eSession <- sessionAndSchema sessionId sessions
937+ Left err -> pure (Left err)
938+ Right (session, _) ->
939+ pure (DCF.databaseContextFunctionsAsRelation (dbcFunctions (concreteDatabaseContext session)))
941+databaseContextFunctionsAsRelation sessionId conn@(RemoteProcessConnection _) = remoteCall conn (RetrieveDatabaseContextFunctionSummary sessionId)
915-- | Returns the transaction id for the connection's disconnected transaction committed parent transaction.
943-- | Returns the transaction id for the connection's disconnected transaction committed parent transaction.
916headTransactionId :: SessionId -> Connection -> IO (Either RelationalError TransactionId)
944headTransactionId :: SessionId -> Connection -> IO (Either RelationalError TransactionId)