From be62de9e4234ff6b3cecc25764b17b9a3d1c0a26 Mon Sep 17 00:00:00 2001 From: wjddn279 Date: Sat, 13 Sep 2025 00:45:47 +0900 Subject: [PATCH 1/3] fix get latest serialized_dag model query --- airflow-core/src/airflow/models/serialized_dag.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/airflow-core/src/airflow/models/serialized_dag.py b/airflow-core/src/airflow/models/serialized_dag.py index 7184a29effe13..59f54853f2eb6 100644 --- a/airflow-core/src/airflow/models/serialized_dag.py +++ b/airflow-core/src/airflow/models/serialized_dag.py @@ -461,7 +461,8 @@ def write_dag( @classmethod def latest_item_select_object(cls, dag_id): - return select(cls).where(cls.dag_id == dag_id).order_by(cls.created_at.desc()).limit(1) + latest_item_id = select(cls.id).where(cls.dag_id == dag_id).order_by(cls.created_at.desc()).limit(1) + return select(cls).where(cls.id == latest_item_id) @classmethod @provide_session From 0454907bc730263f0701e513bd82123105dc0d1e Mon Sep 17 00:00:00 2001 From: wjddn279 Date: Sat, 13 Sep 2025 01:56:46 +0900 Subject: [PATCH 2/3] fix get latest serialized_dag model query --- airflow-core/src/airflow/models/serialized_dag.py | 1 + 1 file changed, 1 insertion(+) diff --git a/airflow-core/src/airflow/models/serialized_dag.py b/airflow-core/src/airflow/models/serialized_dag.py index 59f54853f2eb6..baaa1fcd221df 100644 --- a/airflow-core/src/airflow/models/serialized_dag.py +++ b/airflow-core/src/airflow/models/serialized_dag.py @@ -461,6 +461,7 @@ def write_dag( @classmethod def latest_item_select_object(cls, dag_id): + # prevent "Out of sort memory" caused by large values in cls.data column latest_item_id = select(cls.id).where(cls.dag_id == dag_id).order_by(cls.created_at.desc()).limit(1) return select(cls).where(cls.id == latest_item_id) From 9a4a7b43256ca564883e4ae91558606e16e3561f Mon Sep 17 00:00:00 2001 From: wjddn279 Date: Wed, 22 Oct 2025 09:55:39 +0900 Subject: [PATCH 3/3] add db type check logic --- airflow-core/src/airflow/models/serialized_dag.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/airflow-core/src/airflow/models/serialized_dag.py b/airflow-core/src/airflow/models/serialized_dag.py index baaa1fcd221df..e5df49e2a952b 100644 --- a/airflow-core/src/airflow/models/serialized_dag.py +++ b/airflow-core/src/airflow/models/serialized_dag.py @@ -461,9 +461,16 @@ def write_dag( @classmethod def latest_item_select_object(cls, dag_id): - # prevent "Out of sort memory" caused by large values in cls.data column - latest_item_id = select(cls.id).where(cls.dag_id == dag_id).order_by(cls.created_at.desc()).limit(1) - return select(cls).where(cls.id == latest_item_id) + from airflow.settings import engine + + if engine.dialect.name == "mysql": + # Prevent "Out of sort memory" caused by large values in cls.data column for MySQL. + # Details in https://github.com/apache/airflow/pull/55589 + latest_item_id = ( + select(cls.id).where(cls.dag_id == dag_id).order_by(cls.created_at.desc()).limit(1) + ) + return select(cls).where(cls.id == latest_item_id) + return select(cls).where(cls.dag_id == dag_id).order_by(cls.created_at.desc()).limit(1) @classmethod @provide_session