Create & model

Add a column

Evolve a live table's schema by adding a column - existing rows get NULL.

Add columns to a live table without downtime. Existing rows get NULL for the new column, so a newly added column must be nullable (or backfilled before you make it required).

Inspect the schema first

Read the current state before changing it - so you don't re-add an existing column, and you know which constraints might reject your change:

eddytor describe table eddytor sales orders   # schema, columns, constraints
get_table_schema(table="eddytor.cfg_xxx.<uuid>_orders")     # columns, Arrow types, nullability
get_table_metadata(table="eddytor.cfg_xxx.<uuid>_orders")   # constraints, PKs, current version

Add

eddytor create column eddytor sales orders --schema-file ./new-columns.json

The JSON file describes the new column(s) - the same shape as the MCP columns array below.

{ "table": "eddytor.cfg_xxx.<uuid>_products", "columns": [
    { "name": "weight_kg", "data_type": "Float64", "nullable": true }
]}

After adding

  1. get_table_schema - confirm the column applied.
  2. validate_constraints - existing data still passes.

To make the new column required later, backfill it first (e.g. via merge_rows), then set is_nullable: false - which is rejected if any NULLs remain.

Good to know

Schema evolution follows Delta Lake conventions and is recorded as a new version (ADD COLUMN). Pick types deliberately - see column types.

On this page