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§
- Query
Effects 🔒 - 查询树中会产生副作用的节点。
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 🔒