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.