Skip to main content

Module read_only

Module read_only 

Source
Expand description

SQL 只读判定(导出与 SQL 控制台共用,仅 server:依赖 sqlparser)。 SQL 只读判定(数据导出与 SQL 控制台共用)。

只有不修改数据、不建表、不加行锁的 SELECT 类查询,以及不带 ANALYZE 的 EXPLAIN <只读查询> 才算只读。EXPLAIN ANALYZE 会真正执行内层语句, WITH d AS (DELETE ... RETURNING *) SELECT ... 会在顶层 WITH 中写数据, 二者都不能按语句外形放行。

遍历范围是查询树(WITH 的各 CTE、集合运算两侧、FROM 中的派生表与嵌套 JOIN)。 表达式内的子查询不展开:PostgreSQL 语法不允许在那里出现数据修改语句或 SELECT INTO,sqlparser 即使能解析,数据库也会拒绝执行。

Structs§

QueryEffects 🔒
查询树中会产生副作用的节点。

Functions§

executed_statements 🔒
返回语句本身及其内部会被执行的数据修改语句。
is_pg_false 🔒
PostgreSQL parse_bool 认可的假值:false/no 的任意非空前缀、of/off、0。
is_read_only_statement 🔒
语句是否只读:顶层 Query 或非 ANALYZE 的 EXPLAIN <Query>,且查询树无副作用。
options_enable_analyze 🔒
EXPLAIN (ANALYZE ...) 选项形式是否开启了 ANALYZE。
push_executed 🔒