IndexedDB: Make leveldb store integer versions and migrate old schemas
authordgrogan@chromium.org <dgrogan@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 7 Aug 2012 06:54:55 +0000 (06:54 +0000)
committerdgrogan@chromium.org <dgrogan@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 7 Aug 2012 06:54:55 +0000 (06:54 +0000)
commit96a60ece960f85266a91af1f6cbb002050f86684
treefd7f322c0161be048ff9e31426275f6f9ffe3281
parent97bd0ea9d9a8be18734074b7ab24b0a47a129355
IndexedDB: Make leveldb store integer versions and migrate old schemas
https://bugs.webkit.org/show_bug.cgi?id=92883

Reviewed by Tony Chang.

Our first schema change. If an existing DB doesn't have integer
versions, this will add one to all object stores in the origin.

No new tests - chrome test for the migration forthcoming. Will involve
starting with a leveldb directory from an old build of chrome, opening
it up with the migration code in place, and checking the new database.
http://codereview.chromium.org/10826159/

* Modules/indexeddb/IDBLevelDBBackingStore.cpp:
(WebCore::putVarInt):
(WebCore):
(WebCore::setUpMetadata):
Uses the ASSERT-but-still-handle-corruption pattern recently discussed
in https://bugs.webkit.org/show_bug.cgi?id=92725#c13.

(WebCore::IDBLevelDBBackingStore::open):
(WebCore::IDBLevelDBBackingStore::getIDBDatabaseMetaData):
Because we can't store negative numbers, store 0 instead of -1.

(WebCore::IDBLevelDBBackingStore::createIDBDatabaseMetaData):
(WebCore::IDBLevelDBBackingStore::updateIDBDatabaseIntVersion):
* Modules/indexeddb/IDBLevelDBCoding.h:
* Modules/indexeddb/IDBMetadata.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@124858 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Source/WebCore/ChangeLog
Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp
Source/WebCore/Modules/indexeddb/IDBLevelDBCoding.h
Source/WebCore/Modules/indexeddb/IDBMetadata.h