1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-07-30 19:23:07 +03:00

Merge pull request #1825 from tntnatbry/MCOL-4617

MCOL-4617 Move in-to-exists predicate creation and injection into the engine.
This commit is contained in:
Roman Nozdrin
2021-05-07 13:33:02 +03:00
committed by GitHub
6 changed files with 1373 additions and 186 deletions

View File

@ -158,6 +158,12 @@ struct gp_walk_info
bool isGroupByHandler;
// MCOL-4617 The below 2 fields are used for in-to-exists
// predicate creation and injection. See usage in InSub::transform()
// and buildInToExistsFilter()
execplan::ReturnedColumn* inSubQueryLHS;
Item* inSubQueryLHSItem;
gp_walk_info() : sessionid(0),
fatalParseError(false),
condPush(false),
@ -177,7 +183,9 @@ struct gp_walk_info
inCaseStmt(false),
cs_vtable_is_update_with_derive(false),
cs_vtable_impossible_where_on_union(false),
isGroupByHandler(false)
isGroupByHandler(false),
inSubQueryLHS(nullptr),
inSubQueryLHSItem(nullptr)
{}
~gp_walk_info() {}
@ -385,6 +393,13 @@ execplan::ParseTree* setDerivedFilter(THD* thd, execplan::ParseTree*& n,
std::map<std::string, execplan::ParseTree*>& obj,
execplan::CalpontSelectExecutionPlan::SelectList& derivedTbList);
void derivedTableOptimization(THD* thd, execplan::SCSEP& csep);
bool buildEqualityPredicate(execplan::ReturnedColumn* lhs,
execplan::ReturnedColumn* rhs,
gp_walk_info* gwip,
boost::shared_ptr<execplan::Operator>& sop,
const Item_func::Functype& funcType,
const std::vector<Item*>& itemList,
bool isInSubs = false);
#ifdef DEBUG_WALK_COND
void debug_walk(const Item* item, void* arg);