Skip to content

Commit 58a4d59

Browse files
committed
Alter version table to add pre_check_version
1 parent 27876ed commit 58a4d59

File tree

3 files changed

+40
-4
lines changed

3 files changed

+40
-4
lines changed

sqlmesh/core/state_sync/base.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ class Versions(PydanticModel):
4040
schema_version: int = 0
4141
sqlglot_version: str = "0.0.0"
4242
sqlmesh_version: str = "0.0.0"
43+
pre_check_version: int = 0
4344

4445
@property
4546
def minor_sqlglot_version(self) -> t.Tuple[int, int]:
@@ -54,9 +55,9 @@ def minor_sqlmesh_version(self) -> t.Tuple[int, int]:
5455
def _package_version_validator(cls, v: t.Any) -> str:
5556
return "0.0.0" if v is None else str(v)
5657

57-
@field_validator("schema_version", mode="before")
58+
@field_validator("schema_version", "pre_check_version", mode="before")
5859
@classmethod
59-
def _schema_version_validator(cls, v: t.Any) -> int:
60+
def _int_version_validator(cls, v: t.Any) -> int:
6061
return 0 if v is None else int(v)
6162

6263

@@ -66,7 +67,11 @@ def _schema_version_validator(cls, v: t.Any) -> int:
6667
]
6768
SCHEMA_VERSION: int = len(MIGRATIONS)
6869
PRE_CHECK_VERSION: int = (
69-
max(idx for idx, migration in enumerate(MIGRATIONS) if hasattr(migration, "pre_check")) + 1
70+
max(
71+
[idx for idx, migration in enumerate(MIGRATIONS) if hasattr(migration, "pre_check")],
72+
default=-1,
73+
)
74+
+ 1
7075
)
7176

7277

sqlmesh/core/state_sync/db/version.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
SQLMESH_VERSION,
1414
)
1515
from sqlmesh.core.state_sync.base import (
16+
PRE_CHECK_VERSION,
1617
SCHEMA_VERSION,
1718
Versions,
1819
)
@@ -31,13 +32,15 @@ def __init__(self, engine_adapter: EngineAdapter, schema: t.Optional[str] = None
3132
"schema_version": exp.DataType.build("int"),
3233
"sqlglot_version": exp.DataType.build(index_type),
3334
"sqlmesh_version": exp.DataType.build(index_type),
35+
"pre_check_version": exp.DataType.build("int"),
3436
}
3537

3638
def update_versions(
3739
self,
3840
schema_version: int = SCHEMA_VERSION,
3941
sqlglot_version: str = SQLGLOT_VERSION,
4042
sqlmesh_version: str = SQLMESH_VERSION,
43+
pre_check_version: int = PRE_CHECK_VERSION,
4144
) -> None:
4245
import pandas as pd
4346

@@ -51,6 +54,7 @@ def update_versions(
5154
"schema_version": schema_version,
5255
"sqlglot_version": sqlglot_version,
5356
"sqlmesh_version": sqlmesh_version,
57+
"pre_check_version": pre_check_version,
5458
}
5559
]
5660
),
@@ -69,5 +73,8 @@ def get_versions(self) -> Versions:
6973
return no_version
7074

7175
return Versions(
72-
schema_version=row[0], sqlglot_version=row[1], sqlmesh_version=seq_get(row, 2)
76+
schema_version=row[0],
77+
sqlglot_version=row[1],
78+
sqlmesh_version=seq_get(row, 2),
79+
pre_check_version=seq_get(row, 3),
7380
)
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
"""Add new 'pre_check_version' column to the version state table."""
2+
3+
from sqlglot import exp
4+
5+
6+
def migrate(state_sync, **kwargs): # type: ignore
7+
engine_adapter = state_sync.engine_adapter
8+
schema = state_sync.schema
9+
versions_table = "_versions"
10+
if schema:
11+
versions_table = f"{schema}.{versions_table}"
12+
13+
alter_table_exp = exp.Alter(
14+
this=exp.to_table(versions_table),
15+
kind="TABLE",
16+
actions=[
17+
exp.ColumnDef(
18+
this=exp.to_column("pre_check_version"),
19+
kind=exp.DataType.build("int"),
20+
)
21+
],
22+
)
23+
24+
engine_adapter.execute(alter_table_exp)

0 commit comments

Comments
 (0)