Skip to main content

query_may_mutate_engine

Function query_may_mutate_engine 

Source
pub fn query_may_mutate_engine(
    context: &QueryEffectContext<'_>,
    query: &QueryPlan,
) -> Result<bool, SQLError>
Expand description

SELECT is not synonymous with read-only: UQA exposes a small set of state-changing scalar functions, and SQL/PLpgSQL routines invoked from a projection can contain commands. Classify those plans before choosing the transaction mode so memory execution takes a rollback snapshot and SQLite opens a write transaction. Cloning the plan is bounded by query size and avoids the database-sized deep copy paid by a full memory snapshot.