Skip to content

All versions since 5.5.0

5.5.0

Added

  • An index on a plain view is reported, not attempted.
  • An XML index is reported. Postgres indexes an xml column as an opaque value and has no shredded node table to build over, so the XML index forms are refused rather than flattened to an ordinary index.
  • A schema-bound view is reported.

5.6.0

Added

  • SupportsRestrict is declared, so RESTRICT is rendered rather than dropped.
  • Generated columns are reported as stored, which is the only kind Postgres has. A project declaring a virtual one now gets a warning that it will be stored, rather than that difference passing unremarked.

Changed

  • The build now writes the full dependency closure beside the assembly (CopyLocalLockFileAssemblies), so a dotnet build of this project can be loaded directly by PLUGIN ( path = '...' ) without being packed first. Package contents are unchanged.

Fixed

  • ON DELETE RESTRICT and ON UPDATE RESTRICT are no longer read as NO ACTION. Postgres records RESTRICT as confdeltype = 'r', which introspection mapped onto NO ACTION because the model had nowhere else to put it.
  • Table partitioning is reported at import. NSchema does not model it, so a partitioned table arrives as a plain one and each partition as an unrelated table, but it is now said out loud rather than passed over.

5.6.1 Latest

Fixed

  • The canonical types Postgres renders are no longer refused. tinyint, nchar, nvarchar and binary are written as smallint, character, character varying and bytea, but the engine’s vocabulary is read from its own catalog and so never names them, leaving a plan that rendered the column correctly and then refused it as an unresolved type. They now compare equal to the type they are rendered as.
  • A varbinary length no longer drifts. bytea carries none, so a declared one was never read back and every plan asked to change the column again.
  • A sequence option declared with the default value now settles.
  • An identity column reports no minimum where none was declared.
  • An identity option reset to the engine’s default is now written.
  • Changing an identity’s increment or minimum no longer restarts its counter. RESTART was appended to every identity alter. Only a start that actually moved carries a RESTART now, and that case is reported as a data hazard.