diff --git a/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/SqlReplaceHelper.java b/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/SqlReplaceHelper.java index d3e903f48..3098daa8a 100644 --- a/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/SqlReplaceHelper.java +++ b/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/SqlReplaceHelper.java @@ -206,6 +206,12 @@ public class SqlReplaceHelper { replaceAsName(fieldNameMap, selectItem); } + if (plainSelect.getFromItem() instanceof ParenthesedSelect) { + ParenthesedSelect parenthesedSelect = (ParenthesedSelect) plainSelect.getFromItem(); + PlainSelect subPlainSelect = parenthesedSelect.getPlainSelect(); + replaceFieldsInPlainOneSelect(fieldNameMap, exactReplace, subPlainSelect); + } + //3. replace oder by fields List orderByElements = plainSelect.getOrderByElements(); if (!CollectionUtils.isEmpty(orderByElements)) { diff --git a/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/SqlSelectHelper.java b/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/SqlSelectHelper.java index b5aec7c5a..db1d50dd4 100644 --- a/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/SqlSelectHelper.java +++ b/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/SqlSelectHelper.java @@ -122,19 +122,28 @@ public class SqlSelectHelper { List plainSelectList = new ArrayList<>(); if (selectStatement instanceof PlainSelect) { PlainSelect plainSelect = (PlainSelect) selectStatement; - plainSelectList.add(plainSelect); + getSubPlainSelect(plainSelect, plainSelectList); } else if (selectStatement instanceof SetOperationList) { SetOperationList setOperationList = (SetOperationList) selectStatement; if (!CollectionUtils.isEmpty(setOperationList.getSelects())) { setOperationList.getSelects().forEach(subSelectBody -> { PlainSelect subPlainSelect = (PlainSelect) subSelectBody; - plainSelectList.add(subPlainSelect); + getSubPlainSelect(subPlainSelect, plainSelectList); }); } } return plainSelectList; } + public static void getSubPlainSelect(PlainSelect plainSelect, List plainSelectList) { + plainSelectList.add(plainSelect); + if (plainSelect.getFromItem() instanceof ParenthesedSelect) { + ParenthesedSelect parenthesedSelect = (ParenthesedSelect) plainSelect.getFromItem(); + PlainSelect subPlainSelect = parenthesedSelect.getPlainSelect(); + getSubPlainSelect(subPlainSelect, plainSelectList); + } + } + public static Select getSelect(String sql) { Statement statement = null; try { @@ -275,6 +284,14 @@ public class SqlSelectHelper { if (Objects.nonNull(where)) { where.accept(new FieldAndValueAcquireVisitor(result)); } + if (plainSelect.getFromItem() instanceof ParenthesedSelect) { + ParenthesedSelect parenthesedSelect = (ParenthesedSelect) plainSelect.getFromItem(); + PlainSelect subPlainSelect = parenthesedSelect.getPlainSelect(); + Expression subWhere = subPlainSelect.getWhere(); + if (Objects.nonNull(subWhere)) { + subWhere.accept(new FieldAndValueAcquireVisitor(result)); + } + } } return new ArrayList<>(result); } diff --git a/evaluation/build_models.py b/evaluation/build_models.py index 10554a470..f73e19c0b 100644 --- a/evaluation/build_models.py +++ b/evaluation/build_models.py @@ -258,7 +258,7 @@ def build_dataSet(domain_id,model_id1,model_id2,model_id3,model_id4): {"id":model_id3,"includesAll":False,"metrics":metric_list3,"dimensions":dimension_list3}, {"id":model_id4,"includesAll":False,"metrics":metric_list4,"dimensions":dimension_list4} ]}, - "queryConfig":{"tagTypeDefaultConfig":{},"metricTypeDefaultConfig":{"timeDefaultConfig":{"unit":1,"period":"DAY","timeMode":"RECENT"}}},"admins":["admin"],"admin":"admin"} + "queryConfig":{"tagTypeDefaultConfig":{},"metricTypeDefaultConfig":{"timeDefaultConfig":{"unit":0,"period":"DAY","timeMode":"RECENT"}}},"admins":["admin"],"admin":"admin"} url=get_url_pre()+"/api/semantic/dataSet" authorization=get_authorization() header = {} diff --git a/evaluation/build_pred_result.py b/evaluation/build_pred_result.py index d21324b28..d7804be84 100644 --- a/evaluation/build_pred_result.py +++ b/evaluation/build_pred_result.py @@ -66,6 +66,7 @@ def get_pred_result(): pred_sql_list=[] default_sql="select * from tablea " time_cost=[] + time.sleep(60) for i in range(0,len(questions)): start_time = time.time() pred_sql=get_pred_sql(questions[i],url,agent_id,chat_id,authorization,default_sql) @@ -73,7 +74,7 @@ def get_pred_result(): cost='%.3f'%(end_time-start_time) time_cost.append(cost) pred_sql_list.append(pred_sql) - time.sleep(60) + time.sleep(3) write_sql(pred_sql_path, pred_sql_list) return [float(cost) for cost in time_cost] diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/utils/S2SqlDateHelper.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/utils/S2SqlDateHelper.java index ce646c0b5..da4385947 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/utils/S2SqlDateHelper.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/utils/S2SqlDateHelper.java @@ -58,6 +58,9 @@ public class S2SqlDateHelper { DatePeriodEnum datePeriodEnum = DatePeriodEnum.get(period); String startDate = DateUtils.getBeforeDate(unit, datePeriodEnum); String endDate = DateUtils.getBeforeDate(1, datePeriodEnum); + if (unit == 0) { + endDate = startDate; + } if (TimeMode.LAST.equals(timeMode)) { endDate = startDate; } diff --git a/launchers/common/src/main/java/dev/langchain4j/S2LangChain4jAutoConfiguration.java b/launchers/common/src/main/java/dev/langchain4j/S2LangChain4jAutoConfiguration.java index 65037d6f8..331c01876 100644 --- a/launchers/common/src/main/java/dev/langchain4j/S2LangChain4jAutoConfiguration.java +++ b/launchers/common/src/main/java/dev/langchain4j/S2LangChain4jAutoConfiguration.java @@ -288,4 +288,4 @@ public class S2LangChain4jAutoConfiguration { .build(); } -} \ No newline at end of file +}