Skip to content

Latest commit

 

History

History
123 lines (108 loc) · 37.4 KB

File metadata and controls

123 lines (108 loc) · 37.4 KB

GitHub issue audit inventory

Reviewed issue set: 81 issues (23 open and 58 closed at the start). Baseline: master b7ae95c; upgrade work is in the stack #173, #174, #175, #177, #178, #180, #181, #182 and #183. Updated 2026-09-22.

This inventory separates verified closures, fixes awaiting merge, partial fixes, and historical reports. A historical closed state is not proof of a fresh reproduction. The historical rows below identify named passing baseline tests or explicit source evidence. They have not all been independently reproduced from their original reports; related coverage is labeled and must not be treated as complete behavioral proof. No newly implemented fix is closed before its PR merges.

Evidence used so far: clean master build and SQLite run (139 passed, one unrelated skipped default-removal test); master live matrix 35715528132; independent FK actions 35735648261; reproduced metadata/time failures 35737057890. The integrated source bc35e0e passed all eleven database/unit jobs and the coverage gate in run 35743265022. V13 source 746bd3c passed the complete existing-provider matrix and coverage gate in run 35766920321, including 87 unit and 197 SQLite cases. HANA admission has separate actual-engine evidence. Later fixes require their own green checks.

Issue Disposition Reproduction / relevant evidence / remaining work
#15 Feature to use update method for copying columns Historically closed; relevant baseline test verified UpdateFromTableToTable_Success passed in the SQLite artifact of master run 35715528132 (1 case(s)). This verifies the named scenario; broader edge cases are not inferred.
#30 Updates are not respecting command timeout Historical report rechecked; retain closed state Master Update explicitly assigns CommandTimeout when configured and attaches the provider transaction before execution. No fresh wall-clock timeout reproduction was run; this is source evidence.
#31 Parameter names (and meaning) differ in ITransformationProvider and Implementation Class TransformationProvider Historical report rechecked; retain closed state The current interface names FK arguments childTable/childColumns and parentTable/parentColumns; PR #174 corrects the independent action path and definitions. Original report supplies screenshots only; no blanket claim for every parameter name.
#32 Implementation of GetForeignKeyConstraints is wrong in TransformationProvider Historically closed; relevant baseline test verified GetForeignKeyConstraints_MultiColumnColumn_Success passed in the SQLite artifact of master run 35715528132 (1 case(s)). This verifies the named scenario; broader edge cases are not inferred.
#33 SQLite Foreign Keys: OnDelete, OnUpdate, Match is not implemented (ignored in SQLite) Actions merged; MATCH correction in PR #185 Independent DELETE/UPDATE actions execute. The follow-up rejects unsupported MATCH modes rather than silently ignoring them; see the current-open-issue review below.
#34 SQLite Foreign Keys: FKs added by AddTable are removed when using other methods Historically closed; relevant baseline test verified AddForeignKey_RenameParentColumWithForeignKeyAndData_ForeignKeyPointsToRenamedColumn passed in the SQLite artifact of master run 35715528132 (1 case(s)). This verifies the named scenario; broader edge cases are not inferred.
#35 SQLite: UNIQUEs are removed when using some other methods after AddTable Historically closed; relevant baseline test verified ChangeColumn_HavingColumnPropertyUniqueAndIndex_RebuildSucceeds passed in the SQLite artifact of master run 35715528132 (1 case(s)). This verifies the named scenario; broader edge cases are not inferred.
#37 Override in SQLite for AddForeignKey silently does nothing Historically closed; relevant baseline test verified AddForeignKey_Cascade_DeletingParentDeletesReferencingChildren passed in the SQLite artifact of master run 35715528132 (1 case(s)). This verifies the named scenario; broader edge cases are not inferred.
#38 SQLite: Using AddTable with ColumnProperty.Unique silently does nothing Historically closed; relevant baseline test verified AddUniqueColumn passed in the SQLite artifact of master run 35715528132 (1 case(s)). This verifies the named scenario; broader edge cases are not inferred.
#39 SQLite: Indexes are dropped if certain methods are called which internally call changeColumnInternal Historically closed; relevant baseline test verified AddColumn_HavingColumnPropertyUniqueAndIndex_RebuildSucceeds passed in the SQLite artifact of master run 35715528132 (1 case(s)). This verifies the named scenario; broader edge cases are not inferred.
#40 Replace changeColumnInternal and implement different approach Historically closed; relevant baseline test verified RecreateTable_HavingACompoundPrimaryKey_Success passed in the SQLite artifact of master run 35715528132 (1 case(s)). This verifies the named scenario; broader edge cases are not inferred.
#41 GetIndexes should distinguish between unique constraints and unique indexes Historically closed; relevant baseline test verified GetSQLiteTableInfo_GetIndexesAndColumnsWithIndex_NoUniqueOnTheColumnsAndIndexExists passed in the SQLite artifact of master run 35715528132 (1 case(s)). This verifies the named scenario; broader edge cases are not inferred.
#42 Add GetUniques method for SQLiteTableInfo. This is utterly missing. Historically closed; relevant baseline test verified GetUniques_Success passed in the SQLite artifact of master run 35715528132 (1 case(s)). This verifies the named scenario; broader edge cases are not inferred.
#43 T Historically closed; retain state Report title is only “T”; no reproducible requirement in the retrieved issue body. No new fix or closure claimed.
#44 If ColumnProperty.PrimaryKey is removed, NotNull is removed as well Historically closed; relevant baseline test verified AddPrimaryKey_AddPrimaryKey_ShouldStillBeNotNull passed in the SQLite artifact of master run 35715528132 (1 case(s)). This verifies the named scenario; broader edge cases are not inferred.
#45 ColumnProperty.ForeignKey has no own value but is combined using Unsigned and Null which is wrong Historical report rechecked; retain closed state Master ColumnProperty has no active ForeignKey enum member; the obsolete commented declaration is not a combined flag. The reported bit-mask implementation is absent.
#46 SQLite: ConstraintExists returns false in any case (hard-coded). Verified on master; closed ConstraintExists reads SQLite metadata; clean master SQLite suite passed.
#47 SQLite: GetConstraints returns empty array in any case (hard-coded). Verified on master; closed GetConstraints no longer returns an unconditional empty array; generic constraint tests cover metadata.
#48 Schema is not supported in almost any case e.g. in AddTable Partial; keep open SQL Server schema-qualified column metadata corrected. PostgreSQL relation-based, parameterized column/constraint/existence lookup now has cross-schema and quoted-name regressions in PR #174; passed live PostgreSQL CI in run 35742976746. Cross-provider schema qualification is not complete.
#52 AddForeignKey in TransformationProvider uses the same for OnUpdate and OnDelete which is wrong Fixed in PR #174; merged Independent-action overload and provider guards; SQL Server update cascade/delete set-null regression passed live CI at b8b075e.
#53 QuoteColumnNames should return a new list instead of changing the given list Fixed in PR #174; merged QuoteColumnNamesIfRequired returns a fresh array; FK inputs are copied.
#54 Constraint names are not quoted in many cases. Probably in all cases? Partial; keep open Generic removal and FK paths quote constraints. All provider-specific inline constraint paths still need review.
#56 public virtual bool ViewExists(string view) implementation is wrong Historical report rechecked; retain closed state Master live Oracle ViewExists_ViewExists_Returns and ViewExists_ViewDoesNotExist_ReturnsFalse both passed. Provider-specific overrides remain important; this does not certify arbitrary custom-provider implementations.
#57 public virtual bool TableExists(string view) implementation is wrong Historical report rechecked; retain closed state Master live SQL Server TableExists_WithSchemaNameTableExists_Returns and TableExists_TableDoesNotExist_ReturnsFalse passed. Qualified lookup gaps in other providers remain tracked in #48.
#59 If NOT NULL or NULL is not explicitly given in the create script, notnull in PRAGMA table_info is wrong Historical report rechecked; retain closed state Master SQLite AddTable_NoNotNullColumn_NotNullIsFalse and AddTable_NotNullColumn_NotNullIsTrue passed, distinguishing implicit nullable columns from explicit NOT NULL.
#60 We cannot use NULL in columns of a composite PK Verified on master; closed SQLite composite Guid PK regression inserts NULL members and rejects non-null duplicates; single-column PK regression rejects NULL.
#62 PostgreSQL: '42883: function length(integer) does not exist Historical report rechecked; retain closed state Master PostgreSQL GetColumnContentSize_UseOnNonStringColumn_ThrowsSpeakingException passed. Non-string input is explicitly rejected rather than sent to length(integer).
#63 T Historically closed; retain state Report title is only “T”; no reproducible requirement in the retrieved issue body. No new fix or closure claimed.
#64 CHECK Constraints are not implemented in SQLiteTransformationProvider Verified on master; closed SQLite CHECK support and valid/invalid data regressions exist.
#65 public override string[] GetConstraints(string table) returns an empty array in SQLite Historically closed; relevant baseline test verified ConstraintExist passed in the SQLite artifact of master run 35715528132 (1 case(s)). This verifies the named scenario; broader edge cases are not inferred.
#66 RemoveAllConstraints should be implemented in SQLite Historical report rechecked; retain closed state Master RemoveAllConstraints cleared PK/UNIQUE but retained a CHECK TODO and foreign keys. PR #174 adds FK/CHECK removal; historical closure alone did not establish completeness.
#68 Match child properties and parent properties with data of PRAGMA foreign_key_list Historically closed; relevant baseline test verified GetForeignKeyConstraints_SingleColumn_Success passed in the SQLite artifact of master run 35715528132 (1 case(s)). This verifies the named scenario; broader edge cases are not inferred.
#72 TableExistsShouldWorkWithBracketsAndSchemaNameAndTableName Test fails Historically closed; relevant baseline test verified TableExistsShouldWorkWithBracketsAndSchemaNameAndTableName passed in the SQLServer artifact of master run 35715528132 (2 case(s)). This verifies the named scenario; broader edge cases are not inferred.
#73 SqlServerDialect has incorrect boundaries defined for NVARCHAR(n). Should be 4000 Historically closed; relevant baseline test verified AddTableWithFixedLengthEqualTo4000Characters_ShouldCreateNVARCHAR4000 passed in the SQLServer artifact of master run 35715528132 (1 case(s)). This verifies the named scenario; broader edge cases are not inferred.
#74 Fix RemoveUnexistingColumn test for SQL Server Historically closed; relevant baseline test verified RemoveUnexistingColumn passed in the SQLServer artifact of master run 35715528132 (1 case(s)). This verifies the named scenario; broader edge cases are not inferred.
#75 Reactivate SQL Server Tests Historical report rechecked; retain closed state Master workflow run 35715528132 contains a successful live SQL Server job and its NUnit artifact; the provider is enabled in the required CI matrix.
#82 AddTable/AddForeignKey does not quote names - important for Postgre SQL Historical report rechecked; retain closed state Master quotes reserved identifiers on several paths, with AddIndex_TableNameIsReservedWord_Succeeds passing. PR #174 expands constraint-name quoting. Full table/FK identifier coverage remains a limitation shared with #54.
#85 Reactiveate MySQL tests Verified on master; closed PR #171 restored live MySQL/MariaDB tests; master CI run 35715528132 passed.
#89 GetColumns() in Postgre does not even read the type nor does it convert it to DBType! Historically closed; relevant baseline test verified GetColumns_DataTypeResolveSucceeds passed in the PostgreSQL artifact of master run 35715528132 (1 case(s)). This verifies the named scenario; broader edge cases are not inferred.
#90 Default Values are not read correctly in Postgre using GetColumns() Historically closed; relevant baseline test verified GetColumns_Postgres_DefaultValues_Succeeds passed in the PostgreSQL artifact of master run 35715528132 (1 case(s)). This verifies the named scenario; broader edge cases are not inferred.
#92 Add boolean default value tests for Postgre Historically closed; relevant baseline test verified GetColumns_DefaultValueBooleanValues_Succeeds passed in the PostgreSQL artifact of master run 35715528132 (20 case(s)). This verifies the named scenario; broader edge cases are not inferred.
#95 Postgre SQL interval default value is not implemented Historically closed; relevant baseline test verified GetColumns_Postgres_DefaultValues_Succeeds passed in the PostgreSQL artifact of master run 35715528132 (1 case(s)). This verifies the named scenario; broader edge cases are not inferred.
#97 Postgres: GetColumnContentSize throws No function matches the given name and argument types. You might need to add explicit type casts. Historically closed; relevant baseline test verified GetColumnContentSize_UseOnNonStringColumn_ThrowsSpeakingException passed in the PostgreSQL artifact of master run 35715528132 (1 case(s)). This verifies the named scenario; broader edge cases are not inferred.
#98 GetColumnContentSize should return int? instead of int for empty tables or NULL columns Additive fix in PR #174; merged GetNullableColumnContentSize distinguishes empty/all-NULL input while keeping the existing int contract.
#101 GetColumns in SqlServerTransformationProvider swallows exceptions Fixed in PR #174; merged SQL Server GetColumns propagates metadata errors rather than returning an empty schema.
#102 GetColumns_UniqueButNotPrimaryKey_ReturnsFalse should be moved to generic GetColumns tests Reproduced and verified in PR #174; merged Moving the uniqueness test to generic fixtures reproduced missing UNIQUE flags on SQL Server, Oracle and PostgreSQL (run 35737057890). Added catalog queries and a composite-constraint counterexample; all provider jobs passed run 35737814671.
#103 SQL Server: GetColumns parses datetime as DbType.Date instead of DbType.DateTime/DateTime2 - Major bug Historically closed; relevant baseline test verified AddTableDateTime2 passed in the SQLServer artifact of master run 35715528132 (1 case(s)). This verifies the named scenario; broader edge cases are not inferred.
#104 SQL Server: Default value of type DateTime/DateTime2 is not parsed Historically closed; relevant baseline test verified GetColumns_DefaultValues_Succeeds passed in the SQLServer artifact of master run 35715528132 (1 case(s)). This verifies the named scenario; broader edge cases are not inferred.
#105 Oracle: Only bool, Guid and DateTime are implemented in Default in OracleDialect Historically closed; relevant baseline test verified GetColumns_Oracle_DefaultValues_Succeeds passed in the Oracle artifact of master run 35715528132 (1 case(s)). This verifies the named scenario; broader edge cases are not inferred.
#106 SQL Server type detection should be completely overhauled - does not work correctly Historically closed; relevant baseline test verified GetColumns_DefaultValues_Succeeds passed in the SQLServer artifact of master run 35715528132 (1 case(s)). This verifies the named scenario; broader edge cases are not inferred.
#107 SQL Server parser of default values does not work correctly and implements only a few data types. Should be fixed and extended. Historically closed; relevant baseline test verified GetColumns_DefaultValues_Succeeds passed in the SQLServer artifact of master run 35715528132 (1 case(s)). This verifies the named scenario; broader edge cases are not inferred.
#108 Oracle: Dialect for byte array byte[] fails => OracleException (0x80004005): ORA-03062: Ein Komma oder eine rechte Klammer fehlen Historically closed; relevant baseline test verified GetColumns_Oracle_DefaultValues_Succeeds passed in the Oracle artifact of master run 35715528132 (1 case(s)). This verifies the named scenario; broader edge cases are not inferred.
#109 SQLite: RemoveForeignKey does nothing - silently! It is overridden but just returns - nothing else. Historically closed; relevant baseline test verified RemoveForeignKey passed in the SQLite artifact of master run 35715528132 (1 case(s)). This verifies the named scenario; broader edge cases are not inferred.
#110 Implement GetCheckConstraints() - at least for generic tests Historically closed; relevant baseline test verified GetCheckConstraints_AddCheckConstraintsViaAddTable_CreatesTableCorrectly passed in the SQLite artifact of master run 35715528132 (1 case(s)). This verifies the named scenario; broader edge cases are not inferred.
#112 No feedback if table or constraint does not exist in RemoveConstraint in TransformationProvider Historically closed; relevant baseline test verified RemoveUnexistingForeignKey passed in the SQLite artifact of master run 35715528132 (1 case(s)). This verifies the named scenario; broader edge cases are not inferred.
#113 PrimaryKeyExists should be overridden and should throw in SQLite since it does not support named primary keys. Historical report rechecked; retain closed state Master overrides PrimaryKeyExists and reports whether any primary key exists, deliberately ignoring the supplied name. This differs from the issue suggestion to throw; preserve compatibility and document the actual semantics.
#114 AddCheckConstraint is not overridden in SQLiteTransformationProvider Historically closed; relevant baseline test verified CanAddCheckConstraint passed in the SQLite artifact of master run 35715528132 (1 case(s)). This verifies the named scenario; broader edge cases are not inferred.
#115 Some AddColumn virtual methods are not overridden in SQLite resulting in cascading failure. Historically closed; relevant baseline test verified AddColumnWithDefaultButNoSize passed in the SQLite artifact of master run 35715528132 (1 case(s)). This verifies the named scenario; broader edge cases are not inferred.
#118 ColumnExists returns false in a catch! Historical report rechecked; retain closed state Master ColumnExists(table, column, ignoreCase) directly queries GetColumns without a catch. The exception-swallowing code in the report is absent.
#120 Extend Oracle restrictions from 30bytes to 128bytes supporting Oracle versions greater than 12.1 Historical report rechecked; retain closed state Master Oracle validation uses Encoding.UTF8.GetBytes(name).Length with a 128-byte limit. PR #174 repairs column-name validation to validate each actual column. Older Oracle versions have different limits.
#122 Oracle: AddIndex does not add a unique index if used in Index instance Historically closed; relevant baseline test verified AddIndex_Unique_Success passed in the Oracle artifact of master run 35715528132 (1 case(s)). This verifies the named scenario; broader edge cases are not inferred.
#123 Indexes should be filterable Historically closed; relevant baseline test verified AddIndex_FilteredIndexMiscellaneousFilterTypesAndDataTypes_Success passed in the PostgreSQL artifact of master run 35715528132 (1 case(s)). This verifies the named scenario; broader edge cases are not inferred.
#124 PostgreSQL: AddIndex UNIQUE is not supported silently although available via Index class which is misleading Historically closed; relevant baseline test verified AddIndex_Unique_Success passed in the PostgreSQL artifact of master run 35715528132 (1 case(s)). This verifies the named scenario; broader edge cases are not inferred.
#125 Postgre: IncludeColumns in AddIndex is not used at all Historically closed; relevant baseline test verified AddIndex_IncludeColumnsMultiple_Success passed in the PostgreSQL artifact of master run 35715528132 (1 case(s)). This verifies the named scenario; broader edge cases are not inferred.
#126 Postgre does neither extract included columns nor does it retrieve the partial filters Historically closed; relevant baseline test verified AddIndex_FilteredIndexSingle_Success passed in the PostgreSQL artifact of master run 35715528132 (1 case(s)). This verifies the named scenario; broader edge cases are not inferred.
#132 SQL Server does not remove the unique index on ChangeColumn() with no ColumnProperty.Unique Resolved by v13 explicit constraints in PR #181; merged ColumnProperty.Unique and implicit column-owned uniqueness are removed. ChangeColumn preserves explicit constraints and indexes; use RemoveConstraint or RemoveIndex after inspecting metadata. Live SQL Server tests ChangeColumnPreservesExplicitUniqueFromTableOrColumnCreation, ExplicitUniqueRemovalAllowsDuplicates and ChangeColumn_DoesNotRemoveUserOwnedUniqueOrMutateDefinition passed in run 35766920321. The migration guide documents this intentional breaking replacement.
#134 Remove hacks for some SQlite features Native rename/drop merged; commented and closed SQLite native rename/drop selected when eligible; guarded reconstruction retained for operations without a native equivalent.
#135 Feature CopyDataFromTableToTable Historically closed; relevant baseline test verified CopyDataFromTableToTable_UsingOrderBy_Success passed in the Oracle artifact of master run 35715528132 (1 case(s)). This verifies the named scenario; broader edge cases are not inferred.
#139 Default value is not reset on ChangeColumn Fix in PR #174; merged Default removal regressions enabled; SQL Server default lookup and Oracle in-place reset corrected.
#140 Remove table in Oracle does not cleanup sequences Safe cleanup merged in PR #174; ownership policy remains explicit Default Oracle RemoveTable no longer guesses sequence ownership. RemoveTableWithOwnedSequences validates explicit legacy names and propagates cleanup errors. Passed live Oracle CI in run 35737814671.
#141 RemoveTable in Oracle does not cleanup => TRIGGERs Verified fix merged in PR #174; commented and closed Oracle table-owned trigger cleanup is exercised by ExplicitLegacyCleanupDropsSequenceAndTableOwnedTrigger; no guessed trigger-name cleanup. Passed live Oracle CI in run 35737814671.
#143 Replace Identity trigger to "GENERATED...." Historically closed; relevant baseline test verified GetColumns_GetIdentity_Succeeds passed in the Oracle artifact of master run 35715528132 (1 case(s)). This verifies the named scenario; broader edge cases are not inferred.
#145 ExecuteScalar("SELECT MAX(Id) FROM MyTable") should return null (C#) if table is empty Additive fix in PR #174; merged ExecuteNullableScalar returns null for null/DBNull and preserves typed structs; existing ExecuteScalar contract stays compatible.
#146 Oracle: Handle default value "NULL" Historically closed; relevant baseline test verified DefaultValue_Null_Success passed in the Oracle artifact of master run 35715528132 (1 case(s)). This verifies the named scenario; broader edge cases are not inferred.
#152 Exception "This is currently not supported by the migrator see issue #44. You need to use NOT NULL for a PK column." occurs Verified on master; closed The old issue-44 exception is absent; SQLite supplies single-PK NOT NULL and supports nullable composite members in existing regressions.
#161 Microsoft SQLite: FK integrity issue when using AddTable (by e.g. using AddColumn) Fix in PRs #173/#174; merged SQLite FK settings restored after success/failure; integrity checked before commit; rebuild dependencies guarded. Regression coverage uses both driver paths.
#162 DbType.Time is not implemented Partial; keep open PR #185 separates TimeOnly clock values from TimeSpan intervals; the earlier use of TimeSpan for time-of-day values conflated the two concepts. PostgreSQL native TIME metadata/default parsing now has a regression in PR #174; passed live PostgreSQL CI in run 35742976746. Oracle and SqlServer2005 retain documented historical representations; no universal native time claim.
#164 PostgreTransform Provider does not quote IncludeColumns for reserved names Historically closed; relevant baseline test verified AddIndex_IncludeColumnsWithReservedWord_Succeeds passed in the PostgreSQL artifact of master run 35715528132 (1 case(s)). This verifies the named scenario; broader edge cases are not inferred.
#165 Included columns not quoted in Postgre Duplicate verified; closed Duplicates #164; PostgreSQL included-column quoting is covered by the live metadata regression.
#167 Get columns in postgre should not quote table name Historically closed; relevant baseline test verified AddIndex_TableNameIsReservedWord_Succeeds passed in the PostgreSQL artifact of master run 35715528132 (1 case(s)). This verifies the named scenario; broader edge cases are not inferred.
#169 Support ON DELETE CASCADE (and other FK actions) in SQLite migrator Historically closed; relevant baseline test verified AddForeignKey_Cascade_DeletingParentDeletesReferencingChildren passed in the SQLite artifact of master run 35715528132 (1 case(s)). This verifies the named scenario; broader edge cases are not inferred.

