From 1cfda2c11941705ef2f1ccdb011b9137206494db Mon Sep 17 00:00:00 2001 From: justin Date: Sat, 30 May 2026 13:41:24 -0500 Subject: [PATCH] Fix census download crash at 100K: integer out of range safe_int now clamps values to PostgreSQL INTEGER max (2.1B) and handles scientific notation. Mileage columns changed to BIGINT on prod since carriers can have >2B annual miles. Co-Authored-By: Claude Opus 4.6 (1M context) --- scripts/workers/fmcsa_census_downloader.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/scripts/workers/fmcsa_census_downloader.py b/scripts/workers/fmcsa_census_downloader.py index 7d97e30..2da466b 100644 --- a/scripts/workers/fmcsa_census_downloader.py +++ b/scripts/workers/fmcsa_census_downloader.py @@ -59,13 +59,16 @@ def parse_fmcsa_date(date_str: str | None) -> str | None: return None -def safe_int(val) -> int | None: - """Convert value to int, handling strings and None.""" +def safe_int(val, max_val: int = 2_147_483_647) -> int | None: + """Convert value to int, handling strings, None, and out-of-range values.""" if val is None: return None try: - return int(val) - except (ValueError, TypeError): + v = int(float(val)) # handle "1.234e7" scientific notation + if v > max_val or v < -max_val: + return None # out of range for PostgreSQL INTEGER + return v + except (ValueError, TypeError, OverflowError): return None