You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-07-29 08:21:15 +03:00
MCOL-1188 assertion 'fColumn.get() && fSub && fFunc' failed, ... MySQL server crashed.
The problem was in processing a subquery in the where clause that was categorized as a CACHE_ITEM in the parse tree. The fix involved how we walk the parse tree in gp_walk().
This commit is contained in:
@ -4096,15 +4096,17 @@ void gp_walk(const Item *item, void *arg)
|
|||||||
if (itype == Item::FUNC_ITEM && ((Item_func*)item)->functype() == Item_func::XOR_FUNC )
|
if (itype == Item::FUNC_ITEM && ((Item_func*)item)->functype() == Item_func::XOR_FUNC )
|
||||||
itype = Item::COND_ITEM;
|
itype = Item::COND_ITEM;
|
||||||
|
|
||||||
if(item->type() == Item::CACHE_ITEM)
|
|
||||||
{
|
|
||||||
item = ((Item_cache*)item)->get_example();
|
|
||||||
itype = item->type();
|
|
||||||
isCached = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (itype)
|
switch (itype)
|
||||||
{
|
{
|
||||||
|
case Item::CACHE_ITEM:
|
||||||
|
{
|
||||||
|
// The item or condition is cached as per MariaDB server view but
|
||||||
|
// for InfiniDB it need to be executed.
|
||||||
|
// MCOL-1188 and
|
||||||
|
Item* orig_item = ((Item_cache*)item)->get_example();
|
||||||
|
orig_item->traverse_cond(gp_walk, gwip, Item::POSTFIX);
|
||||||
|
break;
|
||||||
|
}
|
||||||
case Item::FIELD_ITEM:
|
case Item::FIELD_ITEM:
|
||||||
{
|
{
|
||||||
Item_field* ifp = (Item_field*)item;
|
Item_field* ifp = (Item_field*)item;
|
||||||
|
Reference in New Issue
Block a user