mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-14 13:47:09 +00:00
[fix][headless]Fix logic bug in s2sql parsing. (#1996)
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
package com.tencent.supersonic.common.jsqlparser;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Sets;
|
||||
import com.tencent.supersonic.common.util.StringUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.sf.jsqlparser.JSQLParserException;
|
||||
@@ -292,19 +294,37 @@ public class SqlSelectHelper {
|
||||
}
|
||||
List<PlainSelect> plainSelectList = new ArrayList<>();
|
||||
plainSelectList.add(plainSelect);
|
||||
Set<String> result = getSelectFields(plainSelectList);
|
||||
Set<String> selectFields = getSelectFields(plainSelectList);
|
||||
Set<String> aliases = getAliasFields(plainSelect);
|
||||
|
||||
getGroupByFields(plainSelect, result);
|
||||
Set<String> groupByFields = Sets.newHashSet();
|
||||
getGroupByFields(plainSelect, groupByFields);
|
||||
groupByFields.removeAll(aliases);
|
||||
|
||||
getOrderByFields(plainSelect, result);
|
||||
Set<String> orderByFields = Sets.newHashSet();
|
||||
getOrderByFields(plainSelect, orderByFields);
|
||||
orderByFields.removeAll(aliases);
|
||||
|
||||
getWhereFields(plainSelectList, result);
|
||||
Set<String> whereFields = Sets.newHashSet();
|
||||
getWhereFields(plainSelectList, whereFields);
|
||||
whereFields.removeAll(aliases);
|
||||
|
||||
getHavingFields(plainSelect, result);
|
||||
Set<String> havingFields = Sets.newHashSet();
|
||||
getHavingFields(plainSelect, havingFields);
|
||||
havingFields.removeAll(aliases);
|
||||
|
||||
getLateralViewsFields(plainSelect, result);
|
||||
Set<String> lateralFields = Sets.newHashSet();
|
||||
getLateralViewsFields(plainSelect, lateralFields);
|
||||
lateralFields.removeAll(aliases);
|
||||
|
||||
return new ArrayList<>(result);
|
||||
List<String> results = Lists.newArrayList();
|
||||
results.addAll(selectFields);
|
||||
results.addAll(groupByFields);
|
||||
results.addAll(orderByFields);
|
||||
results.addAll(whereFields);
|
||||
results.addAll(havingFields);
|
||||
results.addAll(lateralFields);
|
||||
return new ArrayList<>(results);
|
||||
}
|
||||
|
||||
private static void getHavingFields(PlainSelect plainSelect, Set<String> result) {
|
||||
|
||||
Reference in New Issue
Block a user