One thing Trellis.self_check/3 found out of step, by kind:
:cell: the row exists on both sides butcolumndiffers atkey.persistedis the target table's value andrecomputedthe fresh recompute's, both as Postgres renders them as text (nilforNULL).:missing_row: the recompute producedkey, but the target has no row for it.:extra_row: the target has a row forkeythat the recompute didn't produce.:missing_column: the definition expectscolumn, but the target table doesn't have it.:extra_column: the target table hascolumn, but the definition doesn't expect it.:capture: a table the target is computed from isn't being captured as Trellis installed it (a capture trigger missing, disabled or calling the wrong function, a capture function missing or with the wrong owner, the Trellis role missing a privilege, or the table joined a partition or inheritance hierarchy).detailsays what, andtablenames the table (nilfor a missing privilege).Trellis.self_check/3reports these before, and instead of, comparing any rows.
Fields a kind doesn't carry are nil.
Summary
Types
@type kind() ::
:cell | :missing_row | :extra_row | :missing_column | :extra_column | :capture
What kind of divergence this is.