Skip to content

fix(db): Fix multiple bugs in list_comments() filter and count logic#534

Draft
invo-coder19 wants to merge 1 commit intometabrainz:masterfrom
invo-coder19:fix/list-comments-hidden-filter-bug
Draft

fix(db): Fix multiple bugs in list_comments() filter and count logic#534
invo-coder19 wants to merge 1 commit intometabrainz:masterfrom
invo-coder19:fix/list-comments-hidden-filter-bug

Conversation

@invo-coder19
Copy link
Copy Markdown

  1. Typo: 'commend.is_hidden' was used instead of 'comment.is_hidden', causing the SQL filter to always fail with an 'unknown table' error in strict SQL mode, or silently match nothing.

  2. Inverted inc_hidden logic: The filter was only applied when inc_hidden=True (i.e., the caller explicitly wants hidden comments), but the intent of the parameter is the opposite — hidden comments should be EXCLUDED by default and only included when inc_hidden=True. This caused hidden comments to leak into all default queries.

  3. Wrong total count: The function returned len(rows) which is capped at the 'limit' value (default 20). Callers using the count for pagination would compute incorrect page numbers. A separate COUNT(DISTINCT comment.id) query is now run with the same WHERE clause to return the true total.

This commit fixes four related bugs in critiquebrainz/db/comment.py:

1. Typo: 'commend.is_hidden' was used instead of 'comment.is_hidden',
   causing the SQL filter to always fail with an 'unknown table' error
   in strict SQL mode, or silently match nothing.

2. Inverted inc_hidden logic: The filter was only applied when
   inc_hidden=True (i.e., the caller explicitly wants hidden comments),
   but the intent of the parameter is the opposite — hidden comments
   should be EXCLUDED by default and only included when inc_hidden=True.
   This caused hidden comments to leak into all default queries.

3. Wrong total count: The function returned len(rows) which is capped
   at the 'limit' value (default 20). Callers using the count for
   pagination would compute incorrect page numbers. A separate
   COUNT(DISTINCT comment.id) query is now run with the same WHERE
   clause to return the true total.

4. Missing spaces in filter join: 'AND'.join(filters) produced broken
   SQL like 'col = :valANDother = :val2'. Changed to ' AND '.join().

Fixes: list_comments() in critiquebrainz/db/comment.py
@invo-coder19 invo-coder19 marked this pull request as draft March 11, 2026 05:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant