When a filter for a tag is used, the number of returned items on a page did not match what was requested. This was caused by using an outer join
with the tag/compose mapping table.
However, the join is not needed, since the filter for tags is actually using nested queries:
SELECT ... FROM composes
WHERE NOT (EXISTS (SELECT 1 from tags_to_composes, tags ...))
When a filter for a tag is used, the number of returned items on a page did not match what was requested. This was caused by using an outer join
with the tag/compose mapping table.
However, the join is not needed, since the filter for tags is actually using nested queries: