[BUG] DataPermission pagination: count uses exact-name match while list uses LIKE → wrong totals
- Dominant language
- Java
- Stars
- 8.8k
- Forks
- 3.1k
- Avg merge
- 7d 1h
- Merged PRs (30d)
- 85
Description
- severity: Medium
- files: `shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/DataPermissionServiceImpl.java:168,200`; `shenyu-admin/src/main/resources/mappers/selector-sqlmap.xml:166-185` (count: `selector_name = #{name}`) vs `:107-135` (list: `selector_name LIKE`); `shenyu-admin/src/main/resources/mappers/rule-sqlmap.xml:113-131` (count: `rule_name = #{name}`) vs `:74-94` (list: `rule_name LIKE`)
- description: `listSelectorsByPage`/`listRulesByPage` call `countByQuery` for the total and `selectByQuery` for the page rows. The count statements filter `name` with exact `=`, while the list statements filter the same `name` with leading-wildcard `LIKE '%name%'`. The count and row set describe different result sets, so `CommonPager` reports an inconsistent total.
- impact: Broken pagination metadata on the data-permission assignment screens whenever a name keyword is entered.
- suggested_fix: Make `countByQuery` use the same `LIKE` predicate as `selectByQuery`.
- confidence: High
- related_existing: none. PERF-40 covers the correlated-exists + leading-wildcard LIKE performance aspect of `selectByCondition`, not this count/list predicate divergence.
---
_Identified during the 2026-08-02 deep re-scan; full list in [`docs/scan2-2026-08-02/06-medium-tiers.md`](docs/scan2-2026-08-02/06-medium-tiers.md)._
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with listSelectorsByPage and listRulesByPage in shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/DataPermissionServiceImpl.java, then compare the count and list statements in selector-sqlmap.xml and rule-sqlmap.xml at the referenced lines. Confirm that filtered totals and rows use the same name predicate. Done means countByQuery and selectByQuery describe the same keyword-matched result set, restoring correct CommonPager totals.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- backend, databases
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 76/100