(improvement)(semantic) If the field of the "AS" statement is equal to the alias, then do not replace the alias (#304)

This commit is contained in:
lexluo09
2023-10-31 21:12:47 +08:00
committed by GitHub
parent 438e8463f5
commit 8f37c3175f
4 changed files with 31 additions and 4 deletions

View File

@@ -15,7 +15,11 @@ public class FunctionAliasReplaceVisitor extends SelectItemVisitorAdapter {
public void visit(SelectExpressionItem selectExpressionItem) {
if (selectExpressionItem.getExpression() instanceof Function) {
Function function = (Function) selectExpressionItem.getExpression();
if (Objects.nonNull(selectExpressionItem.getAlias())) {
String columnName = SqlParserSelectHelper.getColumnName(function);
//1.exist alias. as
//2.alias's fieldName not equal. "sum(pv) as pv" cannot be replaced.
if (Objects.nonNull(selectExpressionItem.getAlias()) && !selectExpressionItem.getAlias().getName()
.equalsIgnoreCase(columnName)) {
aliasToActualExpression.put(selectExpressionItem.getAlias().getName(), function.toString());
selectExpressionItem.setAlias(null);
}