バージョン管理された SQLAlchemy クラスの履歴を呼び出すときに問題が発生しているようです。次の継承構造のセットアップがあります。
Node(Versioned, Base)
Specimen(Node)
Animal(Specimen)
によって生成されたクエリを使用して動物の履歴を取得しようとすると:
AnimalHistory = self.__history_mapper__.class_
q = object_session(self).query(AnimalHistory).filter(AnimalHistory.id == self.id).order_by(AnimalHistory.version.desc())
logger.debug(q)
次のクエリを取得します。
SELECT bla bla #trimmed for brevity FROM node_history
JOIN specimen_history ON node_history.id = specimen_history.id AND node_history.version = specimen_history.version
JOIN animal_history ON specimen_history.id = animal_history.id
WHERE animal_history.id = 28
ORDER BY animal_history.version DESC
基本的に、animal_history JOIN で適切な「AND」ステートメントが欠落しているようです。このため、動物と(標本、ノード)の間に不要なデカルト積が得られます
これを修正するために history_meta.py 内で必要な変更を誰か指摘できますか?
ありがとう !!