mirror of
https://github.com/go-gitea/gitea.git
synced 2026-10-09 04:30:16 +09:00
d6945fb0b5
Backport #39611 by @Kshot3000 * Fixes #39606 * Fixes #39329 `GetLatestCommitStatusForRepoCommitIDs` built one `OR` condition per commit SHA. Rendering a commit list of more than ~1000 commits (for example a large pull request, via `processGitCommits`) therefore failed on SQLite with `SQL logic error: Expression tree is too large (maximum depth 1000)`. The max-index lookup now queries SHAs in chunks of 500 with `IN`, and the follow-up status fetch runs in chunks of 100 `(index, sha)` pairs, so the expression depth stays bounded regardless of the commit count. Results are unchanged. Verified with a new regression test that calls the function with 2001 SHAs: it fails with the reported error on `main` and passes with this change. `go test ./models/git/` passes. — Fix offered freely; tips welcome: PayPal kyleblake0659@gmail.com · BTC 3GnR7TWBXAB3pPztBWpNF4LMNEX5yX8vZK Co-authored-by: KShot <kshot9000@gmail.com> Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>