From a540a112bbccd1b92848de3d89d5ecef7fc07dec Mon Sep 17 00:00:00 2001 From: dfahlander Date: Fri, 16 Oct 2020 11:08:38 +0200 Subject: [PATCH 1/2] Repro of #1145 --- test/tests-upgrading.js | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/test/tests-upgrading.js b/test/tests-upgrading.js index 4a6c1ac13..5cb4f7b34 100644 --- a/test/tests-upgrading.js +++ b/test/tests-upgrading.js @@ -793,3 +793,36 @@ promisedTest("Issue #959 - Should migrate successfully with an explicit unique m equal(result2.name, "Bar", "The expected friends was returned"); } ); + + +promisedTest( + "Issue 1145 - Regression: SchemaError during version upgrade", + async () => { + const DBNAME = "issue1145"; + await Dexie.delete(DBNAME); + const db = new Dexie(DBNAME); + db.version(1).stores({ Y: "id" }); + await db.open(); + await db.close(); + db.version(2).upgrade((trans) => { + ok(true, "Starting version 2 upgrade."); + return trans.Y.count(); + }); + db.version(3).stores({ + Y: "id,X", + }); + db.version(4).upgrade((trans) => { + ok(true, "Starting version 4 upgrade."); + return trans.Y.where("X").equals("value").toArray(); + }); + + try { + await db.open(); + ok(true, "Open successful"); + } catch (e) { + ok(false, "Open Failed:: " + e); + } finally { + await db.delete(); + } + } +); From 96f8d2c88b5bc1de6c613d4a2fb7c78b4fee6887 Mon Sep 17 00:00:00 2001 From: dfahlander Date: Fri, 16 Oct 2020 11:49:51 +0200 Subject: [PATCH 2/2] Resolve #1145 --- src/classes/version/schema-helpers.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/classes/version/schema-helpers.ts b/src/classes/version/schema-helpers.ts index 142db7924..e3defff47 100644 --- a/src/classes/version/schema-helpers.ts +++ b/src/classes/version/schema-helpers.ts @@ -127,6 +127,7 @@ export function updateTablesAndIndexes( if (contentUpgrade && version._cfg.version > oldVersion) { // Update db.core with new tables and indexes: generateMiddlewareStacks(db, idbUpgradeTrans); + trans._memoizedTables = {}; // Invalidate memoization as transaction shape may change between versions. anyContentUpgraderHasRun = true;