Skip to content

All versions since 5.7.1

5.7.1

Fixed

  • Environment overlays can declare schema again. Database objects declared in *.env.<name>.sql will now join the project alongside the base files, restoring the v4 behavior.

5.8.0

Changed

  • --quiet now summarizes the run’s output. A quiet plan or apply reports one line per artifact (Plan: 2 to add, 1 to change, 0 to destroy (5 statements).) instead of the full diff and SQL.
  • --quiet drops Info diagnostics. The run-once “already executed” advisories no longer repeat on every planned run.
  • --quiet suppresses the environment banner and secondary hint lines (such as lock acquire’s release hint), which previously printed regardless.

Fixed

  • --json no longer writes the confirmation prompt into the result stream. An interactive apply --json wrote its summary and question to stdout as raw markup, breaking nschema apply --json | jq; the prompt now renders on stderr with the rest of the narration. The same fix keeps a piped --format markdown job summary free of prompt text. Without a terminal, the summary is reported as a {"type":"log"} event so a redirected stderr stays uniform NDJSON.
  • --json reports a Detail line at its own log level. Secondary hint lines were emitted as "level":"announcement", indistinguishable from top-level narration.
  • format rejects the presentation flags instead of ignoring them. nschema format --json (and --format, --quiet, --verbose) because format’s output is the formatted code.
  • The NO_COLOR environment variable and --no-color args should now be respected correctly.

5.9.0

Added

Clustering and XML indexes. Added support for clustering, XML indexes and view indexes, all inherited from NSchema.Core 5.7.

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