diff --git a/src/mysql_to_sqlite3/transporter.py b/src/mysql_to_sqlite3/transporter.py index e98f842..f5fdf01 100644 --- a/src/mysql_to_sqlite3/transporter.py +++ b/src/mysql_to_sqlite3/transporter.py @@ -326,6 +326,12 @@ def _translate_default_from_mysql_to_sqlite( return "DEFAULT(FALSE)" return f"DEFAULT '{int(column_default)}'" if isinstance(column_default, str): + if column_default.lower() == "curtime()": + return "DEFAULT CURRENT_TIME" + if column_default.lower() == "curdate()": + return "DEFAULT CURRENT_DATE" + if column_default.lower() in {"current_timestamp()", "now()"}: + return "DEFAULT CURRENT_TIMESTAMP" if column_extra in {"DEFAULT_GENERATED", "default_generated"}: if column_default.upper() in { "CURRENT_TIME", diff --git a/tests/unit/mysql_to_sqlite3_test.py b/tests/unit/mysql_to_sqlite3_test.py index 6685738..6e0c4d7 100644 --- a/tests/unit/mysql_to_sqlite3_test.py +++ b/tests/unit/mysql_to_sqlite3_test.py @@ -113,8 +113,10 @@ def test_translate_type_from_mysql_to_sqlite_all_valid_columns(self) -> None: ), pytest.param("CURRENT_TIME", "DEFAULT_GENERATED", "DEFAULT CURRENT_TIME", id='"CURRENT_TIME"'), pytest.param("current_time", "DEFAULT_GENERATED", "DEFAULT CURRENT_TIME", id='"current_time"'), + pytest.param("curtime()", None, "DEFAULT CURRENT_TIME", id='"curtime()"'), pytest.param("CURRENT_DATE", "DEFAULT_GENERATED", "DEFAULT CURRENT_DATE", id='"CURRENT_DATE"'), pytest.param("current_date", "DEFAULT_GENERATED", "DEFAULT CURRENT_DATE", id='"current_date"'), + pytest.param("curdate()", None, "DEFAULT CURRENT_DATE", id='"curdate()"'), pytest.param( "CURRENT_TIMESTAMP", "DEFAULT_GENERATED", @@ -127,6 +129,8 @@ def test_translate_type_from_mysql_to_sqlite_all_valid_columns(self) -> None: "DEFAULT CURRENT_TIMESTAMP", id='"current_timestamp"', ), + pytest.param("current_timestamp()", None, "DEFAULT CURRENT_TIMESTAMP", id='"current_timestamp()"'), + pytest.param("now()", None, "DEFAULT CURRENT_TIMESTAMP", id='"now()"'), pytest.param(r"""_utf8mb4\'[]\'""", "DEFAULT_GENERATED", "DEFAULT '[]'", id=r"""_utf8mb4\'[]\'"""), pytest.param(r"""_latin1\'abc\'""", "DEFAULT_GENERATED", "DEFAULT 'abc'", id=r"""_latin1\'abc\'"""), pytest.param(r"""_binary\'abc\'""", "DEFAULT_GENERATED", "DEFAULT 'abc'", id=r"""_binary\'abc\'"""),