Fix _decode_default_value returning float for negative integer defaults

Python's str.isdigit() returns False for negative numbers like "-5",
causing DEFAULT -5 in SQLite to be decoded as -5.0 (float) instead
of -5 (int). Switch to re.fullmatch to handle the leading minus sign.
This commit is contained in:
Claude 2026-07-14 14:48:28 +00:00
commit ad77d36a55
No known key found for this signature in database
2 changed files with 2 additions and 1 deletions

View file

@ -5214,7 +5214,7 @@ def _decode_default_value(value: str) -> object:
if value.startswith("'") and value.endswith("'"):
# It's a string
return value[1:-1]
if value.isdigit():
if re.fullmatch(r"-?\d+", value):
# It's an integer
return int(value)
if value.startswith("X'") and value.endswith("'"):

View file

@ -309,6 +309,7 @@ def test_table_strict(fresh_db, create_table, expected_strict):
"value",
(
1,
-5,
1.3,
"foo",
True,