From 73006a0da5fe615192b9389fa699cd73290b7184 Mon Sep 17 00:00:00 2001 From: wangwei Date: Thu, 12 Nov 2020 09:20:18 +0800 Subject: fix(subQuery):子表查询优化,对子查询外层where条件补充,解决log_id重复导致筛选结果异常 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/mesalab/qgw/dialect/ClickHouseDialect.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/mesalab/qgw/dialect/ClickHouseDialect.java b/src/main/java/com/mesalab/qgw/dialect/ClickHouseDialect.java index fb4aec85..419b1ac5 100644 --- a/src/main/java/com/mesalab/qgw/dialect/ClickHouseDialect.java +++ b/src/main/java/com/mesalab/qgw/dialect/ClickHouseDialect.java @@ -393,7 +393,6 @@ public class ClickHouseDialect extends AbstractDataSourceDialect { //判断三: where 条件列是否都在索引表中 setValidityByWhereExpressionsInSchema(param.getDbQuerySource().getWhereExpression(), masterTableSchema, indexTableSchema); if (getSubIndexValidFlag() && isExist(indexTableSchema.getFullName())) { - System.out.println(indexTableSchema.getFullName()); indexTable = indexTableSchema.getName(); break; } @@ -414,6 +413,9 @@ public class ClickHouseDialect extends AbstractDataSourceDialect { StringBuffer subQuery = getSubquerySql(primaryKey, indexTable); StringBuffer sb = new StringBuffer(); sb.append("select ").append(param.getDbQuerySource().getSelectItems()).append(" from ").append(param.getTableName()).append(" where ").append(primaryKey).append(" in ( ").append(subQuery).append(")"); + if (StringUtil.isNotBlank(param.getDbQuerySource().getExpr())) { + sb.append(" and (").append(param.getDbQuerySource().getExpr()).append(")"); + } if (StringUtil.isNotBlank(param.getDbQuerySource().getOrderBy())) { sb.append(" order by ").append(param.getDbQuerySource().getOrderBy()); } -- cgit v1.2.3