Member Junction
    Preparing search index...

    Action that executes read-only SQL SELECT queries for research purposes with security validation.

    Security — the same gates as the ExecuteAdhocQuery resolver:

    • Scope-limited sessions (magic-link and widget guests, resource-scoped links) are refused: raw SQL never applies the row-level filters that confine them.
    • The SQL runs only on the host's read-only database login (ActionEngineServer.GetReadOnlyProvider), never on the read-write pool; with no read-only login configured the action refuses.
    • The host's ad-hoc SQL checks (ActionEngineServer.AdhocSQLAuthorizer) must accept the SQL: MJServer registers ExecuteAdhocQuery's own check, so the SQL must be one read statement and every table it reads an entity view the caller may read in full. The host also limits the timeout.
    • It runs through the provider's ad-hoc read path (RunQuery with SQL), which accepts one read statement only, refuses functions that read outside the query, and enforces the timeout and row limit in the database.
    • The dangerous-keyword screen (SQLExpressionValidator) runs first.

    Performance Features:

    • Configurable row limits to prevent overwhelming results
    • Execution time tracking
    • Validation warnings for potentially slow queries
    // Simple SELECT query
    await runAction({
    ActionName: 'Run Ad-hoc Query',
    Params: [{
    Name: 'Query',
    Value: 'SELECT TOP 100 * FROM Customers WHERE Country = ''USA'''
    }]
    });

    // Query with timeout
    await runAction({
    ActionName: 'Run Ad-hoc Query',
    Params: [{
    Name: 'Query',
    Value: 'SELECT COUNT(*) FROM Orders GROUP BY CustomerID'
    }, {
    Name: 'Timeout',
    Value: 60
    }]
    });

    Hierarchy (View Summary)

    Index

    Constructors

    Properties

    Methods

    Constructors

    Properties

    AuthorizesCaller: boolean

    True when the action authorizes its caller itself, so a public entry point such as the RunAction mutation may run it for an authenticated user without an MJ: Action Authorizations link. Set it only on an action that either checks an authorization the caller must hold, or reads and writes only with the caller's own permissions. Leave it false for an action that acts with more authority than its caller, or that reaches data or sends messages the caller chooses but could not otherwise reach.

    The engine reads the marker only from the class that runs, never from its parent classes. A subclass that overrides a marked action must declare the marker again.

    Methods