Skip to content

Commit 2faa2ad

Browse files
committed
fix: don't break column references when modifying tables
1 parent 4daa937 commit 2faa2ad

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

src/sqlitediff/diff.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,22 @@ def to_sql(self) -> str:
3939
raise ValueError(f"No source SQL available for {self.new.raw_name} table")
4040

4141
columns = ", ".join(c.raw_name for c in self.old.columns.values())
42+
43+
new_sql_temp = self.new.sql.replace(
44+
f"CREATE TABLE {self.new.raw_name}",
45+
"CREATE TABLE sqlitediff_temp",
46+
1
47+
)
48+
if new_sql_temp == self.new.sql:
49+
raise ValueError(f"Table {self.new.name} SQL does not match name")
50+
4251
sql = [
4352
f"-- Previous table schema for {self.old.raw_name}:",
4453
f"{sql_comment(self.old.sql + ';')}",
45-
f"ALTER TABLE {self.old.raw_name} RENAME TO sqlitediff_temp;",
46-
f"{self.new.sql};",
54+
f"{new_sql_temp};",
4755
f"INSERT INTO {self.new.raw_name} ({columns}) SELECT * FROM sqlitediff_temp;",
48-
f"DROP TABLE sqlitediff_temp;",
56+
f"DROP TABLE {self.old.raw_name};",
57+
f"ALTER TABLE sqlitediff_temp RENAME TO {self.new.raw_name};",
4958
]
5059

5160
if len(self.references) > 0:

0 commit comments

Comments
 (0)