RESOLVED INVALID 60720
IndexedDB index does not enforce uniqueness
https://bugs.webkit.org/show_bug.cgi?id=60720
Summary IndexedDB index does not enforce uniqueness
Mark Pilgrim (Google)
Reported 2011-05-12 13:22:52 PDT
Original test: http://mxr.mozilla.org/mozilla2.0/source/dom/indexedDB/test/test_indexes.html?force=1 This is an adaptation of part of a test in Mozilla's IndexedDB test suite. It creates an object store with one record, then creates a unique index on one of the keys, then attempts to add another record with a duplicate key (which should violate that unique index). Mozilla correctly throws a CONSTAINT_ERR, but WebKit does not throw.
Attachments
test case (2.97 KB, text/html)
2011-05-12 13:23 PDT, Mark Pilgrim (Google)
no flags
Mark Pilgrim (Google)
Comment 1 2011-05-12 13:23:13 PDT
Created attachment 93328 [details] test case
Joshua Bell
Comment 2 2011-11-23 14:52:19 PST
The attached test is flawed - it's assuming that the index constraints are enforced synchronously during the add() operation and result in an exception being thrown. Per the spec, with the async API (which is what the test is using) the constraint is enforced asynchronously and the uniqueness constraint error is reported via the request object (i.e. the onerror handler will fire). The test could be corrected with: 73d72 < evalAndExpectException("objectStore.add({ name: 'Bob', height: 62, weight: 170 }, '237-23-7738');", "IDBDatabaseException.CONSTRAINT_ERR"); 75c74,76 < done(); --- > req = evalAndLog("req = objectStore.add({ name: 'Bob', height: 62, weight: 170 }, '237-23-7738');", "IDBDatabaseException.CONSTRAINT_ERR"); > req.onsuccess = unexpectedSuccessCallback; > req.onerror = done; ... but WebKit already has a test for this: LayoutTests/storage/indexeddb/index-unique.html
Note You need to log in before you can comment on or make changes to this bug.