diff --git a/airflow/migrations/versions/0039_3_0_0_add_dag_versioning.py b/airflow/migrations/versions/0039_3_0_0_add_dag_versioning.py
index e012a05d7aca1e..d51445631edf70 100644
--- a/airflow/migrations/versions/0039_3_0_0_add_dag_versioning.py
+++ b/airflow/migrations/versions/0039_3_0_0_add_dag_versioning.py
@@ -32,6 +32,8 @@
from airflow.migrations.db_types import StringID
from airflow.models.base import naming_convention
+from airflow.utils import timezone
+from airflow.utils.sqlalchemy import UtcDateTime
# revision identifiers, used by Alembic.
revision = "2b47dc6bc8df"
@@ -54,6 +56,7 @@ def upgrade():
sa.Column("dag_id", StringID(), nullable=False),
sa.Column("dag_code_id", sa.Integer(), nullable=True),
sa.Column("serialized_dag_id", sa.Integer(), nullable=True),
+ sa.Column("created_at", UtcDateTime(), nullable=False, default=timezone.utcnow),
sa.ForeignKeyConstraint(("dag_id",), ["dag.dag_id"], name=op.f("dag_version_dag_id_fkey")),
sa.PrimaryKeyConstraint("id", name=op.f("dag_version_pkey")),
)
diff --git a/airflow/models/dag.py b/airflow/models/dag.py
index 6455684206b741..40d97922798947 100644
--- a/airflow/models/dag.py
+++ b/airflow/models/dag.py
@@ -3103,9 +3103,9 @@ def dag_ready(dag_id: str, cond: BaseAsset, statuses: dict) -> bool | None:
dag_statuses = {}
for dag_id, records in by_dag.items():
dag_statuses[dag_id] = {x.dataset.uri: True for x in records}
- ser_dags = session.scalars(
- select(SerializedDagModel).where(SerializedDagModel.dag_id.in_(dag_statuses.keys()))
- ).all()
+ ser_dags = SerializedDagModel.get_latest_serdags_of_given_dags(
+ list(dag_statuses.keys()), session=session
+ )
for ser_dag in ser_dags:
dag_id = ser_dag.dag_id
statuses = dag_statuses[dag_id]
diff --git a/airflow/models/dag_version.py b/airflow/models/dag_version.py
index 7c8254d1f8ff1a..0655ab41bdc4f5 100644
--- a/airflow/models/dag_version.py
+++ b/airflow/models/dag_version.py
@@ -26,7 +26,9 @@
from sqlalchemy.orm import relationship
from airflow.models.base import Base, StringID
+from airflow.utils import timezone
from airflow.utils.session import NEW_SESSION, provide_session
+from airflow.utils.sqlalchemy import UtcDateTime
if TYPE_CHECKING:
from sqlalchemy.orm import Session
@@ -50,6 +52,7 @@ class DagVersion(Base):
serialized_dag = relationship("SerializedDagModel", back_populates="dag_version", uselist=False)
dag_runs = relationship("DagRun", back_populates="dag_version")
task_instances = relationship("TaskInstance", back_populates="dag_version")
+ created_at = Column(UtcDateTime, default=timezone.utcnow)
def __init__(
self,
@@ -96,7 +99,7 @@ def write_dag(
):
"""Write a new DagVersion into database."""
existing_dag_version = session.scalar(
- select(cls).where(cls.dag_id == dag_id).order_by(cls.version_number.desc()).limit(1)
+ select(cls).where(cls.dag_id == dag_id).order_by(cls.created_at.desc()).limit(1)
)
version_number = 1
diff --git a/airflow/models/serialized_dag.py b/airflow/models/serialized_dag.py
index d900b60849b4a8..5ab9d0dee49c40 100644
--- a/airflow/models/serialized_dag.py
+++ b/airflow/models/serialized_dag.py
@@ -220,6 +220,25 @@ def write_dag(
def latest_item_select_object(cls, dag_id):
return select(cls).where(cls.dag_id == dag_id).order_by(cls.id.desc()).limit(1)
+ @classmethod
+ @provide_session
+ def get_latest_serdags_of_given_dags(cls, dag_ids: list[str], session: Session = NEW_SESSION):
+ latest_serialized_dag_subquery = (
+ session.query(cls.dag_id, func.max(cls.id).label("max_id"))
+ .filter(cls.dag_id.in_(dag_ids))
+ .group_by(cls.dag_id)
+ .subquery()
+ )
+ serialized_dags = session.scalars(
+ select(cls)
+ .join(
+ latest_serialized_dag_subquery,
+ (cls.id == latest_serialized_dag_subquery.c.max_id),
+ )
+ .where(cls.dag_id.in_(dag_ids))
+ ).all()
+ return serialized_dags
+
@classmethod
@provide_session
def read_all_dags(cls, session: Session = NEW_SESSION) -> dict[str, SerializedDAG]:
diff --git a/docs/apache-airflow/img/airflow_erd.sha256 b/docs/apache-airflow/img/airflow_erd.sha256
index 61ab2e09928007..3318e28d769edb 100644
--- a/docs/apache-airflow/img/airflow_erd.sha256
+++ b/docs/apache-airflow/img/airflow_erd.sha256
@@ -1 +1 @@
-cfd8d2c4c55ec368afcf35aba9b8b86d46820e1e7c63507fda2b8aebaa05f88b
\ No newline at end of file
+9b93baf975587d81480850dab7cc4f33e3a9db9d707c57ce1835d0d7ad8d9c74
\ No newline at end of file
diff --git a/docs/apache-airflow/img/airflow_erd.svg b/docs/apache-airflow/img/airflow_erd.svg
index ff8f1bf8115fb9..5c337f2f5eb240 100644
--- a/docs/apache-airflow/img/airflow_erd.svg
+++ b/docs/apache-airflow/img/airflow_erd.svg
@@ -681,25 +681,25 @@
dagrun_dataset_event
-
-dagrun_dataset_event
-
-dag_run_id
-
- [INTEGER]
- NOT NULL
-
-event_id
-
- [INTEGER]
- NOT NULL
+
+dagrun_dataset_event
+
+dag_run_id
+
+ [INTEGER]
+ NOT NULL
+
+event_id
+
+ [INTEGER]
+ NOT NULL
dataset_event--dagrun_dataset_event
-
-0..N
-1
+
+0..N
+1
@@ -858,23 +858,27 @@
[INTEGER]
NOT NULL
-dag_id
-
- [VARCHAR(250)]
+created_at
+
+ [TIMESTAMP]
-version_name
-
- [VARCHAR(250)]
+dag_id
+
+ [VARCHAR(250)]
-version_number
-
- [INTEGER]
+version_name
+
+ [VARCHAR(250)]
+
+version_number
+
+ [INTEGER]
dag--dag_version
-
-0..N
+
+0..N
{0,1}
@@ -931,1087 +935,1087 @@
dag_warning
-
-dag_warning
-
-dag_id
-
- [VARCHAR(250)]
- NOT NULL
+
+dag_warning
-warning_type
-
- [VARCHAR(50)]
- NOT NULL
+dag_id
+
+ [VARCHAR(250)]
+ NOT NULL
-message
-
- [TEXT]
- NOT NULL
+warning_type
+
+ [VARCHAR(50)]
+ NOT NULL
-timestamp
-
- [TIMESTAMP]
- NOT NULL
+message
+
+ [TEXT]
+ NOT NULL
+
+timestamp
+
+ [TIMESTAMP]
+ NOT NULL
dag--dag_warning
-
-0..N
-1
+
+0..N
+1
dag_run
-
-dag_run
-
-id
-
- [INTEGER]
- NOT NULL
-
-backfill_id
-
- [INTEGER]
-
-clear_number
-
- [INTEGER]
- NOT NULL
-
-conf
-
- [BYTEA]
-
-creating_job_id
-
- [INTEGER]
-
-dag_id
-
- [VARCHAR(250)]
- NOT NULL
-
-dag_version_id
-
- [INTEGER]
-
-data_interval_end
-
- [TIMESTAMP]
-
-data_interval_start
-
- [TIMESTAMP]
-
-end_date
-
- [TIMESTAMP]
-
-external_trigger
-
- [BOOLEAN]
-
-last_scheduling_decision
-
- [TIMESTAMP]
-
-log_template_id
-
- [INTEGER]
-
-logical_date
-
- [TIMESTAMP]
- NOT NULL
-
-queued_at
-
- [TIMESTAMP]
-
-run_id
-
- [VARCHAR(250)]
- NOT NULL
-
-run_type
-
- [VARCHAR(50)]
- NOT NULL
-
-start_date
-
- [TIMESTAMP]
-
-state
-
- [VARCHAR(50)]
-
-triggered_by
-
- [VARCHAR(50)]
-
-updated_at
-
- [TIMESTAMP]
+
+dag_run
+
+id
+
+ [INTEGER]
+ NOT NULL
+
+backfill_id
+
+ [INTEGER]
+
+clear_number
+
+ [INTEGER]
+ NOT NULL
+
+conf
+
+ [BYTEA]
+
+creating_job_id
+
+ [INTEGER]
+
+dag_id
+
+ [VARCHAR(250)]
+ NOT NULL
+
+dag_version_id
+
+ [INTEGER]
+
+data_interval_end
+
+ [TIMESTAMP]
+
+data_interval_start
+
+ [TIMESTAMP]
+
+end_date
+
+ [TIMESTAMP]
+
+external_trigger
+
+ [BOOLEAN]
+
+last_scheduling_decision
+
+ [TIMESTAMP]
+
+log_template_id
+
+ [INTEGER]
+
+logical_date
+
+ [TIMESTAMP]
+ NOT NULL
+
+queued_at
+
+ [TIMESTAMP]
+
+run_id
+
+ [VARCHAR(250)]
+ NOT NULL
+
+run_type
+
+ [VARCHAR(50)]
+ NOT NULL
+
+start_date
+
+ [TIMESTAMP]
+
+state
+
+ [VARCHAR(50)]
+
+triggered_by
+
+ [VARCHAR(50)]
+
+updated_at
+
+ [TIMESTAMP]
dag_version--dag_run
-
-0..N
-{0,1}
+
+0..N
+{0,1}
dag_code
-
-dag_code
-
-id
-
- [INTEGER]
- NOT NULL
-
-dag_version_id
-
- [INTEGER]
-
-fileloc
-
- [VARCHAR(2000)]
- NOT NULL
-
-fileloc_hash
-
- [BIGINT]
- NOT NULL
-
-last_updated
-
- [TIMESTAMP]
- NOT NULL
-
-source_code
-
- [TEXT]
- NOT NULL
+
+dag_code
+
+id
+
+ [INTEGER]
+ NOT NULL
+
+dag_version_id
+
+ [INTEGER]
+
+fileloc
+
+ [VARCHAR(2000)]
+ NOT NULL
+
+fileloc_hash
+
+ [BIGINT]
+ NOT NULL
+
+last_updated
+
+ [TIMESTAMP]
+ NOT NULL
+
+source_code
+
+ [TEXT]
+ NOT NULL
dag_version--dag_code
-
-0..N
-{0,1}
+
+0..N
+{0,1}
serialized_dag
-
-serialized_dag
-
-id
-
- [INTEGER]
- NOT NULL
-
-dag_hash
-
- [VARCHAR(32)]
- NOT NULL
-
-dag_id
-
- [VARCHAR(250)]
- NOT NULL
-
-dag_version_id
-
- [INTEGER]
-
-data
-
- [JSON]
-
-data_compressed
-
- [BYTEA]
-
-last_updated
-
- [TIMESTAMP]
- NOT NULL
-
-processor_subdir
-
- [VARCHAR(2000)]
+
+serialized_dag
+
+id
+
+ [INTEGER]
+ NOT NULL
+
+dag_hash
+
+ [VARCHAR(32)]
+ NOT NULL
+
+dag_id
+
+ [VARCHAR(250)]
+ NOT NULL
+
+dag_version_id
+
+ [INTEGER]
+
+data
+
+ [JSON]
+
+data_compressed
+
+ [BYTEA]
+
+last_updated
+
+ [TIMESTAMP]
+ NOT NULL
+
+processor_subdir
+
+ [VARCHAR(2000)]
dag_version--serialized_dag
-
-0..N
-{0,1}
+
+0..N
+{0,1}
task_instance
-
-task_instance
-
-dag_id
-
- [VARCHAR(250)]
- NOT NULL
-
-map_index
-
- [INTEGER]
- NOT NULL
-
-run_id
-
- [VARCHAR(250)]
- NOT NULL
-
-task_id
-
- [VARCHAR(250)]
- NOT NULL
-
-custom_operator_name
-
- [VARCHAR(1000)]
-
-dag_version_id
-
- [INTEGER]
-
-duration
-
- [DOUBLE_PRECISION]
-
-end_date
-
- [TIMESTAMP]
-
-executor
-
- [VARCHAR(1000)]
-
-executor_config
-
- [BYTEA]
-
-external_executor_id
-
- [VARCHAR(250)]
-
-hostname
-
- [VARCHAR(1000)]
-
-job_id
-
- [INTEGER]
-
-max_tries
-
- [INTEGER]
-
-next_kwargs
-
- [JSON]
-
-next_method
-
- [VARCHAR(1000)]
-
-operator
-
- [VARCHAR(1000)]
-
-pid
-
- [INTEGER]
-
-pool
-
- [VARCHAR(256)]
- NOT NULL
-
-pool_slots
-
- [INTEGER]
- NOT NULL
-
-priority_weight
-
- [INTEGER]
-
-queue
-
- [VARCHAR(256)]
-
-queued_by_job_id
-
- [INTEGER]
-
-queued_dttm
-
- [TIMESTAMP]
-
-rendered_map_index
-
- [VARCHAR(250)]
-
-start_date
-
- [TIMESTAMP]
-
-state
-
- [VARCHAR(20)]
-
-task_display_name
-
- [VARCHAR(2000)]
-
-trigger_id
-
- [INTEGER]
-
-trigger_timeout
-
- [TIMESTAMP]
-
-try_number
-
- [INTEGER]
-
-unixname
-
- [VARCHAR(1000)]
-
-updated_at
-
- [TIMESTAMP]
+
+task_instance
+
+dag_id
+
+ [VARCHAR(250)]
+ NOT NULL
+
+map_index
+
+ [INTEGER]
+ NOT NULL
+
+run_id
+
+ [VARCHAR(250)]
+ NOT NULL
+
+task_id
+
+ [VARCHAR(250)]
+ NOT NULL
+
+custom_operator_name
+
+ [VARCHAR(1000)]
+
+dag_version_id
+
+ [INTEGER]
+
+duration
+
+ [DOUBLE_PRECISION]
+
+end_date
+
+ [TIMESTAMP]
+
+executor
+
+ [VARCHAR(1000)]
+
+executor_config
+
+ [BYTEA]
+
+external_executor_id
+
+ [VARCHAR(250)]
+
+hostname
+
+ [VARCHAR(1000)]
+
+job_id
+
+ [INTEGER]
+
+max_tries
+
+ [INTEGER]
+
+next_kwargs
+
+ [JSON]
+
+next_method
+
+ [VARCHAR(1000)]
+
+operator
+
+ [VARCHAR(1000)]
+
+pid
+
+ [INTEGER]
+
+pool
+
+ [VARCHAR(256)]
+ NOT NULL
+
+pool_slots
+
+ [INTEGER]
+ NOT NULL
+
+priority_weight
+
+ [INTEGER]
+
+queue
+
+ [VARCHAR(256)]
+
+queued_by_job_id
+
+ [INTEGER]
+
+queued_dttm
+
+ [TIMESTAMP]
+
+rendered_map_index
+
+ [VARCHAR(250)]
+
+start_date
+
+ [TIMESTAMP]
+
+state
+
+ [VARCHAR(20)]
+
+task_display_name
+
+ [VARCHAR(2000)]
+
+trigger_id
+
+ [INTEGER]
+
+trigger_timeout
+
+ [TIMESTAMP]
+
+try_number
+
+ [INTEGER]
+
+unixname
+
+ [VARCHAR(1000)]
+
+updated_at
+
+ [TIMESTAMP]
dag_version--task_instance
-
-0..N
-{0,1}
+
+0..N
+{0,1}
dag_run--dagrun_dataset_event
-
-0..N
-1
+
+0..N
+1
dag_run--task_instance
-
-0..N
-1
+
+0..N
+1
dag_run--task_instance
-
-0..N
-1
+
+0..N
+1
backfill_dag_run
-
-backfill_dag_run
-
-id
-
- [INTEGER]
- NOT NULL
-
-backfill_id
-
- [INTEGER]
- NOT NULL
-
-dag_run_id
-
- [INTEGER]
-
-sort_ordinal
-
- [INTEGER]
- NOT NULL
+
+backfill_dag_run
+
+id
+
+ [INTEGER]
+ NOT NULL
+
+backfill_id
+
+ [INTEGER]
+ NOT NULL
+
+dag_run_id
+
+ [INTEGER]
+
+sort_ordinal
+
+ [INTEGER]
+ NOT NULL
dag_run--backfill_dag_run
-
-0..N
-{0,1}
+
+0..N
+{0,1}
dag_run_note
-
-dag_run_note
-
-dag_run_id
-
- [INTEGER]
- NOT NULL
-
-content
-
- [VARCHAR(1000)]
-
-created_at
-
- [TIMESTAMP]
- NOT NULL
-
-updated_at
-
- [TIMESTAMP]
- NOT NULL
-
-user_id
-
- [VARCHAR(128)]
+
+dag_run_note
+
+dag_run_id
+
+ [INTEGER]
+ NOT NULL
+
+content
+
+ [VARCHAR(1000)]
+
+created_at
+
+ [TIMESTAMP]
+ NOT NULL
+
+updated_at
+
+ [TIMESTAMP]
+ NOT NULL
+
+user_id
+
+ [VARCHAR(128)]
dag_run--dag_run_note
-
-1
-1
+
+1
+1
task_reschedule
-
-task_reschedule
-
-id
-
- [INTEGER]
- NOT NULL
-
-dag_id
-
- [VARCHAR(250)]
- NOT NULL
-
-duration
-
- [INTEGER]
- NOT NULL
-
-end_date
-
- [TIMESTAMP]
- NOT NULL
-
-map_index
-
- [INTEGER]
- NOT NULL
-
-reschedule_date
-
- [TIMESTAMP]
- NOT NULL
-
-run_id
-
- [VARCHAR(250)]
- NOT NULL
-
-start_date
-
- [TIMESTAMP]
- NOT NULL
-
-task_id
-
- [VARCHAR(250)]
- NOT NULL
-
-try_number
-
- [INTEGER]
- NOT NULL
+
+task_reschedule
+
+id
+
+ [INTEGER]
+ NOT NULL
+
+dag_id
+
+ [VARCHAR(250)]
+ NOT NULL
+
+duration
+
+ [INTEGER]
+ NOT NULL
+
+end_date
+
+ [TIMESTAMP]
+ NOT NULL
+
+map_index
+
+ [INTEGER]
+ NOT NULL
+
+reschedule_date
+
+ [TIMESTAMP]
+ NOT NULL
+
+run_id
+
+ [VARCHAR(250)]
+ NOT NULL
+
+start_date
+
+ [TIMESTAMP]
+ NOT NULL
+
+task_id
+
+ [VARCHAR(250)]
+ NOT NULL
+
+try_number
+
+ [INTEGER]
+ NOT NULL
dag_run--task_reschedule
-
-0..N
-1
+
+0..N
+1
dag_run--task_reschedule
-
-0..N
-1
+
+0..N
+1
task_instance--task_reschedule
-
-0..N
-1
+
+0..N
+1
task_instance--task_reschedule
-
-0..N
-1
+
+0..N
+1
task_instance--task_reschedule
-
-0..N
-1
+
+0..N
+1
task_instance--task_reschedule
-
-0..N
-1
+
+0..N
+1
rendered_task_instance_fields
-
-rendered_task_instance_fields
-
-dag_id
-
- [VARCHAR(250)]
- NOT NULL
-
-map_index
-
- [INTEGER]
- NOT NULL
-
-run_id
-
- [VARCHAR(250)]
- NOT NULL
-
-task_id
-
- [VARCHAR(250)]
- NOT NULL
-
-k8s_pod_yaml
-
- [JSON]
-
-rendered_fields
-
- [JSON]
- NOT NULL
+
+rendered_task_instance_fields
+
+dag_id
+
+ [VARCHAR(250)]
+ NOT NULL
+
+map_index
+
+ [INTEGER]
+ NOT NULL
+
+run_id
+
+ [VARCHAR(250)]
+ NOT NULL
+
+task_id
+
+ [VARCHAR(250)]
+ NOT NULL
+
+k8s_pod_yaml
+
+ [JSON]
+
+rendered_fields
+
+ [JSON]
+ NOT NULL
task_instance--rendered_task_instance_fields
-
-0..N
-1
+
+0..N
+1
task_instance--rendered_task_instance_fields
-
-0..N
-1
+
+0..N
+1
task_instance--rendered_task_instance_fields
-
-0..N
-1
+
+0..N
+1
task_instance--rendered_task_instance_fields
-
-0..N
-1
+
+0..N
+1
task_fail
-
-task_fail
-
-id
-
- [INTEGER]
- NOT NULL
-
-dag_id
-
- [VARCHAR(250)]
- NOT NULL
-
-duration
-
- [INTEGER]
-
-end_date
-
- [TIMESTAMP]
-
-map_index
-
- [INTEGER]
- NOT NULL
-
-run_id
-
- [VARCHAR(250)]
- NOT NULL
-
-start_date
-
- [TIMESTAMP]
-
-task_id
-
- [VARCHAR(250)]
- NOT NULL
+
+task_fail
+
+id
+
+ [INTEGER]
+ NOT NULL
+
+dag_id
+
+ [VARCHAR(250)]
+ NOT NULL
+
+duration
+
+ [INTEGER]
+
+end_date
+
+ [TIMESTAMP]
+
+map_index
+
+ [INTEGER]
+ NOT NULL
+
+run_id
+
+ [VARCHAR(250)]
+ NOT NULL
+
+start_date
+
+ [TIMESTAMP]
+
+task_id
+
+ [VARCHAR(250)]
+ NOT NULL
task_instance--task_fail
-
-0..N
-1
+
+0..N
+1
task_instance--task_fail
-
-0..N
-1
+
+0..N
+1
task_instance--task_fail
-
-0..N
-1
+
+0..N
+1
task_instance--task_fail
-
-0..N
-1
+
+0..N
+1
task_map
-
-task_map
-
-dag_id
-
- [VARCHAR(250)]
- NOT NULL
-
-map_index
-
- [INTEGER]
- NOT NULL
-
-run_id
-
- [VARCHAR(250)]
- NOT NULL
-
-task_id
-
- [VARCHAR(250)]
- NOT NULL
-
-keys
-
- [JSON]
-
-length
-
- [INTEGER]
- NOT NULL
+
+task_map
+
+dag_id
+
+ [VARCHAR(250)]
+ NOT NULL
+
+map_index
+
+ [INTEGER]
+ NOT NULL
+
+run_id
+
+ [VARCHAR(250)]
+ NOT NULL
+
+task_id
+
+ [VARCHAR(250)]
+ NOT NULL
+
+keys
+
+ [JSON]
+
+length
+
+ [INTEGER]
+ NOT NULL
task_instance--task_map
-
-0..N
-1
+
+0..N
+1
task_instance--task_map
-
-0..N
-1
+
+0..N
+1
task_instance--task_map
-
-0..N
-1
+
+0..N
+1
task_instance--task_map
-
-0..N
-1
+
+0..N
+1
xcom
-
-xcom
-
-dag_run_id
-
- [INTEGER]
- NOT NULL
-
-key
-
- [VARCHAR(512)]
- NOT NULL
-
-map_index
-
- [INTEGER]
- NOT NULL
-
-task_id
-
- [VARCHAR(250)]
- NOT NULL
-
-dag_id
-
- [VARCHAR(250)]
- NOT NULL
-
-run_id
-
- [VARCHAR(250)]
- NOT NULL
-
-timestamp
-
- [TIMESTAMP]
- NOT NULL
-
-value
-
- [BYTEA]
+
+xcom
+
+dag_run_id
+
+ [INTEGER]
+ NOT NULL
+
+key
+
+ [VARCHAR(512)]
+ NOT NULL
+
+map_index
+
+ [INTEGER]
+ NOT NULL
+
+task_id
+
+ [VARCHAR(250)]
+ NOT NULL
+
+dag_id
+
+ [VARCHAR(250)]
+ NOT NULL
+
+run_id
+
+ [VARCHAR(250)]
+ NOT NULL
+
+timestamp
+
+ [TIMESTAMP]
+ NOT NULL
+
+value
+
+ [BYTEA]
task_instance--xcom
-
-0..N
-1
+
+0..N
+1
task_instance--xcom
-
-0..N
-1
+
+0..N
+1
task_instance--xcom
-
-0..N
-1
+
+0..N
+1
task_instance--xcom
-
-0..N
-1
+
+0..N
+1
task_instance_note
-
-task_instance_note
-
-dag_id
-
- [VARCHAR(250)]
- NOT NULL
-
-map_index
-
- [INTEGER]
- NOT NULL
-
-run_id
-
- [VARCHAR(250)]
- NOT NULL
-
-task_id
-
- [VARCHAR(250)]
- NOT NULL
-
-content
-
- [VARCHAR(1000)]
-
-created_at
-
- [TIMESTAMP]
- NOT NULL
-
-updated_at
-
- [TIMESTAMP]
- NOT NULL
-
-user_id
-
- [VARCHAR(128)]
+
+task_instance_note
+
+dag_id
+
+ [VARCHAR(250)]
+ NOT NULL
+
+map_index
+
+ [INTEGER]
+ NOT NULL
+
+run_id
+
+ [VARCHAR(250)]
+ NOT NULL
+
+task_id
+
+ [VARCHAR(250)]
+ NOT NULL
+
+content
+
+ [VARCHAR(1000)]
+
+created_at
+
+ [TIMESTAMP]
+ NOT NULL
+
+updated_at
+
+ [TIMESTAMP]
+ NOT NULL
+
+user_id
+
+ [VARCHAR(128)]
task_instance--task_instance_note
-
-0..N
-1
+
+0..N
+1
task_instance--task_instance_note
-
-0..N
-1
+
+0..N
+1
task_instance--task_instance_note
-
-0..N
-1
+
+0..N
+1
task_instance--task_instance_note
-
-0..N
-1
+
+0..N
+1
task_instance_history
-
-task_instance_history
-
-id
-
- [INTEGER]
- NOT NULL
-
-custom_operator_name
-
- [VARCHAR(1000)]
-
-dag_id
-
- [VARCHAR(250)]
- NOT NULL
-
-dag_version_id
-
- [INTEGER]
-
-duration
-
- [DOUBLE_PRECISION]
-
-end_date
-
- [TIMESTAMP]
-
-executor
-
- [VARCHAR(1000)]
-
-executor_config
-
- [BYTEA]
-
-external_executor_id
-
- [VARCHAR(250)]
-
-hostname
-
- [VARCHAR(1000)]
-
-job_id
-
- [INTEGER]
-
-map_index
-
- [INTEGER]
- NOT NULL
-
-max_tries
-
- [INTEGER]
-
-next_kwargs
-
- [JSON]
-
-next_method
-
- [VARCHAR(1000)]
-
-operator
-
- [VARCHAR(1000)]
-
-pid
-
- [INTEGER]
-
-pool
-
- [VARCHAR(256)]
- NOT NULL
-
-pool_slots
-
- [INTEGER]
- NOT NULL
-
-priority_weight
-
- [INTEGER]
-
-queue
-
- [VARCHAR(256)]
-
-queued_by_job_id
-
- [INTEGER]
-
-queued_dttm
-
- [TIMESTAMP]
-
-rendered_map_index
-
- [VARCHAR(250)]
-
-run_id
-
- [VARCHAR(250)]
- NOT NULL
-
-start_date
-
- [TIMESTAMP]
-
-state
-
- [VARCHAR(20)]
-
-task_display_name
-
- [VARCHAR(2000)]
-
-task_id
-
- [VARCHAR(250)]
- NOT NULL
-
-trigger_id
-
- [INTEGER]
-
-trigger_timeout
-
- [TIMESTAMP]
-
-try_number
-
- [INTEGER]
- NOT NULL
-
-unixname
-
- [VARCHAR(1000)]
-
-updated_at
-
- [TIMESTAMP]
+
+task_instance_history
+
+id
+
+ [INTEGER]
+ NOT NULL
+
+custom_operator_name
+
+ [VARCHAR(1000)]
+
+dag_id
+
+ [VARCHAR(250)]
+ NOT NULL
+
+dag_version_id
+
+ [INTEGER]
+
+duration
+
+ [DOUBLE_PRECISION]
+
+end_date
+
+ [TIMESTAMP]
+
+executor
+
+ [VARCHAR(1000)]
+
+executor_config
+
+ [BYTEA]
+
+external_executor_id
+
+ [VARCHAR(250)]
+
+hostname
+
+ [VARCHAR(1000)]
+
+job_id
+
+ [INTEGER]
+
+map_index
+
+ [INTEGER]
+ NOT NULL
+
+max_tries
+
+ [INTEGER]
+
+next_kwargs
+
+ [JSON]
+
+next_method
+
+ [VARCHAR(1000)]
+
+operator
+
+ [VARCHAR(1000)]
+
+pid
+
+ [INTEGER]
+
+pool
+
+ [VARCHAR(256)]
+ NOT NULL
+
+pool_slots
+
+ [INTEGER]
+ NOT NULL
+
+priority_weight
+
+ [INTEGER]
+
+queue
+
+ [VARCHAR(256)]
+
+queued_by_job_id
+
+ [INTEGER]
+
+queued_dttm
+
+ [TIMESTAMP]
+
+rendered_map_index
+
+ [VARCHAR(250)]
+
+run_id
+
+ [VARCHAR(250)]
+ NOT NULL
+
+start_date
+
+ [TIMESTAMP]
+
+state
+
+ [VARCHAR(20)]
+
+task_display_name
+
+ [VARCHAR(2000)]
+
+task_id
+
+ [VARCHAR(250)]
+ NOT NULL
+
+trigger_id
+
+ [INTEGER]
+
+trigger_timeout
+
+ [TIMESTAMP]
+
+try_number
+
+ [INTEGER]
+ NOT NULL
+
+unixname
+
+ [VARCHAR(1000)]
+
+updated_at
+
+ [TIMESTAMP]
task_instance--task_instance_history
-
-0..N
-1
+
+0..N
+1
task_instance--task_instance_history
-
-0..N
-1
+
+0..N
+1
task_instance--task_instance_history
-
-0..N
-1
+
+0..N
+1
task_instance--task_instance_history
-
-0..N
-1
+
+0..N
+1
@@ -2042,9 +2046,9 @@
log_template--dag_run
-
-0..N
-{0,1}
+
+0..N
+{0,1}
@@ -2102,53 +2106,53 @@
backfill--dag_run
-
-0..N
-{0,1}
+
+0..N
+{0,1}
backfill--backfill_dag_run
-
-0..N
-1
+
+0..N
+1
trigger
-
-trigger
-
-id
-
- [INTEGER]
- NOT NULL
-
-classpath
-
- [VARCHAR(1000)]
- NOT NULL
-
-created_date
-
- [TIMESTAMP]
- NOT NULL
-
-kwargs
-
- [TEXT]
- NOT NULL
-
-triggerer_id
-
- [INTEGER]
+
+trigger
+
+id
+
+ [INTEGER]
+ NOT NULL
+
+classpath
+
+ [VARCHAR(1000)]
+ NOT NULL
+
+created_date
+
+ [TIMESTAMP]
+ NOT NULL
+
+kwargs
+
+ [TEXT]
+ NOT NULL
+
+triggerer_id
+
+ [INTEGER]
trigger--task_instance
-
-0..N
-{0,1}
+
+0..N
+{0,1}