Skip to content

Commit f224c5d

Browse files
committed
记录 SQL JOIN 副表的聚合函数结果和之前不一致问题
1 parent 8806948 commit f224c5d

1 file changed

Lines changed: 19 additions & 0 deletions

File tree

APIJSONORM/src/main/java/apijson/orm/AbstractSQLExecutor.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -725,6 +725,24 @@ protected void executeAppJoin(SQLConfig config, List<JSONObject> resultList, Map
725725

726726
String sql2 = null;
727727
if (childCount > 0 && isOne2Many && (jc.isMySQL() == false || jc.getDBVersionNums()[0] >= 8)) {
728+
// 加 row_number 字段并不会导致 count 等聚合函数统计出错,结果偏大,SQL JOIN 才会,之前没发现是因为缓存失效 bug
729+
// boolean noAggrFun = true;
730+
// List<String> column = jc.getColumn();
731+
// if (column != null) {
732+
// for (String c : column) {
733+
// int start = c == null ? -1 : c.indexOf("(");
734+
// int end = start <= 0 ? -1 : c.lastIndexOf(")");
735+
// if (start > 0 && end > start) {
736+
// String fun = c.substring(0, start);
737+
// if (AbstractSQLConfig.SQL_AGGREGATE_FUNCTION_MAP.containsKey(fun)) {
738+
// noAggrFun = false;
739+
// break;
740+
// }
741+
// }
742+
// }
743+
// }
744+
//
745+
// if (noAggrFun) { // 加 row_number 字段会导致 count 等聚合函数统计出错,结果偏大?
728746
String q = jc.getQuote();
729747
sql2 = prepared ? jc.getSQL(true) : sql;
730748

@@ -738,6 +756,7 @@ protected void executeAppJoin(SQLConfig config, List<JSONObject> resultList, Map
738756
+ suffix;
739757

740758
sql = prepared ? (prefix + sql.replaceFirst(" FROM ", rnStr) + suffix) : sql2;
759+
// }
741760
}
742761

743762
boolean isExplain = jc.isExplain();

0 commit comments

Comments
 (0)