news 2026/2/14 8:39:04

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/2/8 6:44:29

从文本到语音:Supertonic如何赋能音乐教育场景

从文本到语音&#xff1a;Supertonic如何赋能音乐教育场景 1. 引言&#xff1a;音乐教育中的语言与表达挑战 在现代音乐教育中&#xff0c;学生不仅需要掌握演奏技巧和乐理知识&#xff0c;还需理解大量专业术语——这些术语大多源自意大利语、德语或法语&#xff0c;如“Ada…

作者头像 李华
网站建设 2026/2/12 0:57:08

如何使用Arduino实现串口通信:新手教程

从零开始玩转Arduino串口通信&#xff1a;不只是“Hello World”的深度实践你有没有过这样的经历&#xff1f;写好代码&#xff0c;上传到Arduino&#xff0c;打开串口监视器&#xff0c;满心期待地看到输出——结果屏幕上一堆乱码&#xff0c;像外星文一样闪烁着。或者更糟&am…

作者头像 李华
网站建设 2026/2/12 15:22:48

eSPI协议命令集解析:实战案例解析READ/WRITE操作

eSPI协议实战解析&#xff1a;深入掌握READ与WRITE操作的底层逻辑 在现代PC和服务器系统设计中&#xff0c;一个看似不起眼却至关重要的通信“毛细血管”正在悄然替代老旧的LPC总线——它就是 eSPI&#xff08;Enhanced Serial Peripheral Interface&#xff09; 。作为Intel…

作者头像 李华
网站建设 2026/2/9 16:01:31

亲测麦橘超然Flux镜像,中低显存设备实现高质量出图

亲测麦橘超然Flux镜像&#xff0c;中低显存设备实现高质量出图 1. 引言&#xff1a;AI绘画落地边缘设备的现实挑战 随着生成式AI技术的快速演进&#xff0c;高质量图像生成已不再局限于高性能计算集群。然而&#xff0c;主流扩散模型如Stable Diffusion或FLUX系列通常需要16G…

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

Qwen3-VL-2B应用案例:智能相册情感分析功能实现

Qwen3-VL-2B应用案例&#xff1a;智能相册情感分析功能实现 1. 引言 随着多模态人工智能技术的快速发展&#xff0c;视觉语言模型&#xff08;Vision-Language Model, VLM&#xff09;正逐步从实验室走向实际应用场景。传统的图像分类或标签系统仅能识别物体类别&#xff0c;…

作者头像 李华
网站建设 2026/2/12 10:06:12

模型响应慢?DeepSeek-R1-Distill-Qwen-1.5B GPU利用率提升实战

模型响应慢&#xff1f;DeepSeek-R1-Distill-Qwen-1.5B GPU利用率提升实战 1. 背景与问题分析 在部署轻量级大模型进行实际推理服务时&#xff0c;模型响应延迟高、GPU利用率低是常见的性能瓶颈。尤其在使用如 DeepSeek-R1-Distill-Qwen-1.5B 这类经过知识蒸馏优化的1.5B级别…

作者头像 李华