news 2026/6/15 13:43:36

修改一个触发PostgreSQL 17.2 bug的SQL

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
修改一个触发PostgreSQL 17.2 bug的SQL

德哥发表了一篇文章DBA挑战AI: 一条SQL解数独,
其中最后一个SQL在PostgreSQL 15上能正确执行,但在PostgreSQL 17.2上报错,84: ERROR: wrong varnullingrels (b 3) (expected (b)) for Var 1/1,这里84是sql最后一行,并不是出错的位置,我在网上搜索这个错误,有下面两个有用的信息。

  1. https://www.postgresql.org/message-id/1948671.1686748004%40sss.pgh.pa.us 这个网页提到,2023年就有相关的错误。
  2. https://github.com/citusdata/citus/issues/7899 提出这个问题的人说
The query executes successfully if: Use INNER JOIN instead of LEFT OUTER JOIN ranged_partition table is not distributed Use PG15 & Citus12.1.6

这提供了修改的思路,我在代码中找到了LEFT,代码片段如下。

SELECTboard,-- 初始化行掩码:确保 SUM 结果被强制转为 int(SELECTarray_agg(m)FROM(SELECTCOALESCE(SUM(1<<(val-1)),0)::intasmFROMgenerate_series(0,8)rLEFTJOINLATERAL(SELECTsubstring(board,r*9+i,1)aschFROMgenerate_series(1,9)i)sONch<>'.'CROSSJOINLATERAL(SELECT(ch::text)::intasval)vGROUPBYrORDERBYr)s)asrowsFROMsudoku_puzzlesWHEREid=4

LEFT改为INNER,果真不报错了,也能算出结果,但有一个漏洞,如果某行全空,left join能保留右侧为NULL的结果,inner join则不能。
将ch为’.‘替换为’0’,然后将COALESCE(SUM(1 << (val - 1)), 0)::int改为SUM(case when val>0 then 1 << (val - 1)else 0 end)就可以了。
经验算,结果正确,放到PostgreSQL 15上也能正确执行,效率相同。

后来试验其他版本,发现17.4已经修复了这个bug

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/14 12:30:55

【技术教程】RenderCV 简历即代码使用教程

RenderCV 简历即代码使用教程 RenderCV 是一个开源的 简历即代码&#xff08;CV-as-Code&#xff09; 工具&#xff0c;专为学术研究人员、工程师及需要长期维护高质量 CV 的人群设计。它将简历内容以纯 YAML 文本形式编写&#xff0c;通过 Typst 排版引擎一键生成专业 PDF&…

作者头像 李华
网站建设 2026/6/15 10:31:17

VR 建筑爆破技术与安全培训

《VR建筑爆破技术与安全培训》项目基于 Unity3D 引擎开发&#xff0c;采用 URP 渲染管线&#xff0c;集成 XR Interaction Toolkit、RayFire for Unity、RT-Voice Pro 等插件资源&#xff0c;在 PC 端环境下配合 HTC Vive 设备进行测试与实现。 本项目重点聚焦于以下三个方面&…

作者头像 李华
网站建设 2026/6/15 10:36:14

从用户故事到测试用例:一张思维导图搞定需求分析与用例设计

当用户故事遇见思维导图‌在敏捷项目中&#xff0c;“用户故事&#xff08;User Story&#xff09;”是定义需求的最小单元&#xff0c;它以“作为[角色]&#xff0c;我希望[达成目的]&#xff0c;以便[获得价值]”的格式&#xff0c;描述了用户的真实诉求。然而&#xff0c;一…

作者头像 李华
网站建设 2026/6/15 10:32:22

2025最新!10个AI论文平台测评:研究生写论文必备神器

2025最新&#xff01;10个AI论文平台测评&#xff1a;研究生写论文必备神器 2025年AI论文平台测评&#xff1a;为何值得一看&#xff1f; 随着人工智能技术的不断进步&#xff0c;AI在学术写作中的应用愈发广泛。然而&#xff0c;面对市场上琳琅满目的AI论文平台&#xff0c;…

作者头像 李华
网站建设 2026/6/14 12:20:55

游戏测试与普通软件测试的异同点

当测试遇见“第九艺术” 在数字化浪潮席卷全球的今天&#xff0c;软件测试作为保障产品质量的核心环节&#xff0c;其方法论与实践已日臻成熟。然而&#xff0c;随着游戏产业——这门被誉为“第九艺术”的领域——的爆炸式增长&#xff0c;衍生出的“游戏测试”岗位&#xff0…

作者头像 李华
网站建设 2026/6/15 10:36:16

怎么开展工业智能体研发以实现制造自主化转型?

在新一轮全球制造业变革中&#xff0c;智能体研发正成为推动工业智能化从“自动化”向“自主化”跃迁的核心力量。不同于传统依赖固定规则的控制系统&#xff0c;工业智能体&#xff08;Industrial AI Agent&#xff09;通过深度融合工业机理与前沿人工智能技术&#xff0c;实现…

作者头像 李华