news 2026/5/15 11:49:22

duckdb数据库CROSS JOIN LATERAL 中使用 EXISTS子查询的一个bug

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
duckdb数据库CROSS JOIN LATERAL 中使用 EXISTS子查询的一个bug

以下代码片段改编自能够在PostgreSQL中正常执行的SQL。只把pi部分的/改写成了//。

WITHRECURSIVE d(d)ASMATERIALIZED(SELECTdfromgenerate_series(1,9)t(d)),pi(pos,r,c,bx)ASMATERIALIZED(SELECTpos,((pos-1)// 9) + 1 AS r,((pos-1)%9)+1ASc,((pos-1)// 9) // 3 * 3 + ((pos - 1) % 9) // 3 + 1 AS bxFROMgenerate_series(1,81)ASt(pos)),cp(id,pz,bs)AS(SELECTid,puzzle,regexp_split_to_array(regexp_replace(regexp_replace(puzzle,'[\r\n\s]','','g'),'\?','0','g'),'')::integer[]ASbsFROM(SELECT3ASid,E'800000000003600000070090200050007000000045700000100030001000068008500010090000400'ASpuzzle)sudoku9_9),s1(id,flag,bs,bse,i)ASMATERIALIZED(SELECTid,'0',bs,ARRAY[]::integer[][],0ASiFROMcpUNIONALLSELECTs1.id,n.flag,n.bs,n.bse,s1.i+1ASiFROMs1 s1CROSSJOINLATERAL(witheb(pos,r,c,bx,v)AS(SELECTpi.pos,pi.r,pi.c,pi.bx,1FROMpi),cd(pos,r,c,bx,d)AS(SELECTe.pos,e.r,e.c,e.bx,d.dFROMeb eCROSSJOINdWHEREe.v=0ANDNOTEXISTS(SELECT1FROMeb e2WHEREe2.r=e.rANDe2.v=d.d)ANDNOTEXISTS(SELECT1FROMeb e2WHEREe2.c=e.cANDe2.v=d.d)ANDNOTEXISTS(SELECT1FROMeb e2WHEREe2.bx=e.bxANDe2.v=d.d))/* , cd(pos, r, c, bx, d) AS ( SELECT e.pos, e.r, e.c, e.bx, d.d FROM eb e CROSS JOIN d LEFT JOIN eb e2 ON e2.r = e.r AND e2.v = d.d LEFT JOIN eb e3 ON e3.c = e.c AND e3.v = d.d LEFT JOIN eb e4 ON e4.bx = e.bx AND e4.v = d.d WHERE e.v = 0 AND e2.r IS NULL AND e3.r IS NULL AND e4.r IS NULL )*/SELECT'1'flag,bs,s1.bsefromeblimit1)nwheres1.i<3)select*froms1;

执行报错

Invalid Error: vector::_M_range_check: __n (which is 2) >= this->size() (which is 2)

即使只有一个NOT EXISTS 语句,也会报同样错误。
将cd子查询改成注释块中的写法则能执行成功。
如果cd和eb不在JOIN LATERAL中,而是单独的CTE子查询,也不报错。

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

Qwen3-4B-Instruct-2507入门必看:常见误区避坑指南

Qwen3-4B-Instruct-2507入门必看&#xff1a;常见误区避坑指南 1. 引言 随着大模型在推理、编程、多语言理解等任务中的广泛应用&#xff0c;Qwen系列持续迭代优化。最新发布的 Qwen3-4B-Instruct-2507 是对前代非思考模式模型的重要升级&#xff0c;显著提升了通用能力与长上…

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

Zotero Style插件仿写文章生成Prompt

Zotero Style插件仿写文章生成Prompt 【免费下载链接】zotero-style zotero-style - 一个 Zotero 插件&#xff0c;提供了一系列功能来增强 Zotero 的用户体验&#xff0c;如阅读进度可视化和标签管理&#xff0c;适合研究人员和学者。 项目地址: https://gitcode.com/GitHub…

作者头像 李华
网站建设 2026/5/9 13:56:16

当系统复杂度不断上升时,为什么“能跑就行”的代码终将成为负担

在很多技术项目的早期阶段&#xff0c;我们都听过一句话&#xff1a;先把功能做出来&#xff0c;能跑就行。这句话在某些场景下并没有错。原型验证、紧急需求、短期项目&#xff0c;速度往往比“优雅”更重要。但问题在于&#xff0c;很多项目并没有停留在“短期”&#xff0c;…

作者头像 李华
网站建设 2026/5/12 2:53:38

零基础入门智能文档处理:OpenDataLab MinerU保姆级教程

零基础入门智能文档处理&#xff1a;OpenDataLab MinerU保姆级教程 1. 引言&#xff1a;为什么需要智能文档理解&#xff1f; 在日常办公、学术研究和数据工程中&#xff0c;我们经常面临大量非结构化文档的处理需求——PDF 报告、扫描件、PPT 截图、科研论文中的图表等。传统…

作者头像 李华
网站建设 2026/4/25 15:56:08

SpringBoot集成DeepSeek-OCR实战|高效识别表格数据

SpringBoot集成DeepSeek-OCR实战&#xff5c;高效识别表格数据 1. 背景与业务场景 在企业级应用中&#xff0c;大量纸质单据如采购订单、发票、入库单等仍需人工录入系统。这种方式不仅效率低下&#xff0c;还容易因人为因素导致数据错误。随着AI技术的发展&#xff0c;光学字…

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

PingFangSC字体:简单三步实现专业级跨平台字体统一方案

PingFangSC字体&#xff1a;简单三步实现专业级跨平台字体统一方案 【免费下载链接】PingFangSC PingFangSC字体包文件、苹果平方字体文件&#xff0c;包含ttf和woff2格式 项目地址: https://gitcode.com/gh_mirrors/pi/PingFangSC 还在为不同设备上的字体显示效果不一致…

作者头像 李华