Clustered indexes round-trip.SupportsClustering is on, so CLUSTERED and NONCLUSTERED are rendered on indexes, primary keys and unique constraints.
XML schema collections round-trip.XML_SCHEMA_NAMESPACE reassembles a collection from sys.xml_schema_* into the single document it was declared as, and a typed xml column carries the collection it is bound to along with whether it is DOCUMENT or CONTENT.
Constraints SQL Server named for itself are reported.is_system_named is read for key, foreign-key and check constraints, and a system-named-constraint warning names them as one grouped finding.
XML indexes round-trip.sys.xml_indexes supplies the kind and, for a secondary, the primary whose node table it reads (i.type identifies an XML index, since secondary_type_desc is null for a primary as well as for a non-XML index).
Indexed views round-trip. Indexes are read from sys.objects rather than sys.tables, so a view’s indexes are introspected onto View.Indexes alongside a table’s.
Schema binding round-trips.WITH SCHEMABINDING is read from sys.sql_modules.is_schema_bound onto View.IsSchemaBound and written back from it.
is_persisted is introspected, and SupportsVirtualGeneratedColumns is declared.
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
Computed columns are no longer all PERSISTED. The keyword was emitted unconditionally, so a column computed on read came back written to storage.
ROWGUIDCOL is no longer dropped. It was neither introspected nor rendered, so a column marked as the table’s row identifier came back as an ordinary one.
Default constraint names are preserved. A default was emitted unnamed, so SQL Server generated one.
NOT FOR REPLICATION is no longer dropped from identity columns or triggers.