1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-10-31 18:30:33 +03:00

chore(rbo): simplistic rulle application logging.

This commit is contained in:
drrtuy
2025-08-08 15:26:12 +00:00
committed by Leonid Fedorov
parent bbac8e70a1
commit fa76344cfc
3 changed files with 9 additions and 4 deletions

View File

@@ -7478,7 +7478,7 @@ int cs_get_select_plan(ha_columnstore_select_handler* handler, THD* thd, SCSEP&
derivedTableOptimization(&gwi, csep); derivedTableOptimization(&gwi, csep);
{ {
optimizer::RBOptimizerContext ctx(gwi, *thd); optimizer::RBOptimizerContext ctx(gwi, *thd, csep->traceOn());
bool csepWasOptimized = optimizer::optimizeCSEP(*csep, ctx); bool csepWasOptimized = optimizer::optimizeCSEP(*csep, ctx);
if (csep->traceOn() && csepWasOptimized) if (csep->traceOn() && csepWasOptimized)
{ {

View File

@@ -55,11 +55,11 @@ bool optimizeCSEP(execplan::CalpontSelectExecutionPlan& root, optimizer::RBOptim
if (get_unstable_optimizer(&ctx.thd)) if (get_unstable_optimizer(&ctx.thd))
{ {
optimizer::Rule parallelCES{"parallelCES", optimizer::parallelCESFilter, optimizer::applyParallelCES}; optimizer::Rule parallelCES{"parallel_ces", optimizer::parallelCESFilter, optimizer::applyParallelCES};
rules.push_back(parallelCES); rules.push_back(parallelCES);
} }
optimizer::Rule predicatePushdown{"predicatePushdown", optimizer::predicatePushdownFilter, optimizer::Rule predicatePushdown{"predicate_pushdown", optimizer::predicatePushdownFilter,
optimizer::applyPredicatePushdown}; optimizer::applyPredicatePushdown};
rules.push_back(predicatePushdown); rules.push_back(predicatePushdown);
@@ -76,6 +76,10 @@ bool Rule::apply(execplan::CalpontSelectExecutionPlan& root, optimizer::RBOptimi
{ {
changedThisRound = walk(root, ctx); changedThisRound = walk(root, ctx);
hasBeenApplied |= changedThisRound; hasBeenApplied |= changedThisRound;
if (ctx.logRules)
{
std::cout << "MCS RBO: " << name << " has been applied this round." << std::endl;
}
} while (changedThisRound && !applyOnlyOnce); } while (changedThisRound && !applyOnlyOnce);
return hasBeenApplied; return hasBeenApplied;

View File

@@ -32,12 +32,13 @@ namespace optimizer {
class RBOptimizerContext { class RBOptimizerContext {
public: public:
RBOptimizerContext() = delete; RBOptimizerContext() = delete;
RBOptimizerContext(cal_impl_if::gp_walk_info& walk_info, THD& thd) : gwi(walk_info), thd(thd) {} RBOptimizerContext(cal_impl_if::gp_walk_info& walk_info, THD& thd, bool logRules) : gwi(walk_info), thd(thd), logRules(logRules) {}
// gwi lifetime should be longer than optimizer context. // gwi lifetime should be longer than optimizer context.
// In plugin runtime this is always true. // In plugin runtime this is always true.
cal_impl_if::gp_walk_info& gwi; cal_impl_if::gp_walk_info& gwi;
THD& thd; THD& thd;
uint64_t uniqueId {0}; uint64_t uniqueId {0};
bool logRules {false};
}; };
struct Rule struct Rule