diff --git a/freqtrade/persistence/trade_model.py b/freqtrade/persistence/trade_model.py index 743aa5eba..e032b6b96 100644 --- a/freqtrade/persistence/trade_model.py +++ b/freqtrade/persistence/trade_model.py @@ -1144,7 +1144,8 @@ class Trade(_DECL_BASE, LocalTrade): id = Column(Integer, primary_key=True) - orders = relationship("Order", order_by="Order.id", cascade="all, delete-orphan", lazy="joined") + orders = relationship("Order", order_by="Order.id", cascade="all, delete-orphan", + lazy="selectin", innerjoin=True) exchange = Column(String(25), nullable=False) pair = Column(String(25), nullable=False, index=True) diff --git a/tests/persistence/test_persistence.py b/tests/persistence/test_persistence.py index 3323dd7c6..fbb639d50 100644 --- a/tests/persistence/test_persistence.py +++ b/tests/persistence/test_persistence.py @@ -2197,15 +2197,16 @@ def test_get_trades__query(fee, is_short): # without orders there should be no join issued. query1 = Trade.get_trades([], include_orders=False) - assert "JOIN orders" in str(query) - assert "JOIN orders" not in str(query1) + # Empty "with-options -> default - selectin" + assert query._with_options == () + assert query1._with_options != () create_mock_trades(fee, is_short) query = Trade.get_trades([]) query1 = Trade.get_trades([], include_orders=False) - assert "JOIN orders" in str(query) - assert "JOIN orders" not in str(query1) + assert query._with_options == () + assert query1._with_options != () def test_get_trades_backtest():