This is an automated email from the ASF dual-hosted git repository.
jasonliu pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new 1e2e29dcfbf Integrate alembic check in ci (#60737)
1e2e29dcfbf is described below
commit 1e2e29dcfbff97ddaed52c92b5a4b8ee9563fdfc
Author: Guan-Ming (Wesley) Chiu <[email protected]>
AuthorDate: Wed Jan 21 14:07:48 2026 +0800
Integrate alembic check in ci (#60737)
* Integrate alembic check in ci
* Update default value
---
airflow-core/src/airflow/models/asset.py | 3 +--
airflow-core/src/airflow/models/dag.py | 4 +++-
airflow-core/src/airflow/models/renderedtifields.py | 3 +--
airflow-core/src/airflow/models/taskinstance.py | 4 ++--
airflow-core/src/airflow/models/taskinstancehistory.py | 5 ++---
airflow-core/src/airflow/models/xcom.py | 5 +----
airflow-core/tests/unit/utils/test_db.py | 5 +++++
7 files changed, 15 insertions(+), 14 deletions(-)
diff --git a/airflow-core/src/airflow/models/asset.py
b/airflow-core/src/airflow/models/asset.py
index 372bd65a2b0..07e97bf32e7 100644
--- a/airflow-core/src/airflow/models/asset.py
+++ b/airflow-core/src/airflow/models/asset.py
@@ -33,7 +33,6 @@ from sqlalchemy import (
Table,
delete,
select,
- text,
)
from sqlalchemy.ext.associationproxy import association_proxy
from sqlalchemy.orm import Mapped, relationship
@@ -802,7 +801,7 @@ class AssetEvent(Base):
source_task_id: Mapped[str | None] = mapped_column(StringID(),
nullable=True)
source_dag_id: Mapped[str | None] = mapped_column(StringID(),
nullable=True)
source_run_id: Mapped[str | None] = mapped_column(StringID(),
nullable=True)
- source_map_index: Mapped[int | None] = mapped_column(Integer,
nullable=True, server_default=text("-1"))
+ source_map_index: Mapped[int | None] = mapped_column(Integer,
nullable=True, server_default="-1")
timestamp: Mapped[datetime] = mapped_column(UtcDateTime,
default=timezone.utcnow, nullable=False)
partition_key: Mapped[str | None] = mapped_column(StringID(),
nullable=True)
diff --git a/airflow-core/src/airflow/models/dag.py
b/airflow-core/src/airflow/models/dag.py
index d7a1ba95e57..92d2e46e4f7 100644
--- a/airflow-core/src/airflow/models/dag.py
+++ b/airflow-core/src/airflow/models/dag.py
@@ -335,7 +335,9 @@ class DagModel(Base):
is_paused: Mapped[bool] = mapped_column(Boolean,
default=is_paused_at_creation)
# Whether that DAG was seen on the last DagBag load
is_stale: Mapped[bool] = mapped_column(Boolean, nullable=False,
default=True)
- exceeds_max_non_backfill: Mapped[bool] = mapped_column(Boolean,
nullable=False, default=False)
+ exceeds_max_non_backfill: Mapped[bool] = mapped_column(
+ Boolean, nullable=False, default=False, server_default="0"
+ )
# Last time the scheduler started
last_parsed_time: Mapped[datetime | None] = mapped_column(UtcDateTime,
nullable=True)
# How long it took to parse this file
diff --git a/airflow-core/src/airflow/models/renderedtifields.py
b/airflow-core/src/airflow/models/renderedtifields.py
index fd907abaf8a..778bcc85f40 100644
--- a/airflow-core/src/airflow/models/renderedtifields.py
+++ b/airflow-core/src/airflow/models/renderedtifields.py
@@ -30,7 +30,6 @@ from sqlalchemy import (
delete,
exists,
select,
- text,
)
from sqlalchemy.ext.associationproxy import association_proxy
from sqlalchemy.orm import Mapped, relationship
@@ -111,7 +110,7 @@ class RenderedTaskInstanceFields(TaskInstanceDependencies):
dag_id: Mapped[str] = mapped_column(StringID(), primary_key=True)
task_id: Mapped[str] = mapped_column(StringID(), primary_key=True)
run_id: Mapped[str] = mapped_column(StringID(), primary_key=True)
- map_index: Mapped[int] = mapped_column(Integer, primary_key=True,
server_default=text("-1"))
+ map_index: Mapped[int] = mapped_column(Integer, primary_key=True,
server_default="-1")
rendered_fields: Mapped[dict] =
mapped_column(sqlalchemy_jsonfield.JSONField(json=json), nullable=False)
k8s_pod_yaml: Mapped[dict | None] = mapped_column(
sqlalchemy_jsonfield.JSONField(json=json), nullable=True
diff --git a/airflow-core/src/airflow/models/taskinstance.py
b/airflow-core/src/airflow/models/taskinstance.py
index 0fb9e4e88d9..ceedff81e68 100644
--- a/airflow-core/src/airflow/models/taskinstance.py
+++ b/airflow-core/src/airflow/models/taskinstance.py
@@ -386,14 +386,14 @@ class TaskInstance(Base, LoggingMixin):
task_id: Mapped[str] = mapped_column(StringID(), nullable=False)
dag_id: Mapped[str] = mapped_column(StringID(), nullable=False)
run_id: Mapped[str] = mapped_column(StringID(), nullable=False)
- map_index: Mapped[int] = mapped_column(Integer, nullable=False,
server_default=text("-1"))
+ map_index: Mapped[int] = mapped_column(Integer, nullable=False,
server_default="-1")
start_date: Mapped[datetime | None] = mapped_column(UtcDateTime,
nullable=True)
end_date: Mapped[datetime | None] = mapped_column(UtcDateTime,
nullable=True)
duration: Mapped[float | None] = mapped_column(Float, nullable=True)
state: Mapped[str | None] = mapped_column(String(20), nullable=True)
try_number: Mapped[int] = mapped_column(Integer, default=0)
- max_tries: Mapped[int] = mapped_column(Integer, server_default=text("-1"))
+ max_tries: Mapped[int] = mapped_column(Integer, server_default="-1")
hostname: Mapped[str] = mapped_column(String(1000))
unixname: Mapped[str] = mapped_column(String(1000))
pool: Mapped[str] = mapped_column(String(256), nullable=False)
diff --git a/airflow-core/src/airflow/models/taskinstancehistory.py
b/airflow-core/src/airflow/models/taskinstancehistory.py
index b69d2c96ff9..b8194c2ab38 100644
--- a/airflow-core/src/airflow/models/taskinstancehistory.py
+++ b/airflow-core/src/airflow/models/taskinstancehistory.py
@@ -32,7 +32,6 @@ from sqlalchemy import (
UniqueConstraint,
func,
select,
- text,
)
from sqlalchemy.dialects import postgresql
from sqlalchemy.ext.mutable import MutableDict
@@ -76,13 +75,13 @@ class TaskInstanceHistory(Base):
task_id: Mapped[str] = mapped_column(StringID(), nullable=False)
dag_id: Mapped[str] = mapped_column(StringID(), nullable=False)
run_id: Mapped[str] = mapped_column(StringID(), nullable=False)
- map_index: Mapped[int] = mapped_column(Integer, nullable=False,
server_default=text("-1"))
+ map_index: Mapped[int] = mapped_column(Integer, nullable=False,
server_default="-1")
try_number: Mapped[int] = mapped_column(Integer, nullable=False)
start_date: Mapped[datetime | None] = mapped_column(UtcDateTime,
nullable=True)
end_date: Mapped[datetime | None] = mapped_column(UtcDateTime,
nullable=True)
duration: Mapped[float | None] = mapped_column(Float, nullable=True)
state: Mapped[str | None] = mapped_column(String(20), nullable=True)
- max_tries: Mapped[int | None] = mapped_column(Integer,
server_default=text("-1"), nullable=True)
+ max_tries: Mapped[int | None] = mapped_column(Integer,
server_default="-1", nullable=True)
hostname: Mapped[str | None] = mapped_column(String(1000), nullable=True)
unixname: Mapped[str | None] = mapped_column(String(1000), nullable=True)
pool: Mapped[str] = mapped_column(String(256), nullable=False)
diff --git a/airflow-core/src/airflow/models/xcom.py
b/airflow-core/src/airflow/models/xcom.py
index 17f62fa118d..6283f96e712 100644
--- a/airflow-core/src/airflow/models/xcom.py
+++ b/airflow-core/src/airflow/models/xcom.py
@@ -33,7 +33,6 @@ from sqlalchemy import (
delete,
func,
select,
- text,
)
from sqlalchemy.dialects import postgresql
from sqlalchemy.ext.associationproxy import association_proxy
@@ -65,9 +64,7 @@ class XComModel(TaskInstanceDependencies):
dag_run_id: Mapped[int] = mapped_column(Integer(), nullable=False,
primary_key=True)
task_id: Mapped[str] = mapped_column(String(ID_LEN, **COLLATION_ARGS),
nullable=False, primary_key=True)
- map_index: Mapped[int] = mapped_column(
- Integer, primary_key=True, nullable=False, server_default=text("-1")
- )
+ map_index: Mapped[int] = mapped_column(Integer, primary_key=True,
nullable=False, server_default="-1")
key: Mapped[str] = mapped_column(String(512, **COLLATION_ARGS),
nullable=False, primary_key=True)
# Denormalized for easier lookup.
diff --git a/airflow-core/tests/unit/utils/test_db.py
b/airflow-core/tests/unit/utils/test_db.py
index fd30591cd14..a46c74d808b 100644
--- a/airflow-core/tests/unit/utils/test_db.py
+++ b/airflow-core/tests/unit/utils/test_db.py
@@ -26,6 +26,7 @@ from io import StringIO
import pytest
from alembic.autogenerate import compare_metadata
+from alembic.command import check
from alembic.config import Config
from alembic.migration import MigrationContext
from alembic.runtime.environment import EnvironmentContext
@@ -197,6 +198,10 @@ class TestDb:
# To resolve, use the command `alembic merge`
script.get_current_head()
+ def test_has_pending_upgrade_ops(self, initialized_db):
+ config = _get_alembic_config()
+ check(config)
+
def test_default_connections_sort(self):
pattern = re.compile("conn_id=[\"|'](.*?)[\"|']", re.DOTALL)
source = inspect.getsource(create_default_connections)