news 2026/1/9 10:39:00

修改一个触发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/1/6 6:03:33

互联网大厂Java面试:从Spring Boot到微服务架构的场景应用

场景描述 在某个阳光明媚的下午&#xff0c;超好吃进入了一家知名互联网大厂的面试间。面试官微笑着坐在对面&#xff0c;他手中拿着简历&#xff0c;准备开始今天的面试。面试官&#xff1a;"你好&#xff0c;超好吃。我们今天会主要围绕Java技术栈进行一些讨论。首先&am…

作者头像 李华
网站建设 2026/1/5 9:55:41

openssh-master代码分析-sc25519.c

欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 👇热门内容👇 python使用案例与应用_安城安的博客-CSDN博客 软硬件教学_安城安的博客-CSDN博客 Orbslam3&Vinsfusion_安城安的博客-CSDN博客 网络安全_安城安的博客-CSDN博客 教程_安城安的博客-CSDN博客 python办公…

作者头像 李华
网站建设 2026/1/3 15:05:35

Web7-头等舱

查看源代码&#xff0c;没有什么东西&#xff08;1&#xff09;方法一&#xff1a;检查—》网络&#xff0c;看到这个网页有两个文件&#xff0c;分别查看在一个文件消息头中看到flag所以题目“头等舱”&#xff0c;去消息头中找flag&#xff0c;哈哈。 &#xff08;2&#xff…

作者头像 李华
网站建设 2026/1/9 4:19:22

物联网(IoT)测试的挑战:硬件、软件与网络的结合

一个交织复杂性的新战场 对于软件测试从业者而言&#xff0c;物联网&#xff08;IoT&#xff09;领域的崛起&#xff0c;意味着测试的疆域已从传统的纯软件或信息系统&#xff0c;急剧扩展到物理世界。一个典型的IoT系统&#xff0c;是由感知层硬件&#xff08;如传感器、执行…

作者头像 李华
网站建设 2026/1/7 15:49:20

除了 Tableau 和 Power BI,企业还有哪些高性价比的 BI 平台新选择?

引言&#xff1a;国际 BI 工具的本土化挑战与市场现状 企业在应用 Tableau、Power BI 等国际主流 BI 工具时&#xff0c;常面临与本土 IT 环境不兼容的困境。例如&#xff0c;连接国产数据库频繁出现兼容性错误&#xff0c;或业务人员因依赖 IT 团队编写 SQL 而无法及时获取分…

作者头像 李华