暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
查 Postgres 中的慢 SQL,别漏了条件表达式.doc
10
5页
2次
2025-03-31
免费下载
Postgres
中的慢
SQL
,别漏了条件表达式
PostgreSQL
PL/pgSQL
数中条件
达式是如何解析和计算的吗?
介绍
PostgreSQL
PL/pgSQL
法错误:
DO $$
DECLARE i INT;
BEGIN
i = 0;
IF i = 0 AND THEN
RAISE NOTICE 'i = 0';
END IF;
END; $$;
乍一这个乎并请注
IF
件:
AND
运算后面乎缺了一额外条件从逻
讲,这应该会出现异常,因为
AND
后面的条件不完整。
IF i = 0 AND THEN
PL/pgSQL
行期被评有出
现任何语法错误或警告。这就提出了一个关键问题:
PostgreSQL
在内部如何处理这个条件?
是什么让这个看似不完整的表达式正常工作的呢?
条件 “
i = 0 AND”
是如何被处理的?
PL/pgSQL
代码起来假设
它应该失败的情况下,会令人惊讶。
我们
PL/pgSQL
部结
PostgreSQL
没有将其标记为错误。
PL/pgSQL
内部的代码实现
件的是,
没有按预期中断,提供了基础。
PLPGSQL_STMT_IF
pl_exec.c
文件中的调用栈进行跟踪。
IF
使
exec_run_select
一个布尔结果的
SELECT
语句。
作为
SELECT
子句的
PL/pgSQL
条件
回顾始的例,
i = 0 AND
是在
SELECT
。在
AND
个占,允
PL/pgSQL
引擎在不触发语法错误的情况下计算条件。
-- the condition is evaluated as SQL,
-- "and" is treated as column alias
SELECT 0 = 0 AND;
and
-----
t
(1 row)
种见 件表式作
SELECT
语句行计
新的可能性。,我们可以在
PL/pgSQL
条件中利用各种函数,如以下示例所示。
码片段说明了
PL/pgSQL
条件表达式的
不同方式:
of 5
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。