SEGFAULT due to subquery in WINDOW clause
Следующий запрос с именованным окном и подзапросом в пикодате приводитк сегфолту:
SELECT
row_number() OVER win
FROM (select 1)
WINDOW win AS (
partition by (
select * from (select 1)
)
)
backtrace
Segmentation fault
code: SEGV_MAPERR
addr: 0xc0
context: 0x7267100
siginfo: 0x7267230
rax 0x0 0
rbx 0x72c0f48 120328008
rcx 0x315ff53 51773267
rdx 0x1 1
rsi 0x72c1340 120329024
rdi 0x7fc56c17fb40 140485898795840
rsp 0x7fc56c17fa40 140485898795584
rbp 0x0 0
r8 0x1 1
r9 0x72c97a0 120362912
r10 0x0 0
r11 0xa 10
r12 0x72c0f40 120328000
r13 0x7fc56c17fec0 140485898796736
r14 0x72c1568 120329576
r15 0x72bf740 120321856
rip 0x1799661 24745569
eflags 0x10246 66118
cs 0x33 51
gs 0x0 0
fs 0x0 0
cr2 0xc0 192
err 0x4 4
oldmask 0x0 0
trapno 0xe 14
Current time: 1745494189
Please file a bug at support@picodata.io
Attempting backtrace... Note: since the server has already crashed,
this may fail as well
#1 0x15c01fd in crash_signal_cb+157
#2 0x7fc58d265520 in __sigaction+80
#3 0x1799661 in selectAddSubqueryTypeInfo+81
#4 0x17b1be7 in sqlWalkSelect+119
#5 0x17b1db8 in walkExpr+376
#6 0x17b1d30 in walkExpr+240
#7 0x17b1eb0 in sqlWalkSelectExpr+64
#8 0x17b1bc0 in sqlWalkSelect+80
#9 0x179b05f in sqlSelectPrep+255
#10 0x179b21d in sqlSelect+221
#11 0x1762386 in sqlParser+14038
#12 0x17a0862 in sqlRunParser+210
#13 0x178d6eb in sql_stmt_compile+187
#14 0x1755dd3 in sql_stmt_find_or_create.constprop.0+195
#15 0x1755fd9 in sql_prepare_ext+137
#16 0x292ac42 in tarantool::sql::prepare::hf9b86553f5fafcc5+210
#17 0x2120f70 in sbroad::executor::engine::helpers::proxy::proxy_start::_$u7b$$u7b$closure$u7d$$u7d$::hb2075d707b833552+816
#18 0x270439f in _$LT$alloc..boxed..Box$LT$F$C$A$GT$$u20$as$u20$core..ops..function..FnOnce$LT$Args$GT$$GT$::call_once::hc83d0a79a3b949db+31
#19 0x21df06d in tarantool::fiber::Fyber$LT$F$C$T$GT$::trampoline_for_ffi::ha422f8516fda1259+477
#20 0x1664b71 in fiber_cxx_invoke(int (*)(__vfish: Job 1, 'cargo r -- run -i --pg-listen 1…' terminated by signal SIGABRT (Abort)
Локальный sql совпадает с запросом в пикодате:
picodata> box.execute([[SELECT row_number () OVER win as "col_1" FROM (SELECT ? as "col_1") WINDOW win AS (PARTITION BY (SELECT * FROM (SELECT ? as "col_1")))]])
Segmentation fault