Segmentation fault on a query from table expression

Alexander Shestakov shura.shestakov at gmail.com
Tue Jan 14 12:12:40 CET 2014


Hi,
I am running MonetDB Database Server Toolkit v1.1 (Feb2013-SP6) ,

I have a table DailyData defined as follows.

create table DailyData (
sym varchar(32),
businessdate date,
closePrice float,
adjustedClosePrice float,
openingPrice float,
accVol float,
unique(businessdate, sym)
);


I make the following query.

with dd as (select * from DailyData where businessdate > '2013-06-01'),
r as (select t.businessdate, t.sym, 1 - t.adjustedcloseprice /
y.adjustedcloseprice as ret from dd t
left outer join dd y on t.businessdate = y.businessdate + (interval '1'
day) and t.sym = y.sym),
v as (select sym, stddev_samp(ret) as volatility from r group by sym)
select * from v where v.sym like '%.L' limit 100;


It results in a segmentation fault:

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7f5f17023700 (LWP 25178)]
0x0000003ee9327a9a in __strcmp_sse42 () from /lib64/libc.so.6
(gdb) where
#0  0x0000003ee9327a9a in __strcmp_sse42 () from /lib64/libc.so.6
#1  0x00007f6f2d4ef6f8 in rel_use_index (changes=<value optimized out>,
sql=0x7f5f08005470, rel=0x7f5f0850aa70) at rel_optimizer.c:4829
#2  0x00007f6f2d4ea225 in rewrite (sql=0x7f5f08005470, rel=0x7f5f0850aa70,
rewriter=0x7f6f2d4ef610 <rel_use_index>, has_changes=0x7f5f17022cac) at
rel_optimizer.c:6106
#3  0x00007f6f2d4ea2bc in rewrite (sql=0x7f5f08005470, rel=0x7f5f0850cb40,
rewriter=0x7f6f2d4ef610 <rel_use_index>, has_changes=0x7f5f17022cac) at
rel_optimizer.c:6093
#4  0x00007f6f2d4ea2bc in rewrite (sql=0x7f5f08005470, rel=0x7f5f0850ec30,
rewriter=0x7f6f2d4ef610 <rel_use_index>, has_changes=0x7f5f17022cac) at
rel_optimizer.c:6093
#5  0x00007f6f2d4ea2bc in rewrite (sql=0x7f5f08005470, rel=0x7f5f0850ef50,
rewriter=0x7f6f2d4ef610 <rel_use_index>, has_changes=0x7f5f17022cac) at
rel_optimizer.c:6093
#6  0x00007f6f2d4ea2bc in rewrite (sql=0x7f5f08005470, rel=0x7f5f08512a90,
rewriter=0x7f6f2d4ef610 <rel_use_index>, has_changes=0x7f5f17022cac) at
rel_optimizer.c:6093
#7  0x00007f6f2d4ea2bc in rewrite (sql=0x7f5f08005470, rel=0x7f5f0850feb0,
rewriter=0x7f6f2d4ef610 <rel_use_index>, has_changes=0x7f5f17022cac) at
rel_optimizer.c:6093
#8  0x00007f6f2d4ea2bc in rewrite (sql=0x7f5f08005470, rel=0x7f5f085101c0,
rewriter=0x7f6f2d4ef610 <rel_use_index>, has_changes=0x7f5f17022cac) at
rel_optimizer.c:6093
#9  0x00007f6f2d4ecf58 in _rel_optimizer (sql=0x7f5f08005470, rel=<value
optimized out>, level=0) at rel_optimizer.c:6278
#10 0x00007f6f2d484369 in sql_symbol2relation (c=0x7f5f08005470, sym=<value
optimized out>) at sql.mx:1755
#11 0x00007f6f2d454b2f in SQLparser (c=0x7f6f2df49308) at
sql_scenario.c:1708
#12 0x00007f6f352ecdd3 in runPhase (c=0x7f6f2df49308) at mal_scenario.c:522
#13 runScenarioBody (c=0x7f6f2df49308) at mal_scenario.c:558
#14 0x00007f6f352ecf1f in runScenario (c=0x7f6f2df49308) at
mal_scenario.c:586
#15 0x00007f6f352ed778 in MSserveClient (dummy=0x7f6f2df49308) at
mal_session.c:446
#16 0x0000003ee9a07851 in start_thread () from /lib64/libpthread.so.0
#17 0x0000003ee92e890d in clone () from /lib64/libc.so.6


Apparently at rel_optimizer.c:4829 strcmp(exp_relname(nre) returns NULL
which is not checked.

If I rewrite the query in the following way it works if not very fast.

with r as (select t.businessdate, t.sym, 1 - t.adjustedcloseprice /
y.adjustedcloseprice as ret from DailyData t
 left outer join DailyData y on t.businessdate = y.businessdate + (interval
'1' day) and t.sym = y.sym
 where t.businessdate > '2013-06-01'),
v as (select sym, stddev_samp(ret) as volatility from r group by sym)
select * from v where v.sym like '%.L' limit 100;

Regards,
Alex Shestakov.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.monetdb.org/pipermail/developers-list/attachments/20140114/0b6fa608/attachment.html>


More information about the developers-list mailing list