Remaining audit work

  • Finish individual source/test evidence for historical closed reports; do not interpret a broad green suite as proof of every original report.
  • Recheck partial schema qualification, inline identifier quoting, historical uniqueness ownership and provider-specific time representations.
  • Keep partial ownership/scope reports open; new complete fixes close only after the referenced PR merges.
  • Keep issue comments and this inventory synchronized as evidence changes.

Current open issues rechecked on 2026-09-22

The seven currently open reports were rechecked against merged master c257125 and their issue comments. The local checkout was 77 commits behind that revision. PR #174 and the later v13 schema/column changes are now merged; the old "await merge" labels were stale and have been updated. Open issue state alone therefore does not mean the original bug is still present. Following user authorization, #134 and #141 were commented and closed through the signed-in GitHub UI (the connector lacks issue-write permission). The other five remain open. This review does not establish that the fixes have been published on NuGet.

Issue Current conclusion Remaining scope / next action
#33 ON DELETE/ON UPDATE fixed; reproduced and corrected silent MATCH handling locally SQLite itself enforces only SIMPLE. Accept unspecified/NONE/SIMPLE, preserve declared SIMPLE during reconstruction, and reject FULL/PARTIAL/unknown modes during creation, preview and adding a foreign-key definition. Preserve declared metadata so reconstruction rejects unsupported legacy declarations before modifying the original table. Merge this correction before considering the issue resolved under this explicit limitation.
#48 Partially fixed; keep open PR #185 adds escaped multipart identifiers, default-schema DDL, table-scoped constraint lookups, and qualified SQL Server/Oracle columns/indexes. This does not cover every DDL/catalog operation. For example, SQLite TableExists/ViewExists still query unqualified sqlite_master and do not resolve attached-database names. A provider-by-operation schema contract is still required.
#54 Additional catalog/drop bugs fixed in PR #185; validated at 226c106; awaiting merge Regression tests now create, inspect and remove a unique constraint containing spaces, an apostrophe and a dot. Lookups must be table-scoped. Informix uses delimited names with DELIMIDENT enabled. ASE 16.0 still failed to remove the punctuated key name with quoted identifier enhancement enabled; PR #185 now conservatively rejects key names containing dots or apostrophes before DDL, and tests a spaced name separately. This is an explicit unsupported case, not full identifier support.
#134 Requested native rename/drop implemented; closed RenameColumn uses native SQL on SQLite >= 3.26; RemoveColumn uses native SQL on >= 3.35 when dependency checks allow it. Other changes still need reconstruction. Closed for the named examples; a demand to eliminate all reconstruction is broader and cannot be inferred from SQLite's native capabilities.
#140 Safe explicit legacy-sequence cleanup implemented Native identity sequences are engine-owned. Legacy ownership must be supplied through RemoveTableWithOwnedSequences; RemoveTable intentionally does not delete a similarly named, potentially shared sequence. Ready for closure if this ownership contract is accepted.
#141 Already fixed/verified; closed with evidence The merged Oracle live regression checks table-owned trigger removal. No new implementation change is needed.
#162 Time/Interval conflation fixed in PR #185; validated at 226c106; awaiting merge TimeOnly now means time of day; TimeSpan means MigratorDbType.Interval. Time metadata defaults use TimeOnly. Informix Time changes from INTERVAL to DATETIME HOUR TO SECOND. Oracle DATE and SQL Server 2005 DATETIME remain explicit legacy representations. Native intervals and signed tick representations have negative multi-day default/parameter regressions.

