Skip to content

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