From 8f4e9228b21c2478ee2a3a7016eb44d1dc237e16 Mon Sep 17 00:00:00 2001 From: drrtuy Date: Tue, 29 Jul 2025 12:48:41 +0000 Subject: [PATCH] feat(rbo,rules,QA): SC::setSimpleColumn does not have more than 1 SC in its SimpleColumn list. --- dbcon/execplan/calpontselectexecutionplan.cpp | 12 +++--------- dbcon/execplan/simplecolumn.cpp | 9 ++++++++- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/dbcon/execplan/calpontselectexecutionplan.cpp b/dbcon/execplan/calpontselectexecutionplan.cpp index 12774e552..9114b8cdf 100644 --- a/dbcon/execplan/calpontselectexecutionplan.cpp +++ b/dbcon/execplan/calpontselectexecutionplan.cpp @@ -1018,18 +1018,12 @@ execplan::SCSEP CalpontSelectExecutionPlan::cloneForTableWORecursiveSelects( for (const auto& rc : fReturnedCols) { rc->setSimpleColumnList(); - for (auto* simpleColumn : rc->simpleColumnList()) + for (auto* sc : rc->simpleColumnList()) { - // TODO check that is columnstore is correct - // use RC::singleTable here - execplan::CalpontSystemCatalog::TableAliasName rcTable( - simpleColumn->schemaName(), simpleColumn->tableName(), simpleColumn->tableAlias(), "", - simpleColumn->isColumnStore()); - if (!targetTableAlias.weakerEq(rcTable)) + if (targetTableAlias.weakerEq(*sc->singleTable())) { - continue; + newReturnedCols.push_back(SRCP(rc->clone())); } - newReturnedCols.push_back(SRCP(rc->clone())); } } if (newReturnedCols.empty()) diff --git a/dbcon/execplan/simplecolumn.cpp b/dbcon/execplan/simplecolumn.cpp index 800792319..c100638ae 100644 --- a/dbcon/execplan/simplecolumn.cpp +++ b/dbcon/execplan/simplecolumn.cpp @@ -749,7 +749,14 @@ void SimpleColumn::evaluate(Row& row, bool& isNull) void SimpleColumn::setSimpleColumnList() { - fSimpleColumnList.push_back(this); + if (fSimpleColumnList.empty()) + { + fSimpleColumnList.push_back(this); + } + else + { + fSimpleColumnList.back() = this; + } } std::optional sameTableCheck(std::vector simpleColumnList)