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)