The fix was simple: add a new column.
A new column changes the shape of your data. It unlocks fresh queries, better indexes, and safer migrations. In SQL, ALTER TABLE is the direct path:
ALTER TABLE users ADD COLUMN last_login TIMESTAMP;
This command is fast on small tables but can lock writes on large datasets. On production systems, adding a new column must balance speed, uptime, and rollback strategy. Choosing the right column type matters. A TEXT field has different storage costs than a UUID. A TIMESTAMP with timezone avoids future bugs that come from daylight savings and inconsistent offsets.
Null defaults can slow updates if every row is rewritten. Adding a new column with a default in Postgres, for example, will rewrite the entire table unless you defer the default to a later UPDATE. Sparse columns, computed columns, and generated columns can avoid some costs but limit flexibility.