Skip to content

All versions since 5.10.0

5.10.0

Added

  • Plugins can be loaded from a path. A PLUGIN statement declaring path loads the assembly directly, skipping the package restore and the shared cache entirely.

5.11.0

Added

  • Diagnostic severities can be set in .editorconfig. nschema_diagnostic.<code>.severity configures one finding and nschema_diagnostic_source.<source>.severity every finding from a producer, taking Roslyn’s severity words (none, silent, suggestion, warning, error, default). A --destructive-actions flag still wins over the file.
  • The diagnostics table names each finding’s code, which is what a severity is configured by.

Fixed

  • import reports its diagnostics whether or not it succeeded. They were shown only on failure, so a successful import had no way to tell you what it could not carry into the project.

5.11.1

Added

  • plan --json names the action behind each statement. Every entry in sql carries the action it performs (CreateTable, AddForeignKey), so what a plan exercises can be read off it rather than inferred from the SQL text. Inherited from NSchema.Core.

Fixed

  • An unreadable .editorconfig no longer crashes init, new, plan show or completion install/uninstall.
  • plan show reports a corrupt plan file instead of crashing on it. Inherited from NSchema.Core: a well-formed JSON object that is not a plan deserialized into nulls, and showing it died with a NullReferenceException in the reporter rather than naming the file.
  • .editorconfig severities now reach the findings that reading a project produces, not only the engine’s.

5.11.2

Fixed

  • Migration plan file unable to be deserialized. An accidental breaking change was introduced in NSchema.Core 5.9.1 that now been fixed.

5.11.3

Fixed

  • Check constraints no longer cause permanent drift. Check constraints are engine-native SQL, so it gets reformatted by the database. We now store both sides of a check constraint and only compare like to like.

5.11.4

Fixed

  • Engines without comment support no-longer cause errors on comments. Engines that don’t support comments now correctly ignore them.

5.11.5

All inherited from the latest NSchema.Core update.

Fixed

  • Every remaining authored expression settles. Column defaults and generated expressions, index and exclusion predicates, and a domain’s checks and default are opaque SQL, rewritten by the engine, so a handwritten one would never match. All are now kept and declared like-for-like as they are for triggers, routines etc. An expression the database no longer reports is still drift, not a spelling to restore.
  • Renaming a type no longer retypes the columns declared against it. The rename moved the type but left every reference naming the old one, so each column read as a retype.
  • Recreate is now correctly blocked by dependents. Recreating a type that’s in use now causes an error.
  • An identity that explicitly declares no options no longer differs from one that does so implicitly. No options at all and a set of unstated ones now compare equal.
  • A sequence altered for one reason no longer restates the others. The change carries the folded options, so a plan that changes the cache does not also restate a start it never asked to change.
  • Identity and sequence restarts now warn correctly. Restarts are data hazards: restarting the counter, means duplicate values are issued, meaning inserts collide with what is already stored.

5.12.0 Latest

Added

  • NSQL extension. Project files can now be written as .nsql files, which can be syntax highlighted using NSchema.Core’s TextMate grammar.

Changed

  • Default extension. When scaffolding or importing project files, the default file extension is now .nsql