[fix](nereids)don't normalize column name for base index (#26476)

This commit is contained in:
starocean999
2023-11-08 20:45:58 +08:00
committed by GitHub
parent d0960bac56
commit d749d99fe2
2 changed files with 16 additions and 11 deletions

View File

@ -30,7 +30,6 @@ import org.apache.doris.nereids.parser.NereidsParser;
import org.apache.doris.nereids.rules.Rule;
import org.apache.doris.nereids.rules.RuleType;
import org.apache.doris.nereids.rules.rewrite.RewriteRuleFactory;
import org.apache.doris.nereids.rules.rewrite.mv.AbstractSelectMaterializedIndexRule.SlotContext;
import org.apache.doris.nereids.trees.expressions.Alias;
import org.apache.doris.nereids.trees.expressions.Cast;
import org.apache.doris.nereids.trees.expressions.ExprId;
@ -940,6 +939,7 @@ public class SelectMaterializedIndexWithAggregate extends AbstractSelectMaterial
public CheckContext(LogicalOlapScan scan, long indexId) {
this.scan = scan;
boolean isBaseIndex = indexId == scan.getTable().getBaseIndexId();
Supplier<Map<String, Column>> supplier = () -> Maps.newTreeMap(String.CASE_INSENSITIVE_ORDER);
@ -947,15 +947,20 @@ public class SelectMaterializedIndexWithAggregate extends AbstractSelectMaterial
Map<Boolean, Map<String, Column>> baseNameToColumnGroupingByIsKey = scan.getTable()
.getSchemaByIndexId(indexId).stream()
.collect(Collectors.groupingBy(Column::isKey,
Collectors.toMap(c -> normalizeName(parseMvColumnToSql(c.getName())), Function.identity(),
(v1, v2) -> v1, supplier)));
Collectors.toMap(
c -> isBaseIndex ? c.getName()
: normalizeName(parseMvColumnToSql(c.getName())),
Function.identity(), (v1, v2) -> v1, supplier)));
Map<Boolean, Map<String, Column>> mvNameToColumnGroupingByIsKey = scan.getTable()
.getSchemaByIndexId(indexId).stream()
.collect(Collectors.groupingBy(Column::isKey,
Collectors.toMap(
c -> normalizeName(parseMvColumnToMvName(c.getNameWithoutMvPrefix(),
c.isAggregated() ? Optional.of(c.getAggregationType().name())
: Optional.empty())),
c -> isBaseIndex ? c.getName()
: normalizeName(parseMvColumnToMvName(
c.getNameWithoutMvPrefix(),
c.isAggregated()
? Optional.of(c.getAggregationType().name())
: Optional.empty())),
Function.identity(), (v1, v2) -> v1, supplier)));
this.keyNameToColumn = mvNameToColumnGroupingByIsKey.getOrDefault(true,