The fix was obvious: add a new column.
A new column changes the shape of your data. It defines how future reads, writes, and joins will work. Done right, it feels seamless. Done wrong, it can lock tables, block writes, or trigger cascading downtime. The steps are simple, but the consequences of missing one are brutal.
First, define the purpose. Decide if the new column is nullable, if it needs a default value, or if it must be indexed. Every choice touches performance. Adding a new column with a default on a large table can rewrite every row. That can freeze a production system.
Second, choose the migration strategy. In PostgreSQL, adding a nullable column without a default is fast. Adding a populated column is slow. In MySQL, large table alters can block writes unless you use an online DDL technique like pt-online-schema-change or gh-ost. For NoSQL stores, schema evolution is often implicit, but your application still needs to handle records without the new field.