Skip to main content

Module sql_console

Module sql_console 

Source
Expand description

SQL 控制台执行(全读写 + 4 护栏)。 SQL 控制台执行(全读写 + 4 道护栏)。

护栏:

  1. 高危语句闸门:DROP DATABASE/DROP SCHEMA(字符串预检)绝禁; DROP/TRUNCATE/ALTERconfirm_dangerous
  2. 无 WHERE 拦截:UPDATE/DELETEselection 拒绝。
  3. 查询超时上限:复用 STATEMENT_TIMEOUT_SECS(pool 层已注入 GUC)。
  4. 前端二次确认(前端实现)。

默认禁止多语句(allow_multi 放开)。

Structs§

ExecuteSqlOpts
SqlResult

Enums§

GuardResult 🔒
护栏检查返回值。

Constants§

ABSOLUTELY_FORBIDDEN 🔒
绝对禁止的语句关键词(字符串预检,sqlparser 无 ObjectType::Database/Schema)。 命中即拒,不可放行。
MAX_ROWS 🔒
结果行数上限(超出截断 + 提示)。

Functions§

check_guards 🔒
护栏 1+2:sqlparser 解析后遍历 AST,检查高危语句与无 WHERE 的 UPDATE/DELETE。
col_to_json 🔒
把一列的值转成 JSON(按 PG 类型名分发)。
execute_one 🔒
执行单条语句,返回结果。
execute_sql
执行 SQL(全读写,管理员)。护栏见模块文档。
is_absolutely_forbidden 🔒
护栏 1 的字符串预检(token 序列匹配)。
is_read_only 🔒
判断语句是否只读(SELECT/WITH…SELECT/EXPLAIN/SHOW 系列)。
statement_type_name 🔒
提取语句类型名(AST 变体名,如 “Select”/“Insert”/“Update”)。
writes_affect_cache 🔒
判断一组语句中是否含有写操作(非只读语句)。