SQLite's documented MATCH limitation is an engine limitation, not a missing SQL clause: emitting MATCH FULL would still enforce SIMPLE semantics. The correction raises NotSupportedException instead of promising that behavior.

Local evidence: the unchanged master unit + SQLite selection passed 284 tests, with no failures or skips. Seven new SQLiteForeignKeyMatchTests cases produced five failures before the fix, then all passed. The complete same unit + SQLite selection after the fix passed 299 tests, with no failures or skips. Tests cover composite-key null semantics, independent update/delete actions after reconstruction, rejection in execution/preview/add-FK, and preservation of existing schema/data/foreign-key settings on a rejected rebuild. External database suites were not rerun locally (Docker is unavailable); Oracle/SQL Server/PostgreSQL conclusions use the merged source and prior linked live CI evidence. The new master CI run 35772295882 was still in progress when inspected, so it is not counted as passing evidence here.

PR #185 contains the new implementation work. The first database run 35775458663 exposed a PostgreSQL interval-format regression, reserved column names in two new test queries, and Informix/Sybase failures. Db2 could not download its container image. These results are not counted as a successful matrix. The corrected branch has a new full matrix run; final evidence will be recorded after completion.

Run 35777089076 at dd9a512 passed Unit, SQLite, SQL Server, PostgreSQL, Oracle, MySQL, MariaDB, Firebird, Db2 and HANA. Informix failed while downloading its container, before tests. Sybase reproduced the punctuated key-removal limitation described above. The follow-up guard is verified by the final run below.

Final verification: run 35778092728 passed all 12 test jobs and the complete-coverage gate at code commit 226c106: 809 passed, zero failed, zero skipped. Counts: Unit 94, SQLite 205, SQL Server 130, PostgreSQL 145, Oracle 105, MySQL 19, MariaDB 18, Firebird 22, Db2 19, Informix 22, Sybase 21, HANA 9. Subsequent changes only update this audit and the runner guide. The passing matrix verifies the named regression scope; it does not resolve every schema operation in #48 or infer ownership of legacy Oracle sequences in #140.