With this update, all joins, whether originating from the base query or added via the RelationJoinStrategy, will be automatically deduplicated.
Suppose you have the following strategy defined:
`strategy = RelationJoinStrategy(Parent, onclause=Parent.id == Item.parent_id)`
Below are three different ways to construct a query:
1. `strategy.filter(select(Item.id), Parent.name == "test")`
2. `strategy.filter(select(Item.id).join(Parent), Parent.name == "test")`
3. `strategy.filter(select(Item.id).join(Parent, onclause=Parent.id == Item.parent_id), Parent.name == "test")`
With the new join deduplication feature, all of these methods will produce the same optimized query:
SELECT item.id
FROM item
JOIN parent ON parent.id = item.parent_id
WHERE parent.name = 'test'