antonmks / Alenka

GPU database engine
Other
1.17k stars 120 forks source link

Bad filter column causes a segfault #54

Closed Randolph42 closed 10 years ago

Randolph42 commented 10 years ago

Poorly written filter expressions cause segfaults rather than an error. eg: unnamed_A := FILTER orders BY o_orderkeyxxxxxxx <22 ; unnamed_A2 := SELECT o_orderkey AS o_orderkey FROM unnamed_A; DISPLAY unnamed_A2 USING ('|');

results in: Segmentation fault (core dumped)

gdb backtrace shows: (gdb) bt

0 0x000000000069f860 in host_compare(long long*, long long, long long) ()

1 0x00000000006ac030 in zone_map_check(std::queue<std::basic_string<char, std::char_traits, std::allocator >, std::deque<std::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::basic_string<char, std::char_traits, std::allocator > > > >, std::queue<std::basic_string<char, std::char_traits, std::allocator >, std::deque<std::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::basic_string<char, std::char_traits, std::allocator > > > >, std::queue<long long, std::deque<long long, std::allocator > >, std::queue<double, std::deque<double, std::allocator > >, CudaSet*, unsigned int) ()

2 0x00000000006c447d in filterop(char, char_, unsigned int) ()

3 0x00000000006c3d74 in copyColumns(CudaSet*, std::queue<std::basic_string<char, std::char_traits, std::allocator >, std::deque<std::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::basic_string<char, std::char_traits, std::allocator > > > >, unsigned int, unsigned long&, bool, bool) ()

4 0x00000000004204a5 in emitselect(char, char_, int) ()

5 0x000000000042c45c in yyparse() ()

antonmks commented 10 years ago

fixed.

Randolph42 commented 10 years ago

Thanks