[chore](nereids) Added compatibility with mysql alias filter (#39738)
qt_filter_select4 """
select * from filter_alias_test.test b where filter_alias_test.b.id = 1;
"""
qt_filter_select5 """
select * from internal.filter_alias_test.test b where internal.filter_alias_test.b.id = 1;
"""
This commit is contained in:
@ -32,9 +32,11 @@ import org.apache.doris.nereids.util.Utils;
|
||||
import com.google.common.base.Preconditions;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Sets;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@ -90,8 +92,19 @@ public class LogicalSubQueryAlias<CHILD_TYPE extends Plan> extends LogicalUnary<
|
||||
} else {
|
||||
columnAlias = originSlot.getName();
|
||||
}
|
||||
List<String> originQualifier = originSlot.getQualifier();
|
||||
|
||||
ArrayList<String> newQualifier = Lists.newArrayList(originQualifier);
|
||||
if (newQualifier.size() >= qualifier.size()) {
|
||||
for (int j = 0; j < qualifier.size(); j++) {
|
||||
newQualifier.set(newQualifier.size() - qualifier.size() + j, qualifier.get(j));
|
||||
}
|
||||
} else if (newQualifier.isEmpty()) {
|
||||
newQualifier.addAll(qualifier);
|
||||
}
|
||||
|
||||
Slot qualified = originSlot
|
||||
.withQualifier(qualifier)
|
||||
.withQualifier(newQualifier)
|
||||
.withName(columnAlias);
|
||||
currentOutput.add(qualified);
|
||||
}
|
||||
|
||||
@ -81,11 +81,6 @@ public class LogicalView<BODY extends Plan> extends LogicalUnary<BODY> {
|
||||
return view;
|
||||
}
|
||||
|
||||
@Override
|
||||
public LogicalProperties getLogicalProperties() {
|
||||
return child().getLogicalProperties();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Plan withGroupExpression(Optional<GroupExpression> groupExpression) {
|
||||
return new LogicalView(view, child());
|
||||
@ -125,7 +120,16 @@ public class LogicalView<BODY extends Plan> extends LogicalUnary<BODY> {
|
||||
|
||||
@Override
|
||||
public List<Slot> computeOutput() {
|
||||
return child().getOutput();
|
||||
List<Slot> childOutput = child().getOutput();
|
||||
ImmutableList.Builder<Slot> currentOutput = ImmutableList.builder();
|
||||
List<String> fullQualifiers = this.view.getFullQualifiers();
|
||||
for (int i = 0; i < childOutput.size(); i++) {
|
||||
Slot originSlot = childOutput.get(i);
|
||||
Slot qualified = originSlot
|
||||
.withQualifier(fullQualifiers);
|
||||
currentOutput.add(qualified);
|
||||
}
|
||||
return currentOutput.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user