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
Add handling of subquery cach item types. This is not working, but...
This commit is contained in:
@ -422,6 +422,12 @@ void debug_walk(const Item *item, void *arg)
|
||||
debug_walk(row->element_index(i), 0);
|
||||
break;
|
||||
}
|
||||
case Item::EXPR_CACHE_ITEM:
|
||||
{
|
||||
cout << "Expr Cache Item" << endl;
|
||||
((Item_cache_wrapper*)item)->get_orig_item()->traverse_cond(debug_walk, arg, Item::POSTFIX);
|
||||
break;
|
||||
}
|
||||
case Item::WINDOW_FUNC_ITEM:
|
||||
{
|
||||
cout << "Window Function Item" << endl;
|
||||
@ -2029,6 +2035,13 @@ ReturnedColumn* buildReturnedColumn(Item* item, gp_walk_info& gwi, bool& nonSupp
|
||||
}
|
||||
break;
|
||||
}
|
||||
case Item::EXPR_CACHE_ITEM:
|
||||
{
|
||||
// TODO: item is a Item_cache_wrapper
|
||||
printf("EXPR_CACHE_ITEM in buildReturnedColumn\n");
|
||||
cout << "EXPR_CACHE_ITEM in buildReturnedColumn" << endl;
|
||||
break;
|
||||
}
|
||||
case Item::WINDOW_FUNC_ITEM:
|
||||
{
|
||||
return buildWindowFunctionColumn(item, gwi, nonSupport);
|
||||
@ -3468,7 +3481,6 @@ void gp_walk(const Item *item, void *arg)
|
||||
{
|
||||
gp_walk_info* gwip = reinterpret_cast<gp_walk_info*>(arg);
|
||||
idbassert(gwip);
|
||||
|
||||
//Bailout...
|
||||
if (gwip->fatalParseError) return;
|
||||
|
||||
@ -3948,6 +3960,11 @@ void gp_walk(const Item *item, void *arg)
|
||||
gwip->rcWorkStack.push(rowCol);
|
||||
break;
|
||||
}
|
||||
case Item::EXPR_CACHE_ITEM:
|
||||
{
|
||||
((Item_cache_wrapper*)item)->get_orig_item()->traverse_cond(gp_walk, arg, Item::POSTFIX);
|
||||
break;
|
||||
}
|
||||
case Item::WINDOW_FUNC_ITEM:
|
||||
{
|
||||
gwip->hasWindowFunc = true;
|
||||
@ -4072,7 +4089,7 @@ void parse_item (Item *item, vector<Item_field*>& field_vec, bool& hasNonSupport
|
||||
}
|
||||
else
|
||||
{
|
||||
//cout << "UNKNOWN REF Item" << endl;
|
||||
cout << "UNKNOWN REF Item" << endl;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -4093,10 +4110,19 @@ void parse_item (Item *item, vector<Item_field*>& field_vec, bool& hasNonSupport
|
||||
parse_item(row->element_index(i), field_vec, hasNonSupportItem, parseInfo);
|
||||
break;
|
||||
}
|
||||
case Item::EXPR_CACHE_ITEM:
|
||||
{
|
||||
// item is a Item_cache_wrapper. Shouldn't get here.
|
||||
printf("EXPR_CACHE_ITEM in parse_item\n");
|
||||
string parseErrorText = IDBErrorInfo::instance()->errorMsg(ERR_NON_SUPPORT_SUB_QUERY_TYPE);
|
||||
setError(item->thd(), ER_CHECK_NOT_IMPLEMENTED, parseErrorText);
|
||||
break;
|
||||
}
|
||||
case Item::WINDOW_FUNC_ITEM:
|
||||
parseInfo |= AF_BIT;
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -4954,6 +4980,14 @@ int getSelectPlan(gp_walk_info& gwi, SELECT_LEX& select_lex, SCSEP& csep, bool i
|
||||
setError(gwi.thd, ER_CHECK_NOT_IMPLEMENTED, gwi.parseErrorText, gwi);
|
||||
return ER_CHECK_NOT_IMPLEMENTED;
|
||||
}
|
||||
case Item::EXPR_CACHE_ITEM:
|
||||
{
|
||||
printf("EXPR_CACHE_ITEM in getSelectPlan\n");
|
||||
gwi.fatalParseError = true;
|
||||
gwi.parseErrorText = IDBErrorInfo::instance()->errorMsg(ERR_UNKNOWN_COL);
|
||||
setError(gwi.thd, ER_CHECK_NOT_IMPLEMENTED, gwi.parseErrorText, gwi);
|
||||
return ER_CHECK_NOT_IMPLEMENTED;
|
||||
}
|
||||
case Item::WINDOW_FUNC_ITEM:
|
||||
{
|
||||
SRCP srcp(buildWindowFunctionColumn(item, gwi, gwi.fatalParseError));
|
||||
|
Reference in New Issue
Block a user