Skip to content

Commit

Permalink
fixed tests
Browse files Browse the repository at this point in the history
  • Loading branch information
EpsilonPrime committed Sep 26, 2024
1 parent 6b64b76 commit bd114dc
Showing 1 changed file with 28 additions and 26 deletions.
54 changes: 28 additions & 26 deletions src/substrait/textplan/converter/InitialPlanProtoVisitor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -629,38 +629,40 @@ void InitialPlanProtoVisitor::updateLocalSchema(

// Revamp the output based on the output mapping if present.
auto mapping = getOutputMapping(relation);
if (relation.rel_type_case() == ::substrait::proto::Rel::kAggregate) {
auto generatedFieldReferenceSize =
relationData->generatedFieldReferences.size();
relationData->outputFieldReferences.clear(); // Start over.
if (!mapping.empty()) {
if (relation.rel_type_case() == ::substrait::proto::Rel::kAggregate) {
auto generatedFieldReferenceSize =
relationData->generatedFieldReferences.size();
relationData->outputFieldReferences.clear(); // Start over.
for (auto item : mapping) {
if (item < generatedFieldReferenceSize) {
relationData->outputFieldReferences.push_back(
relationData->generatedFieldReferences[item]);
} else {
// TODO -- Add support for grouping fields (needs text syntax).
errorListener_->addError(
"Asked to emit a field (" + std::to_string(item) +
") beyond what the aggregate produced.");
}
}
return;
}
for (auto item : mapping) {
if (item < generatedFieldReferenceSize) {
auto fieldReferenceSize = relationData->fieldReferences.size();
if (item < fieldReferenceSize) {
relationData->outputFieldReferences.push_back(
relationData->fieldReferences[item]);
} else if (
item <
fieldReferenceSize + relationData->generatedFieldReferences.size()) {
relationData->outputFieldReferences.push_back(
relationData->generatedFieldReferences[item]);
relationData->generatedFieldReferences[item - fieldReferenceSize]);
} else {
// TODO -- Add support for grouping fields (needs text syntax).
errorListener_->addError(
"Asked to emit a field (" + std::to_string(item) +
") beyond what the aggregate produced.");
"Asked to emit field " + std::to_string(item) +
" which isn't available.");
}
}
return;
}
for (auto item : mapping) {
auto fieldReferenceSize = relationData->fieldReferences.size();
if (item < fieldReferenceSize) {
relationData->outputFieldReferences.push_back(
relationData->fieldReferences[item]);
} else if (
item <
fieldReferenceSize + relationData->generatedFieldReferences.size()) {
relationData->outputFieldReferences.push_back(
relationData->generatedFieldReferences[item - fieldReferenceSize]);
} else {
errorListener_->addError(
"Asked to emit field " + std::to_string(item) +
" which isn't available.");
}
}
}

Expand Down

0 comments on commit bd114dc

Please sign in to comment.