Skip to content

9.38.0

Choose a tag to compare

@jeremydmiller jeremydmiller released this 04 Oct 12:09
· 29 commits to master since this release
73b158b

One fix, on Oracle, in three parts: an identity column could not be created, was never read back, and made its schema undroppable.

Full notes: https://weasel.jasperfx.net/release-9-38

Released after the fact. 9.38.0 went to NuGet on 2026-10-04 without a tag, a GitHub release or a notes page. The packages are real and unchanged — this release and the 9.38.0 tag are the paperwork catching up, and nothing here is new behaviour since then.

Oracle: an identity column round-trips

#667.

GENERATED BY DEFAULT AS IDENTITY is its own clause rather than part of the column type, and neither the DDL side nor the read side accounted for that:

  • The emitted DDL was invalid — the clause was written after the null constraint, which Oracle rejects with ORA-03076. The identity clause stands in the DEFAULT slot; they are alternatives, not additions. So AutoIncrement() could not create a table at all.
  • Identity was never read back — ColumnSql did not select IDENTITY_COLUMN and ReadColumn never set IsAutoNumber, so every column came back non-identity.
  • A schema containing an identity column could not be dropped — the teardown tried to drop the system-generated ISEQ$$_… sequence behind the column, which Oracle refuses with ORA-32794. One identity column anywhere in the schema was enough to make the schema undroppable.

Upgrading

IsAutoNumber now counts towards TableColumn equality, so adding or dropping identity on an existing Oracle column is finally reported as a difference. That is only safe together with the reader fix — comparing a flag that is never read back would make every identity column drift forever.

If you worked around the broken AutoIncrement() by writing the identity clause into a column's type string, drop that workaround and call AutoIncrement(). A type string carrying the clause can never match what the catalog reports back, so the column keeps drifting.