mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-14 13:47:09 +00:00
[improvement][headless]Refactor translator module to make code logic cleaner and more readable.
This commit is contained in:
@@ -679,61 +679,61 @@ public class SqlSelectHelper {
|
||||
return table.getFullyQualifiedName();
|
||||
}
|
||||
|
||||
public static Set<String> getColumnFromExpr(String expr) {
|
||||
public static Set<String> getFieldsFromExpr(String expr) {
|
||||
Expression expression = QueryExpressionReplaceVisitor.getExpression(expr);
|
||||
Set<String> columns = new HashSet<>();
|
||||
if (Objects.nonNull(expression)) {
|
||||
getColumnFromExpr(expression, columns);
|
||||
getFieldsFromExpr(expression, columns);
|
||||
}
|
||||
return columns;
|
||||
}
|
||||
|
||||
public static void getColumnFromExpr(Expression expression, Set<String> columns) {
|
||||
public static void getFieldsFromExpr(Expression expression, Set<String> columns) {
|
||||
if (expression instanceof Column) {
|
||||
columns.add(((Column) expression).getColumnName());
|
||||
}
|
||||
if (expression instanceof Function) {
|
||||
ExpressionList<?> expressionList = ((Function) expression).getParameters();
|
||||
for (Expression expr : expressionList) {
|
||||
getColumnFromExpr(expr, columns);
|
||||
getFieldsFromExpr(expr, columns);
|
||||
}
|
||||
}
|
||||
if (expression instanceof CaseExpression) {
|
||||
CaseExpression expr = (CaseExpression) expression;
|
||||
if (Objects.nonNull(expr.getWhenClauses())) {
|
||||
for (WhenClause whenClause : expr.getWhenClauses()) {
|
||||
getColumnFromExpr(whenClause.getWhenExpression(), columns);
|
||||
getColumnFromExpr(whenClause.getThenExpression(), columns);
|
||||
getFieldsFromExpr(whenClause.getWhenExpression(), columns);
|
||||
getFieldsFromExpr(whenClause.getThenExpression(), columns);
|
||||
}
|
||||
}
|
||||
if (Objects.nonNull(expr.getElseExpression())) {
|
||||
getColumnFromExpr(expr.getElseExpression(), columns);
|
||||
getFieldsFromExpr(expr.getElseExpression(), columns);
|
||||
}
|
||||
}
|
||||
if (expression instanceof BinaryExpression) {
|
||||
BinaryExpression expr = (BinaryExpression) expression;
|
||||
getColumnFromExpr(expr.getLeftExpression(), columns);
|
||||
getColumnFromExpr(expr.getRightExpression(), columns);
|
||||
getFieldsFromExpr(expr.getLeftExpression(), columns);
|
||||
getFieldsFromExpr(expr.getRightExpression(), columns);
|
||||
}
|
||||
if (expression instanceof InExpression) {
|
||||
InExpression inExpression = (InExpression) expression;
|
||||
getColumnFromExpr(inExpression.getLeftExpression(), columns);
|
||||
getFieldsFromExpr(inExpression.getLeftExpression(), columns);
|
||||
}
|
||||
if (expression instanceof Between) {
|
||||
Between between = (Between) expression;
|
||||
getColumnFromExpr(between.getLeftExpression(), columns);
|
||||
getFieldsFromExpr(between.getLeftExpression(), columns);
|
||||
}
|
||||
if (expression instanceof IsBooleanExpression) {
|
||||
IsBooleanExpression isBooleanExpression = (IsBooleanExpression) expression;
|
||||
getColumnFromExpr(isBooleanExpression.getLeftExpression(), columns);
|
||||
getFieldsFromExpr(isBooleanExpression.getLeftExpression(), columns);
|
||||
}
|
||||
if (expression instanceof IsNullExpression) {
|
||||
IsNullExpression isNullExpression = (IsNullExpression) expression;
|
||||
getColumnFromExpr(isNullExpression.getLeftExpression(), columns);
|
||||
getFieldsFromExpr(isNullExpression.getLeftExpression(), columns);
|
||||
}
|
||||
if (expression instanceof Parenthesis) {
|
||||
Parenthesis expr = (Parenthesis) expression;
|
||||
getColumnFromExpr(expr.getExpression(), columns);
|
||||
getFieldsFromExpr(expr.getExpression(), columns);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user