[Bug](pipeline) fix distributionColumnIds not updated correct when outputColumnUnique… (#19704)
fix distributionColumnIds not updated correct when outputColumnUnique
This commit is contained in:
@ -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++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user