[Bug](pipeline) fix distributionColumnIds not updated correct when outputColumnUnique… (#19704)

fix distributionColumnIds not updated correct when outputColumnUnique
This commit is contained in:
Pxl
2023-05-17 00:13:10 +08:00
committed by GitHub
parent a1b1aff0ee
commit 7f73749b88
5 changed files with 42 additions and 6 deletions

View File

@ -200,18 +200,18 @@ public class OlapScanNode extends ScanNode {
olapTable = (OlapTable) desc.getTable();
distributionColumnIds = Sets.newTreeSet();
Set<String> distColumnName = olapTable != null
? olapTable.getDistributionColumnNames() : Sets.newTreeSet();
int columnId = 0;
Set<String> distColumnName = getDistributionColumnNames();
// use for Nereids to generate uniqueId set for inverted index to avoid scan unnecessary big size column
int columnId = 0;
for (SlotDescriptor slotDescriptor : desc.getSlots()) {
if (slotDescriptor.getColumn() != null) {
outputColumnUniqueIds.add(slotDescriptor.getColumn().getUniqueId());
if (distColumnName.contains(slotDescriptor.getColumn().getName().toLowerCase())) {
distributionColumnIds.add(columnId);
}
columnId++;
}
columnId++;
}
}
@ -1506,13 +1506,28 @@ public class OlapScanNode extends ScanNode {
cardinality = cardinality == -1 ? 0 : cardinality;
}
Set<String> getDistributionColumnNames() {
return olapTable != null
? olapTable.getDistributionColumnNames()
: Sets.newTreeSet();
}
@Override
public void updateRequiredSlots(PlanTranslatorContext context,
Set<SlotId> requiredByProjectSlotIdSet) {
outputColumnUniqueIds.clear();
distributionColumnIds.clear();
Set<String> distColumnName = getDistributionColumnNames();
int columnId = 0;
for (SlotDescriptor slot : context.getTupleDesc(this.getTupleId()).getSlots()) {
if (requiredByProjectSlotIdSet.contains(slot.getId()) && slot.getColumn() != null) {
outputColumnUniqueIds.add(slot.getColumn().getUniqueId());
if (distColumnName.contains(slot.getColumn().getName().toLowerCase())) {
distributionColumnIds.add(columnId);
}
columnId++;
}
}
}