packages feed

keiro-migrations 0.18.0.0 → 0.19.0.0

raw patch · 3 files changed

+51/−31 lines, 3 filesdep ~kiroku-storedep ~kiroku-store-migrationsdep ~pg-migratePVP ok

version bump matches the API change (PVP)

Dependency ranges changed: kiroku-store, kiroku-store-migrations, pg-migrate, pg-migrate-cli, pg-migrate-embed, pg-migrate-import-codd, pg-migrate-test-support

API changes (from Hackage documentation)

Files

CHANGELOG.md view
@@ -6,6 +6,20 @@  ## [Unreleased] +## 0.19.0.0 — 2026-09-25++### Breaking Changes++- Require `kiroku-store-migrations ^>=0.6.0.0` and+  `kiroku-store >=0.9.0.1 && <0.10`. The composed migration plan gains Kiroku+  migration `0012` ahead of Keiro's own migrations and grows from 43 to 44+  entries. `0012` is new, so no recorded checksum moves, but it blocks appends+  while it runs and Kiroku 0.8 writers cannot append after it; see the root+  changelog for the cutover.+- Move to the `pg-migrate` 1.2 family: `pg-migrate`, `pg-migrate-cli`,+  `pg-migrate-embed`, `pg-migrate-import-codd`, and, in tests,+  `pg-migrate-test-support`.+ ## 0.18.0.0 — 2026-09-20  
keiro-migrations.cabal view
@@ -1,6 +1,6 @@ cabal-version: 3.0 name: keiro-migrations-version: 0.18.0.0+version: 0.19.0.0 synopsis: Schema migrations for keiro description:   Embedded PostgreSQL schema migrations and a migration runner for the Keiro@@ -333,10 +333,10 @@     bytestring >=0.11 && <0.13,     containers >=0.6 && <0.8,     hasql >=1.10 && <1.11,-    kiroku-store-migrations ^>=0.4.0.0,-    pg-migrate ^>=1.1.0.0,-    pg-migrate-embed ^>=1.1.0.0,-    pg-migrate-import-codd ^>=1.1.0.0,+    kiroku-store-migrations ^>=0.6.0.0,+    pg-migrate ^>=1.2.0.0,+    pg-migrate-embed ^>=1.2.0.0,+    pg-migrate-import-codd ^>=1.2.0.0,     template-haskell >=2.20 && <2.24,     text >=2.0 && <2.2, @@ -369,11 +369,11 @@     bytestring >=0.11 && <0.13,     hasql >=1.10 && <1.11,     keiro-migrations,-    kiroku-store-migrations ^>=0.4.0.0,+    kiroku-store-migrations ^>=0.6.0.0,     optparse-applicative >=0.17 && <0.20,-    pg-migrate ^>=1.1.0.0,-    pg-migrate-cli ^>=1.1.0.0,-    pg-migrate-import-codd ^>=1.1.0.0,+    pg-migrate ^>=1.2.0.0,+    pg-migrate-cli ^>=1.2.0.0,+    pg-migrate-import-codd ^>=1.2.0.0,     text >=2.0 && <2.2,  executable keiro-write-expected-schema@@ -415,10 +415,10 @@     hasql >=1.10 && <1.11,     hspec >=2.10 && <2.12,     keiro-migrations,-    kiroku-store-migrations ^>=0.4.0.0,-    pg-migrate ^>=1.1.0.0,-    pg-migrate-import-codd ^>=1.1.0.0,-    pg-migrate-test-support ^>=1.1.0.0,+    kiroku-store-migrations ^>=0.6.0.0,+    pg-migrate ^>=1.2.0.0,+    pg-migrate-import-codd ^>=1.2.0.0,+    pg-migrate-test-support ^>=1.2.0.0,     text >=2.0 && <2.2,     unix >=2.8 && <2.9, @@ -451,8 +451,8 @@     hasql-pool >=1.2 && <1.5,     hspec >=2.10,     keiro-migrations,-    kiroku-store >=0.8 && <0.9,-    kiroku-store-migrations ^>=0.4.0.0,+    kiroku-store >=0.9.0.1 && <0.10,+    kiroku-store-migrations ^>=0.6.0.0,     lens >=5.2 && <5.4,     temporary,     text >=2.0 && <2.2,
test/Main.hs view
@@ -79,7 +79,7 @@           ] -> do             componentNameText kirokuName `shouldBe` "kiroku"             kirokuDependencies `shouldBe` mempty-            length kirokuEntries `shouldBe` 11+            length kirokuEntries `shouldBe` 12             componentNameText keiroName `shouldBe` "keiro"             dependencyName <- requireRight (componentName "kiroku")             keiroDependencies `shouldBe` Set.singleton dependencyName@@ -186,7 +186,7 @@             plan             >>= requireRight         Keiro.pendingMigrations handshake `shouldBe` planMigrationIds plan-        length (Keiro.pendingMigrations handshake) `shouldBe` 43+        length (Keiro.pendingMigrations handshake) `shouldBe` 44         Keiro.ledgerIssues handshake `shouldBe` []         handshakePassed handshake `shouldBe` False @@ -211,7 +211,7 @@         _ <- runMigrationPlan defaultRunOptions settings kirokuOnly >>= requireRight         handshake <-           missingMigrations defaultRunOptions provider plan >>= requireRight-        Keiro.pendingMigrations handshake `shouldBe` drop 11 (planMigrationIds plan)+        Keiro.pendingMigrations handshake `shouldBe` drop 12 (planMigrationIds plan)         length (Keiro.pendingMigrations handshake) `shouldBe` 32         Keiro.ledgerIssues handshake `shouldBe` []         handshakePassed handshake `shouldBe` False@@ -295,12 +295,12 @@         assertSchema connection         let provider = providerFor connection         rerun <- runMigrationPlanWith defaultRunOptions provider plan >>= requireRight-        reportOutcomes rerun `shouldBe` replicate 43 AlreadyApplied+        reportOutcomes rerun `shouldBe` replicate 44 AlreadyApplied         verified <- verifyMigrationPlanWith defaultRunOptions provider plan >>= requireRight         case verified of           VerificationReport verificationIssues applied pending unknown -> do             verificationIssues `shouldBe` []-            length applied `shouldBe` 43+            length applied `shouldBe` 44             pending `shouldBe` []             unknown `shouldBe` []       either (expectationFailure . show) pure result@@ -349,7 +349,7 @@             (runMigrationPlan defaultRunOptions settings plan >>= requireRight)             (runMigrationPlan defaultRunOptions settings plan >>= requireRight)         sort [reportOutcomes first, reportOutcomes second]-          `shouldBe` sort [replicate 43 AppliedNow, replicate 43 AlreadyApplied]+          `shouldBe` sort [replicate 44 AppliedNow, replicate 44 AlreadyApplied]      it "upgrades singleton read-model rows into deterministic rebuild groups" $ do       fullPlan <- requirePlan@@ -368,7 +368,8 @@         withConnection settings $ \connection ->           useSession connection (Session.script legacyReadModelFixtureSql)         report <- runMigrationPlan defaultRunOptions settings fullPlan >>= requireRight-        Prelude.drop 32 (reportOutcomes report) `shouldBe` replicate 11 AppliedNow+        Prelude.drop (length (planMigrationIds priorPlan)) (reportOutcomes report)+          `shouldBe` replicate 11 AppliedNow         withConnection settings $ \connection -> do           rows <- useSession connection (Session.statement () legacyGroupUpgradeStatement)           rows@@ -394,7 +395,8 @@         withConnection settings $ \connection ->           useSession connection (Session.script preCanonicalRebuildFixtureSql)         report <- runMigrationPlan defaultRunOptions settings fullPlan >>= requireRight-        Prelude.drop 34 (reportOutcomes report) `shouldBe` replicate 9 AppliedNow+        Prelude.drop (length (planMigrationIds priorPlan)) (reportOutcomes report)+          `shouldBe` replicate 9 AppliedNow         withConnection settings $ \connection -> do           rows <- useSession connection (Session.statement () preCanonicalRebuildShapeStatement)           rows@@ -419,7 +421,8 @@         withConnection settings $ \connection ->           useSession connection (Session.script preStatusContractFixtureSql)         report <- runMigrationPlan defaultRunOptions settings fullPlan >>= requireRight-        Prelude.drop 36 (reportOutcomes report) `shouldBe` replicate 7 AppliedNow+        Prelude.drop (length (planMigrationIds priorPlan)) (reportOutcomes report)+          `shouldBe` replicate 7 AppliedNow         withConnection settings $ \connection -> do           facts <- useSession connection (Session.statement () preStatusContractFactsStatement)           facts `shouldBe` ("unmanaged", 0, "unmanaged", True, True)@@ -442,7 +445,8 @@           withConnection settings $ \connection ->             useSession connection (Session.statement () guardFunctionOidStatement)         report <- runMigrationPlan defaultRunOptions settings fullPlan >>= requireRight-        Prelude.drop 40 (reportOutcomes report) `shouldBe` replicate 3 AppliedNow+        Prelude.drop (length (planMigrationIds priorPlan)) (reportOutcomes report)+          `shouldBe` replicate 3 AppliedNow         withConnection settings $ \connection -> do           (afterOid, epochFenced, publicRevoked) <-             useSession connection (Session.statement () upgradedGuardFactsStatement)@@ -467,7 +471,8 @@         withConnection settings $ \connection ->           useSession connection (Session.script preRejectionOutboxFixtureSql)         report <- runMigrationPlan defaultRunOptions settings fullPlan >>= requireRight-        Prelude.drop 41 (reportOutcomes report) `shouldBe` replicate 2 AppliedNow+        Prelude.drop (length (planMigrationIds priorPlan)) (reportOutcomes report)+          `shouldBe` replicate 2 AppliedNow         withConnection settings $ \connection -> do           useSession connection (Session.script validRejectionAuditSql)           missingAudit <- Connection.use connection (Session.script missingRejectionAuditSql)@@ -678,7 +683,7 @@         up <- runMigrationPlan defaultRunOptions settings plan >>= requireRight         reportOutcomes up           `shouldBe` replicate 7 AlreadyApplied-            <> replicate 4 AppliedNow+            <> replicate 5 AppliedNow             <> replicate 16 AlreadyApplied             <> replicate 16 AppliedNow @@ -1115,14 +1120,14 @@     up <- runMigrationPlan defaultRunOptions settings plan >>= requireRight     reportOutcomes up       `shouldBe` replicate 7 AlreadyApplied-        <> replicate 4 AppliedNow+        <> replicate 5 AppliedNow         <> replicate 16 AlreadyApplied         <> replicate 16 AppliedNow     verifiedAfterCanaries <- verifyMigrationPlan defaultRunOptions settings plan >>= requireRight     case verifiedAfterCanaries of       VerificationReport verificationIssues _ _ _ -> verificationIssues `shouldBe` []     rerun <- runMigrationPlan defaultRunOptions settings plan >>= requireRight-    reportOutcomes rerun `shouldBe` replicate 43 AlreadyApplied+    reportOutcomes rerun `shouldBe` replicate 44 AlreadyApplied     second <-       importCoddHistory defaultImportOptions config provider plan frameworkCoddHistoryMappings         >>= requireRight@@ -1132,7 +1137,7 @@       sourceRows <- useSession connection (Session.statement () (sourceRowCountStatement sourceSchema))       sourceRows `shouldBe` 23       facts <- useSession connection (Session.statement () importFactsStatement)-      facts `shouldBe` (43, 23, True)+      facts `shouldBe` (44, 23, True)  postCoddImportPendingIssues :: IO [VerificationIssue] postCoddImportPendingIssues =@@ -1146,6 +1151,7 @@         ("kiroku", "0009"),         ("kiroku", "0010"),         ("kiroku", "0011"),+        ("kiroku", "0012"),         ("keiro", "0017-schema-management-comment"),         ("keiro", "0018"),         ("keiro", "0019-keiro-snapshots-state-shape-hash"),@@ -1413,7 +1419,7 @@       (to_regclass('keiro_read.projection_group_status_v1') IS NOT NULL),       (obj_description(to_regnamespace('keiro_read'), 'pg_namespace') =         'Versioned, owner-rights read contracts for out-of-process Keiro consumers.'),-      (obj_description(to_regnamespace('kiroku'), 'pg_namespace') = 'Managed by pg-migrate component kiroku through 0011'),+      (obj_description(to_regnamespace('kiroku'), 'pg_namespace') = 'Managed by pg-migrate component kiroku through 0012'),       (obj_description(to_regnamespace('keiro'), 'pg_namespace') = 'Managed by pg-migrate component keiro through 0017-schema-management-comment')     ) AS checks(ok)     """