From d6fcf55b2475d8e0522555e9eebb69c890b6a667 Mon Sep 17 00:00:00 2001 From: zhangyang <1445621702@qq.com> Date: Tue, 2 Apr 2024 18:58:21 +0800 Subject: [PATCH 1/4] [ISSUE#11910] resolve mapper class paging parameter problem --- .../derby/ConfigInfoAggrMapperByDerby.java | 5 +- .../derby/ConfigInfoBetaMapperByDerby.java | 4 +- .../impl/derby/ConfigInfoMapperByDerby.java | 60 +++++++++-------- .../derby/ConfigInfoTagMapperByDerby.java | 9 ++- .../ConfigInfoTagsRelationMapperByDerby.java | 8 ++- .../derby/HistoryConfigInfoMapperByDerby.java | 7 +- .../mysql/ConfigInfoAggrMapperByMySql.java | 4 +- .../mysql/ConfigInfoBetaMapperByMySql.java | 2 +- .../impl/mysql/ConfigInfoMapperByMySql.java | 62 ++++++++++-------- .../mysql/ConfigInfoTagMapperByMySql.java | 9 ++- .../ConfigTagsRelationMapperByMySql.java | 8 ++- .../mysql/HistoryConfigInfoMapperByMySql.java | 6 +- .../ConfigInfoAggrMapperByDerbyTest.java | 4 +- .../ConfigInfoBetaMapperByDerbyTest.java | 4 +- .../derby/ConfigInfoMapperByDerbyTest.java | 64 +++++++++---------- .../derby/ConfigInfoTagMapperByDerbyTest.java | 6 +- ...nfigInfoTagsRelationMapperByDerbyTest.java | 8 ++- .../HistoryConfigInfoMapperByDerbyTest.java | 23 ++++++- .../ConfigInfoAggrMapperByMySqlTest.java | 4 +- .../ConfigInfoBetaMapperByMySqlTest.java | 2 +- .../mysql/ConfigInfoMapperByMySqlTest.java | 61 +++++++++--------- .../mysql/ConfigInfoTagMapperByMySqlTest.java | 4 +- .../ConfigTagsRelationMapperByMySqlTest.java | 11 ++-- .../HistoryConfigInfoMapperByMySqlTest.java | 17 +++++ 24 files changed, 225 insertions(+), 167 deletions(-) diff --git a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoAggrMapperByDerby.java b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoAggrMapperByDerby.java index 01ba4a8177f..ead752a168f 100644 --- a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoAggrMapperByDerby.java +++ b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoAggrMapperByDerby.java @@ -43,9 +43,8 @@ public MapperResult findConfigInfoAggrByPageFetchRows(MapperContext context) { String sql = "SELECT data_id,group_id,tenant_id,datum_id,app_name,content FROM config_info_aggr WHERE data_id=? AND " - + "group_id=? AND tenant_id=? ORDER BY datum_id OFFSET " + startRow + " ROWS FETCH NEXT " - + pageSize + " ROWS ONLY"; - List paramList = CollectionUtils.list(dataId, groupId, tenantId); + + "group_id=? AND tenant_id=? ORDER BY datum_id OFFSET ? ROWS FETCH NEXT ? ROWS ONLY"; + List paramList = CollectionUtils.list(dataId, groupId, tenantId, startRow, pageSize); return new MapperResult(sql, paramList); } diff --git a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoBetaMapperByDerby.java b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoBetaMapperByDerby.java index da3556e0096..1d2a0db52cd 100644 --- a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoBetaMapperByDerby.java +++ b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoBetaMapperByDerby.java @@ -39,8 +39,8 @@ public MapperResult findAllConfigInfoBetaForDumpAllFetchRows(MapperContext conte int pageSize = context.getPageSize(); String sql = "SELECT t.id,data_id,group_id,tenant_id,app_name,content,md5,gmt_modified,beta_ips " - + " FROM ( SELECT id FROM config_info_beta ORDER BY id OFFSET " + startRow + " ROWS FETCH NEXT " - + pageSize + " ROWS ONLY )" + " g, config_info_beta t WHERE g.id = t.id"; + + " FROM ( SELECT id FROM config_info_beta ORDER BY id OFFSET ? ROWS FETCH NEXT ?" + + " ROWS ONLY )" + " g, config_info_beta t WHERE g.id = t.id"; List paramList = new ArrayList<>(); paramList.add(startRow); diff --git a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoMapperByDerby.java b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoMapperByDerby.java index 2ed72f578f7..8f5e178e7ef 100644 --- a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoMapperByDerby.java +++ b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoMapperByDerby.java @@ -29,7 +29,6 @@ import java.sql.Timestamp; import java.util.ArrayList; -import java.util.Collections; import java.util.List; /** @@ -47,10 +46,10 @@ public MapperResult findConfigInfoByAppFetchRows(MapperContext context) { String sql = "SELECT ID,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE tenant_id LIKE ? AND " - + "app_name = ?" + " OFFSET " + context.getStartRow() + " ROWS FETCH NEXT " - + context.getPageSize() + " ROWS ONLY"; + + "app_name = ?" + " OFFSET ? ROWS FETCH NEXT ?" + + " ROWS ONLY"; - return new MapperResult(sql, CollectionUtils.list(tenantId, appName)); + return new MapperResult(sql, CollectionUtils.list(tenantId, appName, context.getStartRow(), context.getPageSize())); } @Override @@ -58,8 +57,8 @@ public MapperResult getTenantIdList(MapperContext context) { return new MapperResult( "SELECT tenant_id FROM config_info WHERE tenant_id != '" + NamespaceUtil.getNamespaceDefaultId() - + "' GROUP BY tenant_id OFFSET " + context.getStartRow() + " ROWS FETCH NEXT " - + context.getPageSize() + " ROWS ONLY", Collections.emptyList()); + + "' GROUP BY tenant_id OFFSET ? ROWS FETCH NEXT ?" + + " ROWS ONLY", CollectionUtils.list(context.getStartRow(), context.getPageSize())); } @Override @@ -67,27 +66,28 @@ public MapperResult getGroupIdList(MapperContext context) { return new MapperResult( "SELECT group_id FROM config_info WHERE tenant_id ='" + NamespaceUtil.getNamespaceDefaultId() - + "' GROUP BY group_id OFFSET " + context.getStartRow() + " ROWS FETCH NEXT " - + context.getPageSize() + " ROWS ONLY", Collections.emptyList()); + + "' GROUP BY group_id OFFSET ? ROWS FETCH NEXT ?" + + " ROWS ONLY", CollectionUtils.list(context.getStartRow(), context.getPageSize())); } @Override public MapperResult findAllConfigKey(MapperContext context) { String sql = " SELECT data_id,group_id,app_name FROM " - + " ( SELECT id FROM config_info WHERE tenant_id LIKE ? ORDER BY id OFFSET " + context.getStartRow() - + " ROWS FETCH NEXT " + context.getPageSize() + " ROWS ONLY ) " + + " ( SELECT id FROM config_info WHERE tenant_id LIKE ? ORDER BY id OFFSET ?" + + " ROWS FETCH NEXT ? ROWS ONLY ) " + "g, config_info t WHERE g.id = t.id "; - return new MapperResult(sql, CollectionUtils.list(context.getWhereParameter(FieldConstant.TENANT_ID))); + return new MapperResult(sql, + CollectionUtils.list(context.getWhereParameter(FieldConstant.TENANT_ID), context.getStartRow(), context.getPageSize())); } @Override public MapperResult findAllConfigInfoBaseFetchRows(MapperContext context) { return new MapperResult( - "SELECT t.id,data_id,group_id,content,md5 " + " FROM ( SELECT id FROM config_info ORDER BY id OFFSET " - + context.getStartRow() + " ROWS FETCH NEXT " + context.getPageSize() + " ROWS ONLY ) " - + " g, config_info t WHERE g.id = t.id ", Collections.emptyList()); + "SELECT t.id,data_id,group_id,content,md5 " + " FROM ( SELECT id FROM config_info ORDER BY id OFFSET ?" + + " ROWS FETCH NEXT ? ROWS ONLY ) " + + " g, config_info t WHERE g.id = t.id ", CollectionUtils.list(context.getStartRow(), context.getPageSize())); } @Override @@ -95,9 +95,9 @@ public MapperResult findAllConfigInfoFragment(MapperContext context) { String contextParameter = context.getContextParameter(ContextConstant.NEED_CONTENT); boolean needContent = contextParameter != null && Boolean.parseBoolean(contextParameter); return new MapperResult("SELECT id,data_id,group_id,tenant_id,app_name," + (needContent ? "content," : "") - + "md5,gmt_modified,type FROM config_info WHERE id > ? " + "ORDER BY id ASC OFFSET " - + context.getStartRow() + " ROWS FETCH NEXT " + context.getPageSize() + " ROWS ONLY", - CollectionUtils.list(context.getWhereParameter(FieldConstant.ID))); + + "md5,gmt_modified,type FROM config_info WHERE id > ? " + "ORDER BY id ASC OFFSET ?" + + " ROWS FETCH NEXT ? ROWS ONLY", + CollectionUtils.list(context.getWhereParameter(FieldConstant.ID), context.getStartRow(), context.getPageSize())); } @Override @@ -142,8 +142,10 @@ public MapperResult findChangeConfigFetchRows(MapperContext context) { where += " AND gmt_modified <=? "; paramList.add(endTime); } + paramList.add(context.getStartRow()); + paramList.add(context.getPageSize()); return new MapperResult( - sqlFetchRows + where + " OFFSET " + context.getStartRow() + " ROWS FETCH NEXT " + context.getPageSize() + sqlFetchRows + where + " OFFSET ? ROWS FETCH NEXT ?" + " ROWS ONLY", paramList); } @@ -151,8 +153,8 @@ public MapperResult findChangeConfigFetchRows(MapperContext context) { public MapperResult listGroupKeyMd5ByPageFetchRows(MapperContext context) { return new MapperResult(" SELECT t.id,data_id,group_id,tenant_id,app_name,type,md5,gmt_modified " - + "FROM ( SELECT id FROM config_info ORDER BY id OFFSET " + context.getStartRow() + " ROWS FETCH NEXT " - + context.getPageSize() + " ROWS ONLY ) g, config_info t WHERE g.id = t.id", Collections.emptyList()); + + "FROM ( SELECT id FROM config_info ORDER BY id OFFSET ? ROWS FETCH NEXT ?" + + " ROWS ONLY ) g, config_info t WHERE g.id = t.id", CollectionUtils.list(context.getStartRow(), context.getPageSize())); } @Override @@ -176,8 +178,10 @@ public MapperResult findConfigInfoBaseLikeFetchRows(MapperContext context) { where += " AND content LIKE ? "; paramList.add(tenant); } + paramList.add(context.getStartRow()); + paramList.add(context.getPageSize()); return new MapperResult( - sqlFetchRows + where + " OFFSET " + context.getStartRow() + " ROWS FETCH NEXT " + context.getPageSize() + sqlFetchRows + where + " OFFSET ? ROWS FETCH NEXT ?" + " ROWS ONLY", paramList); } @@ -212,18 +216,20 @@ public MapperResult findConfigInfo4PageFetchRows(MapperContext context) { where.append(" AND content LIKE ? "); paramList.add(content); } + paramList.add(context.getStartRow()); + paramList.add(context.getPageSize()); return new MapperResult( - sql + where + " OFFSET " + context.getStartRow() + " ROWS FETCH NEXT " + context.getPageSize() + sql + where + " OFFSET ? ROWS FETCH NEXT ?" + " ROWS ONLY", paramList); } @Override public MapperResult findConfigInfoBaseByGroupFetchRows(MapperContext context) { return new MapperResult( - "SELECT id,data_id,group_id,content FROM config_info WHERE group_id=? " + "AND tenant_id=?" + " OFFSET " - + context.getStartRow() + " ROWS FETCH NEXT " + context.getPageSize() + " ROWS ONLY", + "SELECT id,data_id,group_id,content FROM config_info WHERE group_id=? " + "AND tenant_id=?" + " OFFSET ?" + + " ROWS FETCH NEXT ? ROWS ONLY", CollectionUtils.list(context.getWhereParameter(FieldConstant.GROUP_ID), - context.getWhereParameter(FieldConstant.TENANT_ID))); + context.getWhereParameter(FieldConstant.TENANT_ID), context.getStartRow(), context.getPageSize())); } @Override @@ -257,8 +263,10 @@ public MapperResult findConfigInfoLike4PageFetchRows(MapperContext context) { where.append(" AND content LIKE ? "); paramList.add(content); } + paramList.add(context.getStartRow()); + paramList.add(context.getPageSize()); String sql = - sqlFetchRows + where + " OFFSET " + context.getStartRow() + " ROWS FETCH NEXT " + context.getPageSize() + sqlFetchRows + where + " OFFSET ? ROWS FETCH NEXT ?" + " ROWS ONLY"; return new MapperResult(sql, paramList); } diff --git a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoTagMapperByDerby.java b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoTagMapperByDerby.java index 3134871e47e..bedcc1cd9e5 100644 --- a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoTagMapperByDerby.java +++ b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoTagMapperByDerby.java @@ -16,14 +16,13 @@ package com.alibaba.nacos.plugin.datasource.impl.derby; +import com.alibaba.nacos.common.utils.CollectionUtils; import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; import com.alibaba.nacos.plugin.datasource.mapper.AbstractMapper; import com.alibaba.nacos.plugin.datasource.mapper.ConfigInfoTagMapper; import com.alibaba.nacos.plugin.datasource.model.MapperContext; import com.alibaba.nacos.plugin.datasource.model.MapperResult; -import java.util.Collections; - /** * The derby implementation of ConfigInfoTagMapper. * @@ -35,10 +34,10 @@ public class ConfigInfoTagMapperByDerby extends AbstractMapper implements Config @Override public MapperResult findAllConfigInfoTagForDumpAllFetchRows(MapperContext context) { String sql = "SELECT t.id,data_id,group_id,tenant_id,tag_id,app_name,content,md5,gmt_modified " - + " FROM ( SELECT id FROM config_info_tag ORDER BY id OFFSET " + context.getStartRow() - + " ROWS FETCH NEXT " + context.getPageSize() + " ROWS ONLY ) " + + " FROM ( SELECT id FROM config_info_tag ORDER BY id OFFSET ?" + + " ROWS FETCH NEXT ? ROWS ONLY ) " + " g, config_info_tag t WHERE g.id = t.id"; - return new MapperResult(sql, Collections.emptyList()); + return new MapperResult(sql, CollectionUtils.list(context.getStartRow(), context.getPageSize())); } @Override diff --git a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoTagsRelationMapperByDerby.java b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoTagsRelationMapperByDerby.java index d8de7c03762..2026f228f1f 100644 --- a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoTagsRelationMapperByDerby.java +++ b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoTagsRelationMapperByDerby.java @@ -77,8 +77,10 @@ public MapperResult findConfigInfo4PageFetchRows(MapperContext context) { where.append('?'); paramList.add(tagArr[i]); } + paramList.add(context.getStartRow()); + paramList.add(context.getPageSize()); where.append(") "); - String sql = baseSql + where + " OFFSET " + context.getStartRow() + " ROWS FETCH NEXT " + context.getPageSize() + String sql = baseSql + where + " OFFSET ? ROWS FETCH NEXT ?" + " ROWS ONLY"; return new MapperResult(sql, paramList); } @@ -126,8 +128,10 @@ public MapperResult findConfigInfoLike4PageFetchRows(MapperContext context) { where.append('?'); paramList.add(tagArr[i]); } + paramList.add(context.getStartRow()); + paramList.add(context.getPageSize()); where.append(") "); - String sql = baseSql + where + " OFFSET " + context.getStartRow() + " ROWS FETCH NEXT " + context.getPageSize() + String sql = baseSql + where + " OFFSET ? ROWS FETCH NEXT ?" + " ROWS ONLY"; return new MapperResult(sql, paramList); } diff --git a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/HistoryConfigInfoMapperByDerby.java b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/HistoryConfigInfoMapperByDerby.java index d17f12ddd7e..8f651e82323 100644 --- a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/HistoryConfigInfoMapperByDerby.java +++ b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/HistoryConfigInfoMapperByDerby.java @@ -44,10 +44,11 @@ public MapperResult removeConfigHistory(MapperContext context) { public MapperResult pageFindConfigHistoryFetchRows(MapperContext context) { String sql = "SELECT nid,data_id,group_id,tenant_id,app_name,src_ip,src_user,op_type,gmt_create,gmt_modified FROM his_config_info " - + "WHERE data_id = ? AND group_id = ? AND tenant_id = ? ORDER BY nid DESC OFFSET " - + context.getStartRow() + " ROWS FETCH NEXT " + context.getPageSize() + " ROWS ONLY"; + + "WHERE data_id = ? AND group_id = ? AND tenant_id = ? ORDER BY nid DESC OFFSET ?" + + " ROWS FETCH NEXT ? ROWS ONLY"; return new MapperResult(sql, CollectionUtils.list(context.getWhereParameter(FieldConstant.DATA_ID), - context.getWhereParameter(FieldConstant.GROUP_ID), context.getWhereParameter(FieldConstant.TENANT_ID))); + context.getWhereParameter(FieldConstant.GROUP_ID), context.getWhereParameter(FieldConstant.TENANT_ID), + context.getStartRow(), context.getPageSize())); } @Override diff --git a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoAggrMapperByMySql.java b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoAggrMapperByMySql.java index f9bad4153f7..d3213bb46f0 100644 --- a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoAggrMapperByMySql.java +++ b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoAggrMapperByMySql.java @@ -43,8 +43,8 @@ public MapperResult findConfigInfoAggrByPageFetchRows(MapperContext context) { String sql = "SELECT data_id,group_id,tenant_id,datum_id,app_name,content FROM config_info_aggr WHERE data_id= ? AND " - + "group_id= ? AND tenant_id= ? ORDER BY datum_id LIMIT " + startRow + "," + pageSize; - List paramList = CollectionUtils.list(dataId, groupId, tenantId); + + "group_id= ? AND tenant_id= ? ORDER BY datum_id LIMIT ?,?"; + List paramList = CollectionUtils.list(dataId, groupId, tenantId, startRow, pageSize); return new MapperResult(sql, paramList); } diff --git a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoBetaMapperByMySql.java b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoBetaMapperByMySql.java index 6fe9b12070d..6d2c818caed 100644 --- a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoBetaMapperByMySql.java +++ b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoBetaMapperByMySql.java @@ -38,7 +38,7 @@ public MapperResult findAllConfigInfoBetaForDumpAllFetchRows(MapperContext conte int startRow = context.getStartRow(); int pageSize = context.getPageSize(); String sql = " SELECT t.id,data_id,group_id,tenant_id,app_name,content,md5,gmt_modified,beta_ips,encrypted_data_key " - + " FROM ( SELECT id FROM config_info_beta ORDER BY id LIMIT " + startRow + "," + pageSize + " )" + + " FROM ( SELECT id FROM config_info_beta ORDER BY id LIMIT ?,? )" + " g, config_info_beta t WHERE g.id = t.id "; List paramList = new ArrayList<>(); paramList.add(startRow); diff --git a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoMapperByMySql.java b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoMapperByMySql.java index f4c05ac71fb..9d48f250784 100644 --- a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoMapperByMySql.java +++ b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoMapperByMySql.java @@ -29,7 +29,6 @@ import java.sql.Timestamp; import java.util.ArrayList; -import java.util.Collections; import java.util.List; /** @@ -55,39 +54,39 @@ public MapperResult findConfigInfoByAppFetchRows(MapperContext context) { final String appName = (String) context.getWhereParameter(FieldConstant.APP_NAME); final String tenantId = (String) context.getWhereParameter(FieldConstant.TENANT_ID); String sql = "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info" - + " WHERE tenant_id LIKE ? AND app_name= ?" + " LIMIT " + context.getStartRow() + "," - + context.getPageSize(); - return new MapperResult(sql, CollectionUtils.list(tenantId, appName)); + + " WHERE tenant_id LIKE ? AND app_name= ?" + " LIMIT ?,?"; + return new MapperResult(sql, CollectionUtils.list(tenantId, appName, context.getStartRow(), context.getPageSize())); } @Override public MapperResult getTenantIdList(MapperContext context) { String sql = "SELECT tenant_id FROM config_info WHERE tenant_id != '" + NamespaceUtil.getNamespaceDefaultId() - + "' GROUP BY tenant_id LIMIT " + context.getStartRow() + "," + context.getPageSize(); - return new MapperResult(sql, Collections.emptyList()); + + "' GROUP BY tenant_id LIMIT ?,?"; + return new MapperResult(sql, CollectionUtils.list(context.getStartRow(), context.getPageSize())); } @Override public MapperResult getGroupIdList(MapperContext context) { String sql = "SELECT group_id FROM config_info WHERE tenant_id ='" + NamespaceUtil.getNamespaceDefaultId() - + "' GROUP BY group_id LIMIT " + context.getStartRow() + "," + context.getPageSize(); - return new MapperResult(sql, Collections.emptyList()); + + "' GROUP BY group_id LIMIT ?,?"; + return new MapperResult(sql, CollectionUtils.list(context.getStartRow(), context.getPageSize())); } @Override public MapperResult findAllConfigKey(MapperContext context) { String sql = " SELECT data_id,group_id,app_name FROM ( " - + " SELECT id FROM config_info WHERE tenant_id LIKE ? ORDER BY id LIMIT " + context.getStartRow() + "," - + context.getPageSize() + " )" + " g, config_info t WHERE g.id = t.id "; - return new MapperResult(sql, CollectionUtils.list(context.getWhereParameter(FieldConstant.TENANT_ID))); + + " SELECT id FROM config_info WHERE tenant_id LIKE ? ORDER BY id LIMIT ?,?" + + " )" + " g, config_info t WHERE g.id = t.id "; + return new MapperResult(sql, CollectionUtils.list(context.getWhereParameter(FieldConstant.TENANT_ID), + context.getStartRow(), context.getPageSize())); } @Override public MapperResult findAllConfigInfoBaseFetchRows(MapperContext context) { String sql = "SELECT t.id,data_id,group_id,content,md5" - + " FROM ( SELECT id FROM config_info ORDER BY id LIMIT " + context.getStartRow() + "," - + context.getPageSize() + " )" + " g, config_info t WHERE g.id = t.id "; - return new MapperResult(sql, Collections.emptyList()); + + " FROM ( SELECT id FROM config_info ORDER BY id LIMIT ?,?" + + " )" + " g, config_info t WHERE g.id = t.id "; + return new MapperResult(sql, CollectionUtils.list(context.getStartRow(), context.getPageSize())); } @Override @@ -95,9 +94,8 @@ public MapperResult findAllConfigInfoFragment(MapperContext context) { String contextParameter = context.getContextParameter(ContextConstant.NEED_CONTENT); boolean needContent = contextParameter != null && Boolean.parseBoolean(contextParameter); String sql = "SELECT id,data_id,group_id,tenant_id,app_name," + (needContent ? "content," : "") - + "md5,gmt_modified,type,encrypted_data_key FROM config_info WHERE id > ? ORDER BY id ASC LIMIT " - + context.getStartRow() + "," + context.getPageSize(); - return new MapperResult(sql, CollectionUtils.list(context.getWhereParameter(FieldConstant.ID))); + + "md5,gmt_modified,type,encrypted_data_key FROM config_info WHERE id > ? ORDER BY id ASC LIMIT ?,?"; + return new MapperResult(sql, CollectionUtils.list(context.getWhereParameter(FieldConstant.ID), context.getStartRow(), context.getPageSize())); } @Override @@ -140,17 +138,20 @@ public MapperResult findChangeConfigFetchRows(MapperContext context) { where += " AND gmt_modified <=? "; paramList.add(endTime); } + paramList.add(context.getWhereParameter(FieldConstant.LAST_MAX_ID)); + paramList.add(context.getStartRow()); + paramList.add(context.getPageSize()); return new MapperResult( - sqlFetchRows + where + " AND id > " + context.getWhereParameter(FieldConstant.LAST_MAX_ID) - + " ORDER BY id ASC" + " LIMIT " + 0 + "," + context.getPageSize(), paramList); + sqlFetchRows + where + " AND id > ?" + + " ORDER BY id ASC" + " LIMIT ?,?", paramList); } @Override public MapperResult listGroupKeyMd5ByPageFetchRows(MapperContext context) { String sql = "SELECT t.id,data_id,group_id,tenant_id,app_name,md5,type,gmt_modified,encrypted_data_key FROM " - + "( SELECT id FROM config_info ORDER BY id LIMIT " + context.getStartRow() + "," - + context.getPageSize() + " ) g, config_info t WHERE g.id = t.id"; - return new MapperResult(sql, Collections.emptyList()); + + "( SELECT id FROM config_info ORDER BY id LIMIT ?,?" + + " ) g, config_info t WHERE g.id = t.id"; + return new MapperResult(sql, CollectionUtils.list(context.getStartRow(), context.getPageSize())); } @Override @@ -176,7 +177,9 @@ public MapperResult findConfigInfoBaseLikeFetchRows(MapperContext context) { where += " AND content LIKE ? "; paramList.add(content); } - return new MapperResult(sqlFetchRows + where + " LIMIT " + context.getStartRow() + "," + context.getPageSize(), + paramList.add(context.getStartRow()); + paramList.add(context.getPageSize()); + return new MapperResult(sqlFetchRows + where + " LIMIT ?,?", paramList); } @@ -210,16 +213,17 @@ public MapperResult findConfigInfo4PageFetchRows(MapperContext context) { where.append(" AND content LIKE ? "); paramList.add(content); } - return new MapperResult(sql + where + " LIMIT " + context.getStartRow() + "," + context.getPageSize(), + paramList.add(context.getStartRow()); + paramList.add(context.getPageSize()); + return new MapperResult(sql + where + " LIMIT ?,?", paramList); } @Override public MapperResult findConfigInfoBaseByGroupFetchRows(MapperContext context) { - String sql = "SELECT id,data_id,group_id,content FROM config_info WHERE group_id=? AND tenant_id=?" + " LIMIT " - + context.getStartRow() + "," + context.getPageSize(); + String sql = "SELECT id,data_id,group_id,content FROM config_info WHERE group_id=? AND tenant_id=?" + " LIMIT ?,?"; return new MapperResult(sql, CollectionUtils.list(context.getWhereParameter(FieldConstant.GROUP_ID), - context.getWhereParameter(FieldConstant.TENANT_ID))); + context.getWhereParameter(FieldConstant.TENANT_ID), context.getStartRow(), context.getPageSize())); } @Override @@ -254,7 +258,9 @@ public MapperResult findConfigInfoLike4PageFetchRows(MapperContext context) { where.append(" AND content LIKE ? "); paramList.add(content); } - return new MapperResult(sqlFetchRows + where + " LIMIT " + context.getStartRow() + "," + context.getPageSize(), + paramList.add(context.getStartRow()); + paramList.add(context.getPageSize()); + return new MapperResult(sqlFetchRows + where + " LIMIT ?,?", paramList); } diff --git a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoTagMapperByMySql.java b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoTagMapperByMySql.java index 25dbb0720c2..0226982877b 100644 --- a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoTagMapperByMySql.java +++ b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoTagMapperByMySql.java @@ -16,14 +16,13 @@ package com.alibaba.nacos.plugin.datasource.impl.mysql; +import com.alibaba.nacos.common.utils.CollectionUtils; import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; import com.alibaba.nacos.plugin.datasource.mapper.AbstractMapper; import com.alibaba.nacos.plugin.datasource.mapper.ConfigInfoTagMapper; import com.alibaba.nacos.plugin.datasource.model.MapperContext; import com.alibaba.nacos.plugin.datasource.model.MapperResult; -import java.util.Collections; - /** * The mysql implementation of ConfigInfoTagMapper. * @@ -35,9 +34,9 @@ public class ConfigInfoTagMapperByMySql extends AbstractMapper implements Config @Override public MapperResult findAllConfigInfoTagForDumpAllFetchRows(MapperContext context) { String sql = " SELECT t.id,data_id,group_id,tenant_id,tag_id,app_name,content,md5,gmt_modified " - + " FROM ( SELECT id FROM config_info_tag ORDER BY id LIMIT " + context.getStartRow() + "," - + context.getPageSize() + " ) " + "g, config_info_tag t WHERE g.id = t.id "; - return new MapperResult(sql, Collections.emptyList()); + + " FROM ( SELECT id FROM config_info_tag ORDER BY id LIMIT ?,?" + + " ) " + "g, config_info_tag t WHERE g.id = t.id "; + return new MapperResult(sql, CollectionUtils.list(context.getStartRow(), context.getPageSize())); } @Override diff --git a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigTagsRelationMapperByMySql.java b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigTagsRelationMapperByMySql.java index 728aee2f442..9904da19bf7 100644 --- a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigTagsRelationMapperByMySql.java +++ b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigTagsRelationMapperByMySql.java @@ -77,8 +77,10 @@ public MapperResult findConfigInfo4PageFetchRows(MapperContext context) { where.append('?'); paramList.add(tagArr[i]); } + paramList.add(context.getStartRow()); + paramList.add(context.getPageSize()); where.append(") "); - return new MapperResult(sql + where + " LIMIT " + context.getStartRow() + "," + context.getPageSize(), + return new MapperResult(sql + where + " LIMIT ?,?", paramList); } @@ -124,8 +126,10 @@ public MapperResult findConfigInfoLike4PageFetchRows(MapperContext context) { where.append('?'); paramList.add(tagArr[i]); } + paramList.add(context.getStartRow()); + paramList.add(context.getPageSize()); where.append(") "); - return new MapperResult(sqlFetchRows + where + " LIMIT " + context.getStartRow() + "," + context.getPageSize(), + return new MapperResult(sqlFetchRows + where + " LIMIT ?,?", paramList); } diff --git a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/HistoryConfigInfoMapperByMySql.java b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/HistoryConfigInfoMapperByMySql.java index ecbbe700f9c..305b76a0e54 100644 --- a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/HistoryConfigInfoMapperByMySql.java +++ b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/HistoryConfigInfoMapperByMySql.java @@ -43,10 +43,10 @@ public MapperResult removeConfigHistory(MapperContext context) { public MapperResult pageFindConfigHistoryFetchRows(MapperContext context) { String sql = "SELECT nid,data_id,group_id,tenant_id,app_name,src_ip,src_user,op_type,gmt_create,gmt_modified FROM his_config_info " - + "WHERE data_id = ? AND group_id = ? AND tenant_id = ? ORDER BY nid DESC LIMIT " - + context.getStartRow() + "," + context.getPageSize(); + + "WHERE data_id = ? AND group_id = ? AND tenant_id = ? ORDER BY nid DESC LIMIT ?,?"; return new MapperResult(sql, CollectionUtils.list(context.getWhereParameter(FieldConstant.DATA_ID), - context.getWhereParameter(FieldConstant.GROUP_ID), context.getWhereParameter(FieldConstant.TENANT_ID))); + context.getWhereParameter(FieldConstant.GROUP_ID), context.getWhereParameter(FieldConstant.TENANT_ID), + context.getStartRow(), context.getPageSize())); } @Override diff --git a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoAggrMapperByDerbyTest.java b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoAggrMapperByDerbyTest.java index 6e66fed33fc..484758aac2a 100644 --- a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoAggrMapperByDerbyTest.java +++ b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoAggrMapperByDerbyTest.java @@ -128,8 +128,8 @@ public void testFindConfigInfoAggrByPageFetchRows() { List paramList = mapperResult.getParamList(); Assert.assertEquals(sql, "SELECT data_id,group_id,tenant_id,datum_id,app_name,content FROM config_info_aggr WHERE " - + "data_id=? AND group_id=? AND tenant_id=? ORDER BY datum_id OFFSET 0 ROWS FETCH NEXT 5 ROWS ONLY"); - Assert.assertEquals(paramList, CollectionUtils.list(dataId, groupId, tenantId)); + + "data_id=? AND group_id=? AND tenant_id=? ORDER BY datum_id OFFSET ? ROWS FETCH NEXT ? ROWS ONLY"); + Assert.assertEquals(paramList, CollectionUtils.list(dataId, groupId, tenantId, startRow, pageSize)); } @Test diff --git a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoBetaMapperByDerbyTest.java b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoBetaMapperByDerbyTest.java index 2ed3be3c601..9ec209c327a 100644 --- a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoBetaMapperByDerbyTest.java +++ b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoBetaMapperByDerbyTest.java @@ -121,8 +121,8 @@ public void testFindAllConfigInfoBetaForDumpAllFetchRows() { List paramList = result.getParamList(); Assert.assertEquals(sql, "SELECT t.id,data_id,group_id,tenant_id,app_name,content,md5,gmt_modified,beta_ips FROM " - + "( SELECT id FROM config_info_beta ORDER BY id OFFSET " + startRow + " ROWS FETCH NEXT " - + pageSize + " ROWS ONLY ) g, " + "config_info_beta t WHERE g.id = t.id"); + + "( SELECT id FROM config_info_beta ORDER BY id OFFSET ? ROWS FETCH NEXT ?" + + " ROWS ONLY ) g, " + "config_info_beta t WHERE g.id = t.id"); Assert.assertEquals(paramList, Arrays.asList(startRow, pageSize)); } diff --git a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoMapperByDerbyTest.java b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoMapperByDerbyTest.java index 29c382781f6..4847ef149fe 100644 --- a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoMapperByDerbyTest.java +++ b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoMapperByDerbyTest.java @@ -99,8 +99,8 @@ public void testFindConfigInfoByAppFetchRows() { MapperResult mapperResult = configInfoMapperByDerby.findConfigInfoByAppFetchRows(context); Assert.assertEquals(mapperResult.getSql(), "SELECT ID,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE tenant_id LIKE" - + " ? AND app_name = ? OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"); - Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {tenantId, appName}); + + " ? AND app_name = ? OFFSET ? ROWS FETCH NEXT ? ROWS ONLY"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {tenantId, appName, startRow, pageSize}); } @Test @@ -114,18 +114,18 @@ public void testConfigInfoLikeTenantCount() { public void testGetTenantIdList() { MapperResult mapperResult = configInfoMapperByDerby.getTenantIdList(context); Assert.assertEquals(mapperResult.getSql(), - "SELECT tenant_id FROM config_info WHERE tenant_id != '' GROUP BY tenant_id OFFSET " + startRow - + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"); - Assert.assertArrayEquals(mapperResult.getParamList().toArray(), emptyObjs); + "SELECT tenant_id FROM config_info WHERE tenant_id != '' GROUP BY tenant_id OFFSET ?" + + " ROWS FETCH NEXT ? ROWS ONLY"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {startRow, pageSize}); } @Test public void testGetGroupIdList() { MapperResult mapperResult = configInfoMapperByDerby.getGroupIdList(context); Assert.assertEquals(mapperResult.getSql(), - "SELECT group_id FROM config_info WHERE tenant_id ='' GROUP BY group_id OFFSET " + startRow - + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"); - Assert.assertArrayEquals(mapperResult.getParamList().toArray(), emptyObjs); + "SELECT group_id FROM config_info WHERE tenant_id ='' GROUP BY group_id OFFSET ?" + + " ROWS FETCH NEXT ? ROWS ONLY"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {startRow, pageSize}); } @Test @@ -133,19 +133,19 @@ public void testFindAllConfigKey() { MapperResult mapperResult = configInfoMapperByDerby.findAllConfigKey(context); Assert.assertEquals(mapperResult.getSql(), " SELECT data_id,group_id,app_name FROM ( SELECT id FROM config_info WHERE tenant_id LIKE" - + " ? ORDER BY id OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + + " ? ORDER BY id OFFSET ? ROWS FETCH NEXT ?" + " ROWS ONLY ) g, config_info t WHERE g.id = t.id "); - Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {tenantId}); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {tenantId, startRow, pageSize}); } @Test public void testFindAllConfigInfoBaseFetchRows() { MapperResult mapperResult = configInfoMapperByDerby.findAllConfigInfoBaseFetchRows(context); Assert.assertEquals(mapperResult.getSql(), - "SELECT t.id,data_id,group_id,content,md5 FROM ( SELECT id FROM config_info ORDER BY " + "id OFFSET " - + startRow + " ROWS FETCH NEXT " + pageSize + "SELECT t.id,data_id,group_id,content,md5 FROM ( SELECT id FROM config_info ORDER BY " + "id OFFSET ?" + + " ROWS FETCH NEXT ?" + " ROWS ONLY ) g, config_info t WHERE g.id = t.id "); - Assert.assertArrayEquals(mapperResult.getParamList().toArray(), emptyObjs); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {startRow, pageSize}); } @Test @@ -155,18 +155,18 @@ public void testFindAllConfigInfoFragment() { MapperResult mapperResult = configInfoMapperByDerby.findAllConfigInfoFragment(context); Assert.assertEquals(mapperResult.getSql(), "SELECT id,data_id,group_id,tenant_id,app_name,content,md5,gmt_modified,type FROM config_info " - + "WHERE id > ? ORDER BY id ASC OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + + "WHERE id > ? ORDER BY id ASC OFFSET ? ROWS FETCH NEXT ?" + " ROWS ONLY"); - Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {id}); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {id, startRow, pageSize}); //with out content context.putContextParameter(ContextConstant.NEED_CONTENT, "false"); MapperResult mapperResult2 = configInfoMapperByDerby.findAllConfigInfoFragment(context); Assert.assertEquals(mapperResult2.getSql(), "SELECT id,data_id,group_id,tenant_id,app_name,md5,gmt_modified,type FROM config_info " - + "WHERE id > ? ORDER BY id ASC OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + + "WHERE id > ? ORDER BY id ASC OFFSET ? ROWS FETCH NEXT ?" + " ROWS ONLY"); - Assert.assertArrayEquals(mapperResult2.getParamList().toArray(), new Object[] {id}); + Assert.assertArrayEquals(mapperResult2.getParamList().toArray(), new Object[] {id, startRow, pageSize}); } @Test @@ -192,9 +192,9 @@ public void testFindChangeConfigFetchRows() { MapperResult mapperResult = configInfoMapperByDerby.findChangeConfigFetchRows(context); Assert.assertEquals(mapperResult.getSql(), "SELECT id,data_id,group_id,tenant_id,app_name,content,type,md5,gmt_modified FROM config_info " - + "WHERE 1=1 AND app_name = ? AND gmt_modified >=? AND gmt_modified <=? OFFSET " + startRow - + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"); - Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {appName, startTime, endTime}); + + "WHERE 1=1 AND app_name = ? AND gmt_modified >=? AND gmt_modified <=? OFFSET ?" + + " ROWS FETCH NEXT ? ROWS ONLY"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {appName, startTime, endTime, startRow, pageSize}); } @Test @@ -202,9 +202,9 @@ public void testListGroupKeyMd5ByPageFetchRows() { MapperResult mapperResult = configInfoMapperByDerby.listGroupKeyMd5ByPageFetchRows(context); Assert.assertEquals(mapperResult.getSql(), " SELECT t.id,data_id,group_id,tenant_id,app_name,type,md5,gmt_modified FROM ( SELECT id FROM config_info " - + "ORDER BY id OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + + "ORDER BY id OFFSET ? ROWS FETCH NEXT ?" + " ROWS ONLY ) g, config_info t WHERE g.id = t.id"); - Assert.assertArrayEquals(mapperResult.getParamList().toArray(), emptyObjs); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {startRow, pageSize}); } @@ -237,8 +237,8 @@ public void testFindConfigInfoBaseLikeFetchRows() { MapperResult mapperResult = configInfoMapperByDerby.findConfigInfoBaseLikeFetchRows(context); Assert.assertEquals(mapperResult.getSql(), "SELECT id,data_id,group_id,tenant_id,content FROM config_info WHERE 1=1 AND tenant_id='' " - + "OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"); - Assert.assertArrayEquals(mapperResult.getParamList().toArray(), emptyObjs); + + "OFFSET ? ROWS FETCH NEXT ? ROWS ONLY"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {startRow, pageSize}); } @Test @@ -254,8 +254,8 @@ public void testFindConfigInfo4PageFetchRows() { MapperResult mapperResult = configInfoMapperByDerby.findConfigInfo4PageFetchRows(context); Assert.assertEquals(mapperResult.getSql(), "SELECT id,data_id,group_id,tenant_id,app_name,content,type FROM config_info WHERE tenant_id=? AND app_name=? " - + " OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"); - Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {tenantId, appName}); + + " OFFSET ? ROWS FETCH NEXT ? ROWS ONLY"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {tenantId, appName, startRow, pageSize}); } @Test @@ -263,9 +263,9 @@ public void testFindConfigInfoBaseByGroupFetchRows() { context.putWhereParameter(FieldConstant.GROUP_ID, groupId); MapperResult mapperResult = configInfoMapperByDerby.findConfigInfoBaseByGroupFetchRows(context); Assert.assertEquals(mapperResult.getSql(), - "SELECT id,data_id,group_id,content FROM config_info WHERE group_id=? AND tenant_id=? " + "OFFSET " - + startRow + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"); - Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {groupId, tenantId}); + "SELECT id,data_id,group_id,content FROM config_info WHERE group_id=? AND tenant_id=? " + "OFFSET ?" + + " ROWS FETCH NEXT ? ROWS ONLY"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {groupId, tenantId, startRow, pageSize}); } @Test @@ -281,9 +281,9 @@ public void testFindConfigInfoLike4PageFetchRows() { MapperResult mapperResult = configInfoMapperByDerby.findConfigInfoLike4PageFetchRows(context); Assert.assertEquals(mapperResult.getSql(), "SELECT id,data_id,group_id,tenant_id,app_name,content,encrypted_data_key FROM config_info " - + "WHERE tenant_id LIKE ? AND app_name = ? OFFSET " + startRow + " ROWS FETCH NEXT " - + pageSize + " ROWS ONLY"); - Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {tenantId, appName}); + + "WHERE tenant_id LIKE ? AND app_name = ? OFFSET ? ROWS FETCH NEXT ?" + + " ROWS ONLY"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {tenantId, appName, startRow, pageSize}); } @Test diff --git a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoTagMapperByDerbyTest.java b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoTagMapperByDerbyTest.java index 0c552144a5a..1942f1f48ab 100644 --- a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoTagMapperByDerbyTest.java +++ b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoTagMapperByDerbyTest.java @@ -120,9 +120,9 @@ public void testFindAllConfigInfoTagForDumpAllFetchRows() { MapperResult mapperResult = configInfoTagMapperByDerby.findAllConfigInfoTagForDumpAllFetchRows(context); Assert.assertEquals(mapperResult.getSql(), "SELECT t.id,data_id,group_id,tenant_id,tag_id,app_name,content,md5,gmt_modified FROM " - + "( SELECT id FROM config_info_tag ORDER BY id OFFSET " + startRow + " ROWS FETCH NEXT " - + pageSize + " ROWS ONLY ) g, " + "config_info_tag t WHERE g.id = t.id"); - Assert.assertArrayEquals(mapperResult.getParamList().toArray(), emptyObjs); + + "( SELECT id FROM config_info_tag ORDER BY id OFFSET ? ROWS FETCH NEXT ?" + + " ROWS ONLY ) g, " + "config_info_tag t WHERE g.id = t.id"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[]{startRow, pageSize}); } @Test diff --git a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoTagsRelationMapperByDerbyTest.java b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoTagsRelationMapperByDerbyTest.java index 6dbe42121eb..1b37c6c10ec 100644 --- a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoTagsRelationMapperByDerbyTest.java +++ b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoTagsRelationMapperByDerbyTest.java @@ -68,9 +68,11 @@ public void testFindConfigInfo4PageFetchRows() { Assert.assertEquals(mapperResult.getSql(), "SELECT a.id,a.data_id,a.group_id,a.tenant_id,a.app_name,a.content FROM config_info a LEFT JOIN " + "config_tags_relation b ON a.id=b.id WHERE a.tenant_id=? AND b.tag_name IN (?, ?, ?, ?, ?) " - + "OFFSET 0 ROWS FETCH NEXT 5 ROWS ONLY"); + + "OFFSET ? ROWS FETCH NEXT ? ROWS ONLY"); List list = CollectionUtils.list(tenantId); list.addAll(Arrays.asList(tagArr)); + list.add(startRow); + list.add(pageSize); Assert.assertArrayEquals(mapperResult.getParamList().toArray(), list.toArray()); } @@ -91,9 +93,11 @@ public void tsetFindConfigInfoLike4PageFetchRows() { Assert.assertEquals(mapperResult.getSql(), "SELECT a.ID,a.data_id,a.group_id,a.tenant_id,a.app_name,a.content FROM config_info a " + "LEFT JOIN config_tags_relation b ON a.id=b.id WHERE a.tenant_id LIKE ? AND b.tag_name " - + "IN (?, ?, ?, ?, ?) OFFSET 0 ROWS FETCH NEXT 5 ROWS ONLY"); + + "IN (?, ?, ?, ?, ?) OFFSET ? ROWS FETCH NEXT ? ROWS ONLY"); List list = CollectionUtils.list(tenantId); list.addAll(Arrays.asList(tagArr)); + list.add(startRow); + list.add(pageSize); Assert.assertArrayEquals(mapperResult.getParamList().toArray(), list.toArray()); } diff --git a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/HistoryConfigInfoMapperByDerbyTest.java b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/HistoryConfigInfoMapperByDerbyTest.java index 631fb4b5d36..ee373eb2565 100644 --- a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/HistoryConfigInfoMapperByDerbyTest.java +++ b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/HistoryConfigInfoMapperByDerbyTest.java @@ -38,7 +38,7 @@ public class HistoryConfigInfoMapperByDerbyTest { int limitSize = 6; int lastMaxId = 123; - + Timestamp startTime = new Timestamp(System.currentTimeMillis()); Timestamp endTime = new Timestamp(System.currentTimeMillis()); @@ -54,7 +54,6 @@ public void setUp() throws Exception { context.putWhereParameter(FieldConstant.LIMIT_SIZE, limitSize); context.putWhereParameter(FieldConstant.LAST_MAX_ID, lastMaxId); context.putWhereParameter(FieldConstant.PAGE_SIZE, pageSize); - } @Test @@ -72,7 +71,25 @@ public void testFindConfigHistoryCountByTime() { Assert.assertEquals(mapperResult.getSql(), "SELECT count(*) FROM his_config_info WHERE gmt_modified < ?"); Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {startTime}); } - + + @Test + public void testPageFindConfigHistoryFetchRows() { + Object dataId = "dataId"; + Object groupId = "groupId"; + Object tenantId = "tenantId"; + + context.putWhereParameter(FieldConstant.DATA_ID, dataId); + context.putWhereParameter(FieldConstant.GROUP_ID, groupId); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantId); + MapperResult mapperResult = historyConfigInfoMapperByDerby.pageFindConfigHistoryFetchRows(context); + Assert.assertEquals(mapperResult.getSql(), + "SELECT nid,data_id,group_id,tenant_id,app_name,src_ip,src_user,op_type,gmt_create,gmt_modified FROM his_config_info " + + "WHERE data_id = ? AND group_id = ? AND tenant_id = ? ORDER BY nid DESC OFFSET ?" + + " ROWS FETCH NEXT ? ROWS ONLY"); + + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {dataId, groupId, tenantId, startRow, pageSize}); + } + @Test public void testFindDeletedConfig() { MapperResult mapperResult = historyConfigInfoMapperByDerby.findDeletedConfig(context); diff --git a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoAggrMapperByMySqlTest.java b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoAggrMapperByMySqlTest.java index ce27ff774ee..c3d09f50ef4 100644 --- a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoAggrMapperByMySqlTest.java +++ b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoAggrMapperByMySqlTest.java @@ -134,8 +134,8 @@ public void testFindConfigInfoAggrByPageFetchRows() { Assert.assertEquals(sql, "SELECT data_id,group_id,tenant_id,datum_id,app_name,content FROM config_info_aggr WHERE " - + "data_id= ? AND group_id= ? AND tenant_id= ? ORDER BY datum_id LIMIT 0,5"); - Assert.assertEquals(paramList, Arrays.asList(dataId, groupId, tenantId)); + + "data_id= ? AND group_id= ? AND tenant_id= ? ORDER BY datum_id LIMIT ?,?"); + Assert.assertEquals(paramList, Arrays.asList(dataId, groupId, tenantId, startRow, pageSize)); } @Test diff --git a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoBetaMapperByMySqlTest.java b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoBetaMapperByMySqlTest.java index a06c21437c6..a99f8d74b13 100644 --- a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoBetaMapperByMySqlTest.java +++ b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoBetaMapperByMySqlTest.java @@ -122,7 +122,7 @@ public void testFindAllConfigInfoBetaForDumpAllFetchRows() { List paramList = result.getParamList(); Assert.assertEquals(sql, " SELECT t.id,data_id,group_id,tenant_id,app_name,content,md5,gmt_modified,beta_ips,encrypted_data_key " - + " FROM ( SELECT id FROM config_info_beta ORDER BY id LIMIT " + startRow + "," + pageSize + + " FROM ( SELECT id FROM config_info_beta ORDER BY id LIMIT ?,?" + " )" + " g, config_info_beta t WHERE g.id = t.id "); Assert.assertEquals(paramList, Arrays.asList(startRow, pageSize)); } diff --git a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoMapperByMySqlTest.java b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoMapperByMySqlTest.java index 715a874b1f0..29a6762c12b 100644 --- a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoMapperByMySqlTest.java +++ b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoMapperByMySqlTest.java @@ -101,8 +101,8 @@ public void testFindConfigInfoByAppFetchRows() { MapperResult mapperResult = configInfoMapperByMySql.findConfigInfoByAppFetchRows(context); Assert.assertEquals(mapperResult.getSql(), "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE tenant_id LIKE ? AND app_name= ? LIMIT " - + startRow + "," + pageSize); - Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {tenantId, appName}); + + "?,?"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {tenantId, appName, startRow, pageSize}); } @Test @@ -117,35 +117,34 @@ public void testGetTenantIdList() { MapperResult mapperResult = configInfoMapperByMySql.getTenantIdList(context); Assert.assertEquals(mapperResult.getSql(), "SELECT tenant_id FROM config_info WHERE tenant_id != '" + NamespaceUtil.getNamespaceDefaultId() - + "' GROUP BY tenant_id LIMIT " + startRow + "," + pageSize); - Assert.assertArrayEquals(mapperResult.getParamList().toArray(), emptyObjs); + + "' GROUP BY tenant_id LIMIT ?,?"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {startRow, pageSize}); } @Test public void testGetGroupIdList() { MapperResult mapperResult = configInfoMapperByMySql.getGroupIdList(context); Assert.assertEquals(mapperResult.getSql(), - "SELECT group_id FROM config_info WHERE tenant_id ='' GROUP BY group_id LIMIT " + startRow + "," - + pageSize); - Assert.assertArrayEquals(mapperResult.getParamList().toArray(), emptyObjs); + "SELECT group_id FROM config_info WHERE tenant_id ='' GROUP BY group_id LIMIT ?,?"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {startRow, pageSize}); } @Test public void testFindAllConfigKey() { MapperResult mapperResult = configInfoMapperByMySql.findAllConfigKey(context); Assert.assertEquals(mapperResult.getSql(), " SELECT data_id,group_id,app_name FROM ( " - + " SELECT id FROM config_info WHERE tenant_id LIKE ? ORDER BY id LIMIT " + context.getStartRow() + "," - + context.getPageSize() + " )" + " g, config_info t WHERE g.id = t.id "); - Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {tenantId}); + + " SELECT id FROM config_info WHERE tenant_id LIKE ? ORDER BY id LIMIT ?,?" + + " )" + " g, config_info t WHERE g.id = t.id "); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {tenantId, startRow, pageSize}); } @Test public void testFindAllConfigInfoBaseFetchRows() { MapperResult mapperResult = configInfoMapperByMySql.findAllConfigInfoBaseFetchRows(context); Assert.assertEquals(mapperResult.getSql(), - "SELECT t.id,data_id,group_id,content,md5 FROM ( SELECT id FROM config_info ORDER BY id LIMIT " + context.getStartRow() + "," - + context.getPageSize() + " ) g, config_info t WHERE g.id = t.id "); - Assert.assertArrayEquals(mapperResult.getParamList().toArray(), emptyObjs); + "SELECT t.id,data_id,group_id,content,md5 FROM ( SELECT id FROM config_info ORDER BY id LIMIT ?,?" + + " ) g, config_info t WHERE g.id = t.id "); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {startRow, pageSize}); } @Test @@ -156,16 +155,16 @@ public void testFindAllConfigInfoFragment() { MapperResult mapperResult = configInfoMapperByMySql.findAllConfigInfoFragment(context); Assert.assertEquals( "SELECT id,data_id,group_id,tenant_id,app_name,content,md5,gmt_modified,type,encrypted_data_key " - + "FROM config_info WHERE id > ? ORDER BY id ASC LIMIT " + startRow + "," + pageSize, + + "FROM config_info WHERE id > ? ORDER BY id ASC LIMIT ?,?", mapperResult.getSql()); - Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {id}); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {id, startRow, pageSize}); context.putContextParameter(ContextConstant.NEED_CONTENT, "false"); MapperResult mapperResult2 = configInfoMapperByMySql.findAllConfigInfoFragment(context); Assert.assertEquals("SELECT id,data_id,group_id,tenant_id,app_name,md5,gmt_modified,type,encrypted_data_key " - + "FROM config_info WHERE id > ? ORDER BY id ASC LIMIT " + startRow + "," + pageSize, + + "FROM config_info WHERE id > ? ORDER BY id ASC LIMIT ?,?", mapperResult2.getSql()); - Assert.assertArrayEquals(mapperResult2.getParamList().toArray(), new Object[] {id}); + Assert.assertArrayEquals(mapperResult2.getParamList().toArray(), new Object[] {id, startRow, pageSize}); } @Test @@ -193,10 +192,10 @@ public void testFindChangeConfigFetchRows() { MapperResult mapperResult = configInfoMapperByMySql.findChangeConfigFetchRows(context); Assert.assertEquals(mapperResult.getSql(), "SELECT id,data_id,group_id,tenant_id,app_name,type,md5,gmt_modified FROM config_info " - + "WHERE 1=1 AND tenant_id = ? AND app_name = ? AND gmt_modified >=? AND gmt_modified <=? AND id > " - + lastMaxId + " ORDER BY id ASC LIMIT " + startRow + "," + pageSize); + + "WHERE 1=1 AND tenant_id = ? AND app_name = ? AND gmt_modified >=? AND gmt_modified <=? AND id > ?" + + " ORDER BY id ASC LIMIT ?,?"); Assert.assertArrayEquals(mapperResult.getParamList().toArray(), - new Object[] {tenantId, appName, startTime, endTime}); + new Object[] {tenantId, appName, startTime, endTime, lastMaxId, startRow, pageSize}); } @Test @@ -204,8 +203,8 @@ public void testListGroupKeyMd5ByPageFetchRows() { MapperResult mapperResult = configInfoMapperByMySql.listGroupKeyMd5ByPageFetchRows(context); Assert.assertEquals(mapperResult.getSql(), "SELECT t.id,data_id,group_id,tenant_id,app_name,md5,type,gmt_modified,encrypted_data_key FROM " - + "( SELECT id FROM config_info ORDER BY id LIMIT 0,5 ) g, config_info t WHERE g.id = t.id"); - Assert.assertArrayEquals(mapperResult.getParamList().toArray(), emptyObjs); + + "( SELECT id FROM config_info ORDER BY id LIMIT ?,? ) g, config_info t WHERE g.id = t.id"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {startRow, pageSize}); } @@ -236,9 +235,8 @@ public void testFindConfigInfoBaseLikeCountRows() { public void testFindConfigInfoBaseLikeFetchRows() { MapperResult mapperResult = configInfoMapperByMySql.findConfigInfoBaseLikeFetchRows(context); Assert.assertEquals(mapperResult.getSql(), - "SELECT id,data_id,group_id,tenant_id,content FROM config_info WHERE 1=1 AND tenant_id='' LIMIT " - + startRow + "," + pageSize); - Assert.assertArrayEquals(mapperResult.getParamList().toArray(), emptyObjs); + "SELECT id,data_id,group_id,tenant_id,content FROM config_info WHERE 1=1 AND tenant_id='' LIMIT ?,?"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {startRow, pageSize}); } @Test @@ -254,8 +252,8 @@ public void testFindConfigInfo4PageFetchRows() { MapperResult mapperResult = configInfoMapperByMySql.findConfigInfo4PageFetchRows(context); Assert.assertEquals(mapperResult.getSql(), "SELECT id,data_id,group_id,tenant_id,app_name,content,type,encrypted_data_key FROM config_info" - + " WHERE tenant_id=? AND app_name=? LIMIT " + startRow + "," + pageSize); - Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {tenantId, appName}); + + " WHERE tenant_id=? AND app_name=? LIMIT ?,?"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {tenantId, appName, startRow, pageSize}); } @Test @@ -263,9 +261,8 @@ public void testFindConfigInfoBaseByGroupFetchRows() { context.putWhereParameter(FieldConstant.GROUP_ID, groupId); MapperResult mapperResult = configInfoMapperByMySql.findConfigInfoBaseByGroupFetchRows(context); Assert.assertEquals(mapperResult.getSql(), - "SELECT id,data_id,group_id,content FROM config_info WHERE group_id=? AND tenant_id=? LIMIT " + startRow - + "," + pageSize); - Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {groupId, tenantId}); + "SELECT id,data_id,group_id,content FROM config_info WHERE group_id=? AND tenant_id=? LIMIT ?,?"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {groupId, tenantId, startRow, pageSize}); } @Test @@ -281,8 +278,8 @@ public void testFindConfigInfoLike4PageFetchRows() { MapperResult mapperResult = configInfoMapperByMySql.findConfigInfoLike4PageFetchRows(context); Assert.assertEquals(mapperResult.getSql(), "SELECT id,data_id,group_id,tenant_id,app_name,content,encrypted_data_key FROM config_info " - + "WHERE tenant_id LIKE ? AND app_name = ? LIMIT " + startRow + "," + pageSize); - Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {tenantId, appName}); + + "WHERE tenant_id LIKE ? AND app_name = ? LIMIT ?,?"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {tenantId, appName, startRow, pageSize}); } @Test diff --git a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoTagMapperByMySqlTest.java b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoTagMapperByMySqlTest.java index 7632785b5d4..03a0c38f5ae 100644 --- a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoTagMapperByMySqlTest.java +++ b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoTagMapperByMySqlTest.java @@ -120,9 +120,9 @@ public void testFindAllConfigInfoTagForDumpAllFetchRows() { MapperResult mapperResult = configInfoTagMapperByMySql.findAllConfigInfoTagForDumpAllFetchRows(context); Assert.assertEquals(mapperResult.getSql(), " SELECT t.id,data_id,group_id,tenant_id,tag_id,app_name,content,md5,gmt_modified FROM ( " - + "SELECT id FROM config_info_tag ORDER BY id LIMIT " + startRow + "," + pageSize + + "SELECT id FROM config_info_tag ORDER BY id LIMIT ?,?" + " ) g, config_info_tag t WHERE g.id = t.id "); - Assert.assertArrayEquals(mapperResult.getParamList().toArray(), emptyObjs); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[]{startRow, pageSize}); } @Test diff --git a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigTagsRelationMapperByMySqlTest.java b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigTagsRelationMapperByMySqlTest.java index 78899040a95..30ea7e1b318 100644 --- a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigTagsRelationMapperByMySqlTest.java +++ b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigTagsRelationMapperByMySqlTest.java @@ -85,14 +85,15 @@ public void testFindConfigInfo4PageFetchRows() { "SELECT a.id,a.data_id,a.group_id,a.tenant_id,a.app_name,a.content FROM config_info " + "a LEFT JOIN config_tags_relation b ON a.id=b.id " + "WHERE a.tenant_id=? AND a.data_id=? AND a.group_id=? AND a.app_name=? AND a.content LIKE ? " - + " AND b.tag_name IN (?, ?, ?, ?, ?) LIMIT " - + startRow + "," + pageSize, mapperResult.getSql()); + + " AND b.tag_name IN (?, ?, ?, ?, ?) LIMIT ?,?", mapperResult.getSql()); List list = CollectionUtils.list(tenantId); list.add("dataID1"); list.add("groupID1"); list.add("AppName1"); list.add("Content1"); list.addAll(Arrays.asList(tagArr)); + list.add(startRow); + list.add(pageSize); Assert.assertArrayEquals(mapperResult.getParamList().toArray(), list.toArray()); } @@ -125,14 +126,16 @@ public void tsetFindConfigInfoLike4PageFetchRows() { Assert.assertEquals(mapperResult.getSql(), "SELECT a.id,a.data_id,a.group_id,a.tenant_id,a.app_name,a.content FROM config_info a LEFT JOIN" + " config_tags_relation b ON a.id=b.id WHERE a.tenant_id LIKE ? AND a.data_id LIKE ? " - + "AND a.group_id LIKE ? AND a.app_name = ? AND a.content LIKE ? AND b.tag_name IN (?, ?, ?, ?, ?) LIMIT " - + startRow + "," + pageSize); + + "AND a.group_id LIKE ? AND a.app_name = ? AND a.content LIKE ? AND b.tag_name IN (?, ?, ?, ?, ?) LIMIT" + + " ?,?"); List list = CollectionUtils.list(tenantId); list.add("dataID1"); list.add("groupID1"); list.add("AppName1"); list.add("Content1"); list.addAll(Arrays.asList(tagArr)); + list.add(startRow); + list.add(pageSize); Assert.assertArrayEquals(mapperResult.getParamList().toArray(), list.toArray()); } diff --git a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/HistoryConfigInfoMapperByMySqlTest.java b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/HistoryConfigInfoMapperByMySqlTest.java index ef4a5cffcfd..9a0eab8d386 100644 --- a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/HistoryConfigInfoMapperByMySqlTest.java +++ b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/HistoryConfigInfoMapperByMySqlTest.java @@ -69,6 +69,23 @@ public void testFindConfigHistoryCountByTime() { Assert.assertEquals(mapperResult.getSql(), "SELECT count(*) FROM his_config_info WHERE gmt_modified < ?"); Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {startTime}); } + + @Test + public void testPageFindConfigHistoryFetchRows() { + Object dataId = "dataId"; + Object groupId = "groupId"; + Object tenantId = "tenantId"; + + context.putWhereParameter(FieldConstant.DATA_ID, dataId); + context.putWhereParameter(FieldConstant.GROUP_ID, groupId); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantId); + MapperResult mapperResult = historyConfigInfoMapperByMySql.pageFindConfigHistoryFetchRows(context); + Assert.assertEquals(mapperResult.getSql(), + "SELECT nid,data_id,group_id,tenant_id,app_name,src_ip,src_user,op_type,gmt_create,gmt_modified FROM his_config_info " + + "WHERE data_id = ? AND group_id = ? AND tenant_id = ? ORDER BY nid DESC LIMIT ?,?"); + + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {dataId, groupId, tenantId, startRow, pageSize}); + } @Test public void testFindDeletedConfig() { From 2d079480af93c6fa48380a1c1c1e1b3e5fa7598a Mon Sep 17 00:00:00 2001 From: zhangyang <1445621702@qq.com> Date: Wed, 3 Apr 2024 12:28:01 +0800 Subject: [PATCH 2/4] [ISSUE#11910] Modify the logic of other unit tests and service --- ...edHistoryConfigInfoPersistServiceImpl.java | 2 +- ...alHistoryConfigInfoPersistServiceImpl.java | 3 +- ...dConfigInfoAggrPersistServiceImplTest.java | 8 ++-- ...eddedConfigInfoPersistServiceImplTest.java | 40 ++++++++++------ ...edConfigInfoTagPersistServiceImplTest.java | 7 +-- ...storyConfigInfoPersistServiceImplTest.java | 8 ++-- ...lConfigInfoAggrPersistServiceImplTest.java | 10 ++-- ...ernalConfigInfoPersistServiceImplTest.java | 48 +++++++++++++------ ...alConfigInfoTagPersistServiceImplTest.java | 8 ++-- ...storyConfigInfoPersistServiceImplTest.java | 9 ++-- 10 files changed, 92 insertions(+), 51 deletions(-) diff --git a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedHistoryConfigInfoPersistServiceImpl.java b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedHistoryConfigInfoPersistServiceImpl.java index 4bfdf8ec65b..b088ec46a01 100644 --- a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedHistoryConfigInfoPersistServiceImpl.java +++ b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedHistoryConfigInfoPersistServiceImpl.java @@ -151,7 +151,7 @@ public Page findConfigHistory(String dataId, String group, St MapperResult sqlFetchRows = historyConfigInfoMapper.pageFindConfigHistoryFetchRows(context); PaginationHelper helper = createPaginationHelper(); - return helper.fetchPage(sqlCountRows, sqlFetchRows.getSql(), sqlFetchRows.getParamList().toArray(), pageNo, + return helper.fetchPageLimit(sqlCountRows, new Object[]{dataId, group, tenantTmp}, sqlFetchRows.getSql(), sqlFetchRows.getParamList().toArray(), pageNo, pageSize, HISTORY_LIST_ROW_MAPPER); } diff --git a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalHistoryConfigInfoPersistServiceImpl.java b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalHistoryConfigInfoPersistServiceImpl.java index eeec61d6130..de4501c9880 100644 --- a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalHistoryConfigInfoPersistServiceImpl.java +++ b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalHistoryConfigInfoPersistServiceImpl.java @@ -158,7 +158,8 @@ public Page findConfigHistory(String dataId, String group, St Page page; try { - page = helper.fetchPage(sqlCountRows, sqlFetchRows.getSql(), sqlFetchRows.getParamList().toArray(), pageNo, + page = helper.fetchPageLimit(sqlCountRows, new Object[]{dataId, group, tenant}, + sqlFetchRows.getSql(), sqlFetchRows.getParamList().toArray(), pageNo, pageSize, HISTORY_LIST_ROW_MAPPER); } catch (DataAccessException e) { LogUtil.FATAL_LOG.error("[list-config-history] error, dataId:{}, group:{}", new Object[] {dataId, group}, diff --git a/config/src/test/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedConfigInfoAggrPersistServiceImplTest.java b/config/src/test/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedConfigInfoAggrPersistServiceImplTest.java index c6607c3c98e..99e2ce50655 100644 --- a/config/src/test/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedConfigInfoAggrPersistServiceImplTest.java +++ b/config/src/test/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedConfigInfoAggrPersistServiceImplTest.java @@ -201,7 +201,7 @@ public void testFindConfigInfoAggrByPage() { String dataId = "dataId111"; String group = "group"; String tenant = "tenant"; - + //mock query count. Mockito.when(databaseOperate.queryOne(anyString(), eq(new Object[] {dataId, group, tenant}), eq(Integer.class))) .thenReturn(101); @@ -210,11 +210,11 @@ public void testFindConfigInfoAggrByPage() { configInfoAggrs.add(new ConfigInfoAggr()); configInfoAggrs.add(new ConfigInfoAggr()); configInfoAggrs.add(new ConfigInfoAggr()); - - Mockito.when(databaseOperate.queryMany(anyString(), eq(new Object[] {dataId, group, tenant}), - eq(CONFIG_INFO_AGGR_ROW_MAPPER))).thenReturn(configInfoAggrs); int pageNo = 1; int pageSize = 120; + int startRow = (pageNo - 1) * pageSize; + Mockito.when(databaseOperate.queryMany(anyString(), eq(new Object[] {dataId, group, tenant, startRow, pageSize}), + eq(CONFIG_INFO_AGGR_ROW_MAPPER))).thenReturn(configInfoAggrs); Page configInfoAggrByPage = embededConfigInfoAggrPersistService.findConfigInfoAggrByPage(dataId, group, tenant, pageNo, pageSize); Assert.assertEquals(101, configInfoAggrByPage.getTotalCount()); diff --git a/config/src/test/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedConfigInfoPersistServiceImplTest.java b/config/src/test/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedConfigInfoPersistServiceImplTest.java index 5d263382f6b..32058f61d62 100644 --- a/config/src/test/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedConfigInfoPersistServiceImplTest.java +++ b/config/src/test/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedConfigInfoPersistServiceImplTest.java @@ -644,7 +644,7 @@ public void testFindConfigInfo4Page() { String dataId = "dataId4567222"; String group = "group3456789"; String tenant = "tenant4567890"; - + //mock total count when(databaseOperate.queryOne(anyString(), eq(new Object[] {tenant, dataId, group}), eq(Integer.class))).thenReturn(new Integer(9)); @@ -653,10 +653,14 @@ public void testFindConfigInfo4Page() { result.add(createMockConfigInfo(0)); result.add(createMockConfigInfo(1)); result.add(createMockConfigInfo(2)); - when(databaseOperate.queryMany(anyString(), eq(new Object[] {tenant, dataId, group}), + + int pageNo = 1; + int pageSize = 3; + int startRow = (pageNo - 1) * pageSize; + when(databaseOperate.queryMany(anyString(), eq(new Object[] {tenant, dataId, group, startRow, pageSize}), eq(CONFIG_INFO_ROW_MAPPER))).thenReturn(result); Map configAdvanceInfo = new HashMap<>(); - Page configInfo4Page = embeddedConfigInfoPersistService.findConfigInfo4Page(1, 3, dataId, group, + Page configInfo4Page = embeddedConfigInfoPersistService.findConfigInfo4Page(pageNo, pageSize, dataId, group, tenant, configAdvanceInfo); Assert.assertEquals(result.size(), configInfo4Page.getPageItems().size()); Assert.assertEquals(9, configInfo4Page.getTotalCount()); @@ -670,7 +674,6 @@ public void testFindConfigInfo4PageWithTags() { String tenant = "tenant4567890"; Map configAdvanceInfo = new HashMap<>(); configAdvanceInfo.put("config_tags", "tags1,tags3"); - //mock total count when(databaseOperate.queryOne(anyString(), eq(new Object[] {tenant, dataId, group, "tags1", "tags3"}), eq(Integer.class))).thenReturn(new Integer(9)); @@ -679,10 +682,14 @@ public void testFindConfigInfo4PageWithTags() { result.add(createMockConfigInfo(0)); result.add(createMockConfigInfo(1)); result.add(createMockConfigInfo(2)); - when(databaseOperate.queryMany(anyString(), eq(new Object[] {tenant, dataId, group, "tags1", "tags3"}), + + int pageNo = 1; + int pageSize = 3; + int startRow = (pageNo - 1) * pageSize; + when(databaseOperate.queryMany(anyString(), eq(new Object[] {tenant, dataId, group, "tags1", "tags3", startRow, pageSize}), eq(CONFIG_INFO_ROW_MAPPER))).thenReturn(result); - Page configInfo4Page = embeddedConfigInfoPersistService.findConfigInfo4Page(1, 3, dataId, group, + Page configInfo4Page = embeddedConfigInfoPersistService.findConfigInfo4Page(pageNo, pageSize, dataId, group, tenant, configAdvanceInfo); Assert.assertEquals(result.size(), configInfo4Page.getPageItems().size()); Assert.assertEquals(9, configInfo4Page.getTotalCount()); @@ -745,11 +752,15 @@ public void testFindConfigInfoLike4Page() { result.add(createMockConfigInfo(0)); result.add(createMockConfigInfo(1)); result.add(createMockConfigInfo(2)); + + int pageNo = 1; + int pageSize = 3; + int startRow = (pageNo - 1) * pageSize; when(databaseOperate.queryMany(anyString(), eq(new Object[] {tenant, dataId.replaceAll("\\*", "%"), group.replaceAll("\\*", "%"), appName, - content}), eq(CONFIG_INFO_ROW_MAPPER))).thenReturn(result); + content, startRow, pageSize}), eq(CONFIG_INFO_ROW_MAPPER))).thenReturn(result); - Page configInfo4Page = embeddedConfigInfoPersistService.findConfigInfoLike4Page(1, 3, dataId, group, + Page configInfo4Page = embeddedConfigInfoPersistService.findConfigInfoLike4Page(pageNo, pageSize, dataId, group, tenant, configAdvanceInfo); Assert.assertEquals(result.size(), configInfo4Page.getPageItems().size()); Assert.assertEquals(9, configInfo4Page.getTotalCount()); @@ -779,7 +790,7 @@ public void testFindConfigInfoLike4PageWithTags() { result.add(createMockConfigInfo(2)); when(databaseOperate.queryMany(anyString(), eq(new Object[] {tenant, dataId.replaceAll("\\*", "%"), group.replaceAll("\\*", "%"), appName, content, - "tags", "tag2"}), eq(CONFIG_INFO_ROW_MAPPER))).thenReturn(result); + "tags", "tag2", 0, 3}), eq(CONFIG_INFO_ROW_MAPPER))).thenReturn(result); Page configInfo4Page = embeddedConfigInfoPersistService.findConfigInfoLike4Page(1, 3, dataId, group, tenant, configAdvanceInfo); @@ -980,10 +991,10 @@ public void testGetTenantIdList() { g3.put("TENANT_ID", tenantStrings.get(2)); List> params = new ArrayList<>(); params.addAll(Arrays.asList(g1, g2, g3)); - - when(databaseOperate.queryMany(anyString(), eq(new Object[] {}), eq(MAP_ROW_MAPPER))).thenReturn(params); int page = 10; int pageSize = 100; + int startRow = (page - 1) * pageSize; + when(databaseOperate.queryMany(anyString(), eq(new Object[] {startRow, pageSize}), eq(MAP_ROW_MAPPER))).thenReturn(params); //execute return mock obj List returnTenants = embeddedConfigInfoPersistService.getTenantIdList(page, pageSize); //expect check @@ -1004,9 +1015,10 @@ public void testGetGroupIdList() { g3.put("GROUP_ID", groupStrings.get(2)); List> params = new ArrayList<>(); params.addAll(Arrays.asList(g1, g2, g3)); - when(databaseOperate.queryMany(anyString(), eq(new Object[] {}), eq(MAP_ROW_MAPPER))).thenReturn(params); int page = 10; int pageSize = 100; + int startRow = (page - 1) * pageSize; + when(databaseOperate.queryMany(anyString(), eq(new Object[] {startRow, pageSize}), eq(MAP_ROW_MAPPER))).thenReturn(params); //execute return mock obj List returnGroups = embeddedConfigInfoPersistService.getGroupIdList(page, pageSize); @@ -1022,9 +1034,9 @@ public void testFindAllConfigInfoFragment() { mockConfigs.add(createMockConfigInfoWrapper(1)); mockConfigs.add(createMockConfigInfoWrapper(2)); long lastId = 10111L; - when(databaseOperate.queryMany(anyString(), eq(new Object[] {lastId}), - eq(CONFIG_INFO_WRAPPER_ROW_MAPPER))).thenReturn(mockConfigs); int pageSize = 100; + when(databaseOperate.queryMany(anyString(), eq(new Object[] {lastId, 0, pageSize}), + eq(CONFIG_INFO_WRAPPER_ROW_MAPPER))).thenReturn(mockConfigs); //execute return mock obj Page returnConfigPage = embeddedConfigInfoPersistService.findAllConfigInfoFragment(lastId, pageSize, true); diff --git a/config/src/test/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedConfigInfoTagPersistServiceImplTest.java b/config/src/test/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedConfigInfoTagPersistServiceImplTest.java index 90466e04f4e..2a16baaeae7 100644 --- a/config/src/test/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedConfigInfoTagPersistServiceImplTest.java +++ b/config/src/test/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedConfigInfoTagPersistServiceImplTest.java @@ -290,12 +290,13 @@ public void testFindAllConfigInfoTagForDumpAll() { mockTagList.get(0).setLastModified(System.currentTimeMillis()); mockTagList.get(1).setLastModified(System.currentTimeMillis()); mockTagList.get(2).setLastModified(System.currentTimeMillis()); + int pageNo = 3; + int pageSize = 100; + int startRow = (pageNo - 1) * pageSize; //mock query list Mockito.when( - databaseOperate.queryMany(anyString(), eq(new Object[] {}), eq(CONFIG_INFO_TAG_WRAPPER_ROW_MAPPER))) + databaseOperate.queryMany(anyString(), eq(new Object[] {startRow, pageSize}), eq(CONFIG_INFO_TAG_WRAPPER_ROW_MAPPER))) .thenReturn(mockTagList); - int pageNo = 3; - int pageSize = 100; //execute & verify Page returnTagPage = embeddedConfigInfoTagPersistService.findAllConfigInfoTagForDumpAll( pageNo, pageSize); diff --git a/config/src/test/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedHistoryConfigInfoPersistServiceImplTest.java b/config/src/test/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedHistoryConfigInfoPersistServiceImplTest.java index 52b27017329..69181badbe6 100644 --- a/config/src/test/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedHistoryConfigInfoPersistServiceImplTest.java +++ b/config/src/test/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedHistoryConfigInfoPersistServiceImplTest.java @@ -170,7 +170,7 @@ public void testFindConfigHistory() { String dataId = "dataId34567"; String group = "group34567"; String tenant = "tenant34567"; - + //mock count Mockito.when(databaseOperate.queryOne(anyString(), eq(new Object[] {dataId, group, tenant}), eq(Integer.class))) .thenReturn(300); @@ -179,10 +179,12 @@ public void testFindConfigHistory() { mockList.add(createMockConfigHistoryInfo(0)); mockList.add(createMockConfigHistoryInfo(1)); mockList.add(createMockConfigHistoryInfo(2)); - Mockito.when(databaseOperate.queryMany(anyString(), eq(new Object[] {dataId, group, tenant}), - eq(HISTORY_LIST_ROW_MAPPER))).thenReturn(mockList); + int pageSize = 100; int pageNo = 2; + int startRow = (pageNo - 1) * pageSize; + Mockito.when(databaseOperate.queryMany(anyString(), eq(new Object[] {dataId, group, tenant, startRow, pageSize}), + eq(HISTORY_LIST_ROW_MAPPER))).thenReturn(mockList); //execute & verify Page historyReturn = embeddedHistoryConfigInfoPersistService.findConfigHistory(dataId, group, tenant, pageNo, pageSize); diff --git a/config/src/test/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalConfigInfoAggrPersistServiceImplTest.java b/config/src/test/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalConfigInfoAggrPersistServiceImplTest.java index 47922d240e2..4859b039a18 100644 --- a/config/src/test/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalConfigInfoAggrPersistServiceImplTest.java +++ b/config/src/test/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalConfigInfoAggrPersistServiceImplTest.java @@ -242,7 +242,7 @@ public void testFindConfigInfoAggrByPage() { String dataId = "dataId111"; String group = "group"; String tenant = "tenant"; - + //mock query count. when(jdbcTemplate.queryForObject(anyString(), eq(new Object[] {dataId, group, tenant}), eq(Integer.class))).thenReturn(101); @@ -251,11 +251,13 @@ public void testFindConfigInfoAggrByPage() { configInfoAggrs.add(new ConfigInfoAggr()); configInfoAggrs.add(new ConfigInfoAggr()); configInfoAggrs.add(new ConfigInfoAggr()); - - when(jdbcTemplate.query(anyString(), eq(new Object[] {dataId, group, tenant}), - eq(CONFIG_INFO_AGGR_ROW_MAPPER))).thenReturn(configInfoAggrs); + int pageNo = 1; int pageSize = 120; + int startRow = (pageNo - 1) * pageSize; + when(jdbcTemplate.query(anyString(), eq(new Object[] {dataId, group, tenant, startRow, pageSize}), + eq(CONFIG_INFO_AGGR_ROW_MAPPER))).thenReturn(configInfoAggrs); + Page configInfoAggrByPage = externalConfigInfoAggrPersistService.findConfigInfoAggrByPage( dataId, group, tenant, pageNo, pageSize); Assert.assertEquals(101, configInfoAggrByPage.getTotalCount()); diff --git a/config/src/test/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalConfigInfoPersistServiceImplTest.java b/config/src/test/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalConfigInfoPersistServiceImplTest.java index 6ea3e887e4f..10fc14ec96b 100644 --- a/config/src/test/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalConfigInfoPersistServiceImplTest.java +++ b/config/src/test/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalConfigInfoPersistServiceImplTest.java @@ -760,7 +760,7 @@ public void testFindConfigInfo4Page() { String dataId = "dataId4567222"; String group = "group3456789"; String tenant = "tenant4567890"; - + //mock total count when(jdbcTemplate.queryForObject(anyString(), eq(new Object[] {tenant, dataId, group}), eq(Integer.class))).thenReturn(new Integer(9)); @@ -769,10 +769,13 @@ public void testFindConfigInfo4Page() { result.add(createMockConfigInfo(0)); result.add(createMockConfigInfo(1)); result.add(createMockConfigInfo(2)); - when(jdbcTemplate.query(anyString(), eq(new Object[] {tenant, dataId, group}), + int pageNo = 1; + int pageSize = 3; + int startRow = (pageNo - 1) * pageSize; + when(jdbcTemplate.query(anyString(), eq(new Object[] {tenant, dataId, group, startRow, pageSize}), eq(CONFIG_INFO_ROW_MAPPER))).thenReturn(result); Map configAdvanceInfo = new HashMap<>(); - Page configInfo4Page = externalConfigInfoPersistService.findConfigInfo4Page(1, 3, dataId, group, + Page configInfo4Page = externalConfigInfoPersistService.findConfigInfo4Page(pageNo, pageSize, dataId, group, tenant, configAdvanceInfo); Assert.assertEquals(result.size(), configInfo4Page.getPageItems().size()); Assert.assertEquals(9, configInfo4Page.getTotalCount()); @@ -784,6 +787,7 @@ public void testFindConfigInfo4PageWithTags() { String dataId = "dataId4567222"; String group = "group3456789"; String tenant = "tenant4567890"; + Map configAdvanceInfo = new HashMap<>(); configAdvanceInfo.put("config_tags", "tags1,tags3"); @@ -795,10 +799,14 @@ public void testFindConfigInfo4PageWithTags() { result.add(createMockConfigInfo(0)); result.add(createMockConfigInfo(1)); result.add(createMockConfigInfo(2)); - when(jdbcTemplate.query(anyString(), eq(new Object[] {tenant, dataId, group, "tags1", "tags3"}), + + int pageNo = 1; + int pageSize = 3; + int startRow = (pageNo - 1) * pageSize; + when(jdbcTemplate.query(anyString(), eq(new Object[] {tenant, dataId, group, "tags1", "tags3", startRow, pageSize}), eq(CONFIG_INFO_ROW_MAPPER))).thenReturn(result); - Page configInfo4Page = externalConfigInfoPersistService.findConfigInfo4Page(1, 3, dataId, group, + Page configInfo4Page = externalConfigInfoPersistService.findConfigInfo4Page(pageNo, pageSize, dataId, group, tenant, configAdvanceInfo); Assert.assertEquals(result.size(), configInfo4Page.getPageItems().size()); Assert.assertEquals(9, configInfo4Page.getTotalCount()); @@ -849,6 +857,7 @@ public void testFindConfigInfoLike4Page() { String tenant = "tenant4567890"; String appName = "appName1234"; String content = "content123"; + Map configAdvanceInfo = new HashMap<>(); configAdvanceInfo.put("appName", appName); configAdvanceInfo.put("content", content); @@ -861,11 +870,15 @@ public void testFindConfigInfoLike4Page() { result.add(createMockConfigInfo(0)); result.add(createMockConfigInfo(1)); result.add(createMockConfigInfo(2)); + + int pageNo = 1; + int pageSize = 3; + int startRow = (pageNo - 1) * pageSize; when(jdbcTemplate.query(anyString(), eq(new Object[] {tenant, dataId.replaceAll("\\*", "%"), group.replaceAll("\\*", "%"), appName, - content}), eq(CONFIG_INFO_ROW_MAPPER))).thenReturn(result); + content, startRow, pageSize}), eq(CONFIG_INFO_ROW_MAPPER))).thenReturn(result); - Page configInfo4Page = externalConfigInfoPersistService.findConfigInfoLike4Page(1, 3, dataId, group, + Page configInfo4Page = externalConfigInfoPersistService.findConfigInfoLike4Page(pageNo, pageSize, dataId, group, tenant, configAdvanceInfo); Assert.assertEquals(result.size(), configInfo4Page.getPageItems().size()); Assert.assertEquals(9, configInfo4Page.getTotalCount()); @@ -884,6 +897,7 @@ public void testFindConfigInfoLike4PageWithTags() { String dataId = "dataId4567222*"; String group = "group3456789*"; String tenant = "tenant4567890"; + //mock total count when(jdbcTemplate.queryForObject(anyString(), eq(new Object[] {tenant, dataId.replaceAll("\\*", "%"), group.replaceAll("\\*", "%"), appName, content, @@ -893,11 +907,15 @@ public void testFindConfigInfoLike4PageWithTags() { result.add(createMockConfigInfo(0)); result.add(createMockConfigInfo(1)); result.add(createMockConfigInfo(2)); + + int pageNo = 1; + int pageSize = 3; + int startRow = (pageNo - 1) * pageSize; when(jdbcTemplate.query(anyString(), eq(new Object[] {tenant, dataId.replaceAll("\\*", "%"), group.replaceAll("\\*", "%"), appName, content, - "tags", "tag2"}), eq(CONFIG_INFO_ROW_MAPPER))).thenReturn(result); + "tags", "tag2", startRow, pageSize}), eq(CONFIG_INFO_ROW_MAPPER))).thenReturn(result); - Page configInfo4Page = externalConfigInfoPersistService.findConfigInfoLike4Page(1, 3, dataId, group, + Page configInfo4Page = externalConfigInfoPersistService.findConfigInfoLike4Page(pageNo, pageSize, dataId, group, tenant, configAdvanceInfo); Assert.assertEquals(result.size(), configInfo4Page.getPageItems().size()); Assert.assertEquals(9, configInfo4Page.getTotalCount()); @@ -1226,9 +1244,10 @@ public void testGetTenantIdList() { int page = 10; int pageSize = 100; + int startRow = (page - 1) * pageSize; //mock select config state List tenantStrings = Arrays.asList("tenant1", "tenant2", "tenant3"); - when(jdbcTemplate.queryForList(anyString(), eq(new Object[] {}), eq(String.class))).thenReturn(tenantStrings); + when(jdbcTemplate.queryForList(anyString(), eq(new Object[] {startRow, pageSize}), eq(String.class))).thenReturn(tenantStrings); //execute return mock obj List returnTenants = externalConfigInfoPersistService.getTenantIdList(page, pageSize); @@ -1241,9 +1260,10 @@ public void testGetGroupIdList() { int page = 10; int pageSize = 100; + int startRow = (page - 1) * pageSize; //mock select config state List groupStrings = Arrays.asList("group1", "group2", "group3"); - when(jdbcTemplate.queryForList(anyString(), eq(new Object[] {}), eq(String.class))).thenReturn(groupStrings); + when(jdbcTemplate.queryForList(anyString(), eq(new Object[] {startRow, pageSize}), eq(String.class))).thenReturn(groupStrings); //execute return mock obj List returnGroups = externalConfigInfoPersistService.getGroupIdList(page, pageSize); @@ -1259,9 +1279,9 @@ public void testFindAllConfigInfoFragment() { mockConfigs.add(createMockConfigInfoWrapper(1)); mockConfigs.add(createMockConfigInfoWrapper(2)); long lastId = 10111L; - when(jdbcTemplate.query(anyString(), eq(new Object[] {lastId}), eq(CONFIG_INFO_WRAPPER_ROW_MAPPER))).thenReturn( - mockConfigs); int pageSize = 100; + when(jdbcTemplate.query(anyString(), eq(new Object[] {lastId, 0, pageSize}), eq(CONFIG_INFO_WRAPPER_ROW_MAPPER))).thenReturn( + mockConfigs); //execute return mock obj Page returnConfigPage = externalConfigInfoPersistService.findAllConfigInfoFragment(lastId, pageSize, true); @@ -1269,7 +1289,7 @@ public void testFindAllConfigInfoFragment() { //expect check Assert.assertEquals(mockConfigs, returnConfigPage.getPageItems()); - when(jdbcTemplate.query(anyString(), eq(new Object[] {lastId}), eq(CONFIG_INFO_WRAPPER_ROW_MAPPER))).thenThrow( + when(jdbcTemplate.query(anyString(), eq(new Object[] {lastId, 0, pageSize}), eq(CONFIG_INFO_WRAPPER_ROW_MAPPER))).thenThrow( new CannotGetJdbcConnectionException("mock fail")); try { externalConfigInfoPersistService.findAllConfigInfoFragment(lastId, pageSize, true); diff --git a/config/src/test/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalConfigInfoTagPersistServiceImplTest.java b/config/src/test/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalConfigInfoTagPersistServiceImplTest.java index 9dd2771f092..785cf6429fd 100644 --- a/config/src/test/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalConfigInfoTagPersistServiceImplTest.java +++ b/config/src/test/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalConfigInfoTagPersistServiceImplTest.java @@ -380,11 +380,13 @@ public void testFindAllConfigInfoTagForDumpAll() { mockTagList.get(0).setLastModified(System.currentTimeMillis()); mockTagList.get(1).setLastModified(System.currentTimeMillis()); mockTagList.get(2).setLastModified(System.currentTimeMillis()); - //mock query list - Mockito.when(jdbcTemplate.query(anyString(), eq(new Object[] {}), eq(CONFIG_INFO_TAG_WRAPPER_ROW_MAPPER))) - .thenReturn(mockTagList); int pageNo = 3; int pageSize = 100; + int startRow = (pageNo - 1) * pageSize; + //mock query list + Mockito.when(jdbcTemplate.query(anyString(), eq(new Object[] {startRow, pageSize}), eq(CONFIG_INFO_TAG_WRAPPER_ROW_MAPPER))) + .thenReturn(mockTagList); + //execute & verify Page returnTagPage = externalConfigInfoTagPersistService.findAllConfigInfoTagForDumpAll( pageNo, pageSize); diff --git a/config/src/test/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalHistoryConfigInfoPersistServiceImplTest.java b/config/src/test/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalHistoryConfigInfoPersistServiceImplTest.java index 779f592b6ff..01e64464681 100644 --- a/config/src/test/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalHistoryConfigInfoPersistServiceImplTest.java +++ b/config/src/test/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalHistoryConfigInfoPersistServiceImplTest.java @@ -196,7 +196,7 @@ public void testFindConfigHistory() { String dataId = "dataId34567"; String group = "group34567"; String tenant = "tenant34567"; - + //mock count Mockito.when( jdbcTemplate.queryForObject(anyString(), eq(new Object[] {dataId, group, tenant}), eq(Integer.class))) @@ -206,11 +206,12 @@ public void testFindConfigHistory() { mockList.add(createMockConfigHistoryInfo(0)); mockList.add(createMockConfigHistoryInfo(1)); mockList.add(createMockConfigHistoryInfo(2)); - Mockito.when( - jdbcTemplate.query(anyString(), eq(new Object[] {dataId, group, tenant}), eq(HISTORY_LIST_ROW_MAPPER))) - .thenReturn(mockList); int pageSize = 100; int pageNo = 2; + int startRow = (pageNo - 1) * pageSize; + Mockito.when( + jdbcTemplate.query(anyString(), eq(new Object[] {dataId, group, tenant, startRow, pageSize}), eq(HISTORY_LIST_ROW_MAPPER))) + .thenReturn(mockList); //execute & verify Page historyReturn = externalHistoryConfigInfoPersistService.findConfigHistory(dataId, group, tenant, pageNo, pageSize); From 96016d49f76cf355a27e351f88bf5b162c665266 Mon Sep 17 00:00:00 2001 From: zhangyang <1445621702@qq.com> Date: Mon, 8 Apr 2024 18:22:00 +0800 Subject: [PATCH 3/4] [ISSUE#11910] modify the code style --- .../embedded/EmbeddedConfigInfoAggrPersistServiceImplTest.java | 2 +- .../embedded/EmbeddedConfigInfoPersistServiceImplTest.java | 2 +- .../EmbeddedHistoryConfigInfoPersistServiceImplTest.java | 2 +- .../extrnal/ExternalConfigInfoAggrPersistServiceImplTest.java | 2 +- .../extrnal/ExternalConfigInfoPersistServiceImplTest.java | 2 +- .../ExternalHistoryConfigInfoPersistServiceImplTest.java | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/config/src/test/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedConfigInfoAggrPersistServiceImplTest.java b/config/src/test/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedConfigInfoAggrPersistServiceImplTest.java index 99e2ce50655..33c9822caf4 100644 --- a/config/src/test/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedConfigInfoAggrPersistServiceImplTest.java +++ b/config/src/test/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedConfigInfoAggrPersistServiceImplTest.java @@ -201,7 +201,7 @@ public void testFindConfigInfoAggrByPage() { String dataId = "dataId111"; String group = "group"; String tenant = "tenant"; - + //mock query count. Mockito.when(databaseOperate.queryOne(anyString(), eq(new Object[] {dataId, group, tenant}), eq(Integer.class))) .thenReturn(101); diff --git a/config/src/test/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedConfigInfoPersistServiceImplTest.java b/config/src/test/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedConfigInfoPersistServiceImplTest.java index 32058f61d62..4726afc5f72 100644 --- a/config/src/test/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedConfigInfoPersistServiceImplTest.java +++ b/config/src/test/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedConfigInfoPersistServiceImplTest.java @@ -644,7 +644,7 @@ public void testFindConfigInfo4Page() { String dataId = "dataId4567222"; String group = "group3456789"; String tenant = "tenant4567890"; - + //mock total count when(databaseOperate.queryOne(anyString(), eq(new Object[] {tenant, dataId, group}), eq(Integer.class))).thenReturn(new Integer(9)); diff --git a/config/src/test/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedHistoryConfigInfoPersistServiceImplTest.java b/config/src/test/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedHistoryConfigInfoPersistServiceImplTest.java index 69181badbe6..549846b1157 100644 --- a/config/src/test/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedHistoryConfigInfoPersistServiceImplTest.java +++ b/config/src/test/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedHistoryConfigInfoPersistServiceImplTest.java @@ -170,7 +170,7 @@ public void testFindConfigHistory() { String dataId = "dataId34567"; String group = "group34567"; String tenant = "tenant34567"; - + //mock count Mockito.when(databaseOperate.queryOne(anyString(), eq(new Object[] {dataId, group, tenant}), eq(Integer.class))) .thenReturn(300); diff --git a/config/src/test/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalConfigInfoAggrPersistServiceImplTest.java b/config/src/test/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalConfigInfoAggrPersistServiceImplTest.java index 4859b039a18..0c7ddb11307 100644 --- a/config/src/test/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalConfigInfoAggrPersistServiceImplTest.java +++ b/config/src/test/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalConfigInfoAggrPersistServiceImplTest.java @@ -242,7 +242,7 @@ public void testFindConfigInfoAggrByPage() { String dataId = "dataId111"; String group = "group"; String tenant = "tenant"; - + //mock query count. when(jdbcTemplate.queryForObject(anyString(), eq(new Object[] {dataId, group, tenant}), eq(Integer.class))).thenReturn(101); diff --git a/config/src/test/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalConfigInfoPersistServiceImplTest.java b/config/src/test/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalConfigInfoPersistServiceImplTest.java index 10fc14ec96b..eed606afece 100644 --- a/config/src/test/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalConfigInfoPersistServiceImplTest.java +++ b/config/src/test/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalConfigInfoPersistServiceImplTest.java @@ -760,7 +760,7 @@ public void testFindConfigInfo4Page() { String dataId = "dataId4567222"; String group = "group3456789"; String tenant = "tenant4567890"; - + //mock total count when(jdbcTemplate.queryForObject(anyString(), eq(new Object[] {tenant, dataId, group}), eq(Integer.class))).thenReturn(new Integer(9)); diff --git a/config/src/test/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalHistoryConfigInfoPersistServiceImplTest.java b/config/src/test/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalHistoryConfigInfoPersistServiceImplTest.java index 01e64464681..20410167f3d 100644 --- a/config/src/test/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalHistoryConfigInfoPersistServiceImplTest.java +++ b/config/src/test/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalHistoryConfigInfoPersistServiceImplTest.java @@ -196,7 +196,7 @@ public void testFindConfigHistory() { String dataId = "dataId34567"; String group = "group34567"; String tenant = "tenant34567"; - + //mock count Mockito.when( jdbcTemplate.queryForObject(anyString(), eq(new Object[] {dataId, group, tenant}), eq(Integer.class))) From 984a77bcac8f1d3c7df2c14fb6f0545b71254ae8 Mon Sep 17 00:00:00 2001 From: zhangyang <1445621702@qq.com> Date: Thu, 25 Apr 2024 12:44:03 +0800 Subject: [PATCH 4/4] [ISSUE#11910] Resolve the inconsistency between countSQL and pagination SQL parameters --- ...eddedConfigInfoAggrPersistServiceImpl.java | 9 +++++---- .../mapper/ConfigInfoAggrMapper.java | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedConfigInfoAggrPersistServiceImpl.java b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedConfigInfoAggrPersistServiceImpl.java index dab8c013af8..44251d5cf0d 100644 --- a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedConfigInfoAggrPersistServiceImpl.java +++ b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedConfigInfoAggrPersistServiceImpl.java @@ -166,9 +166,6 @@ public Page findConfigInfoAggrByPage(String dataId, String group ConfigInfoAggrMapper configInfoAggrMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_AGGR); final int startRow = (pageNo - 1) * pageSize; - final String sqlCountRows = configInfoAggrMapper.select(Collections.singletonList("count(*)"), - Arrays.asList("data_id", "group_id", "tenant_id")); - MapperContext context = new MapperContext(); context.putWhereParameter(FieldConstant.DATA_ID, dataId); context.putWhereParameter(FieldConstant.GROUP_ID, group); @@ -176,11 +173,15 @@ public Page findConfigInfoAggrByPage(String dataId, String group context.setStartRow(startRow); context.setPageSize(pageSize); MapperResult mapperResult = configInfoAggrMapper.findConfigInfoAggrByPageFetchRows(context); + MapperResult countMapperResult = configInfoAggrMapper.findConfigInfoAggrByPageCountRows(context); + String sqlCountRows = countMapperResult.getSql(); + Object[] sqlCountArgs = countMapperResult.getParamList().toArray(); + String sqlFetchRows = mapperResult.getSql(); Object[] sqlFetchArgs = mapperResult.getParamList().toArray(); PaginationHelper helper = createPaginationHelper(); - return helper.fetchPageLimit(sqlCountRows, new Object[] {dataId, group, tenantTmp}, sqlFetchRows, sqlFetchArgs, + return helper.fetchPageLimit(sqlCountRows, sqlCountArgs, sqlFetchRows, sqlFetchArgs, pageNo, pageSize, CONFIG_INFO_AGGR_ROW_MAPPER); } diff --git a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/mapper/ConfigInfoAggrMapper.java b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/mapper/ConfigInfoAggrMapper.java index 0b3bae1fa0e..1429c6c3988 100644 --- a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/mapper/ConfigInfoAggrMapper.java +++ b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/mapper/ConfigInfoAggrMapper.java @@ -124,6 +124,25 @@ default MapperResult findConfigInfoAggrIsOrdered(MapperContext context) { return new MapperResult(sql, paramList); } + + /** + * find the count of config info. The default sql: SELECT count(*) + * FROM config_info_aggr WHERE data_id=? AND group_id=? AND tenant_id=? + * + * @param context The context of data_id, group_id, tenant_id + * @return The count of config info. + */ + default MapperResult findConfigInfoAggrByPageCountRows(MapperContext context) { + final String dataId = (String) context.getWhereParameter(FieldConstant.DATA_ID); + final String group = (String) context.getWhereParameter(FieldConstant.GROUP_ID); + final String tenantId = (String) context.getWhereParameter(FieldConstant.TENANT_ID); + final List paramList = new ArrayList<>(); + paramList.add(dataId); + paramList.add(group); + paramList.add(tenantId); + final String sqlCount = "SELECT count(*) FROM config_info_aggr WHERE data_id=? AND group_id=? AND tenant_id=?"; + return new MapperResult(sqlCount, paramList); + } /** * Query aggregation config info.