RESOLVED FIXED 153800
Modern IDB: storage/indexeddb/cursor-primary-key-order.html fails with SQLite backend
https://bugs.webkit.org/show_bug.cgi?id=153800
Summary Modern IDB: storage/indexeddb/cursor-primary-key-order.html fails with SQLite...
Brady Eidson
Reported 2016-02-02 13:40:10 PST
Modern IDB: storage/indexeddb/cursor-primary-key-order.html fails with SQLite backend An Index cursor gets integers out of order. It should go: -Inf, -2, -1, 0, 1, 2, Inf ...But instead it goes: 0, 1, 2, Inf, -1, -2, -Inf I've hard coded some debugging into SQLiteIDBCursor and found that, indeed, just stepping the cursor statement over and over does, in fact, give the out of order results. This is either a bug in our key comparator, a bug in some SQL queries, or a bug in SQLite.
Attachments
Patch v1 (9.78 KB, patch)
2016-02-02 14:45 PST, Brady Eidson
no flags
Brady Eidson
Comment 1 2016-02-02 13:44:33 PST
It's the statement creating the index record table. It's currently: CREATE TABLE IndexRecords (indexID INTEGER NOT NULL ON CONFLICT FAIL, objectStoreID INTEGER NOT NULL ON CONFLICT FAIL, key TEXT COLLATE IDBKEY NOT NULL ON CONFLICT FAIL, value NOT NULL ON CONFLICT FAIL); It needs to be: CREATE TABLE IndexRecords (indexID INTEGER NOT NULL ON CONFLICT FAIL, objectStoreID INTEGER NOT NULL ON CONFLICT FAIL, key TEXT COLLATE IDBKEY NOT NULL ON CONFLICT FAIL, value TEXT COLLATE IDBKEY NOT NULL ON CONFLICT FAIL); Note the value (which is an IDBKey into the object store) needs IDBKey collation for sorting upon insertion.
Brady Eidson
Comment 2 2016-02-02 14:45:09 PST
Created attachment 270520 [details] Patch v1
WebKit Commit Bot
Comment 3 2016-02-02 16:12:30 PST
Comment on attachment 270520 [details] Patch v1 Clearing flags on attachment: 270520 Committed r196038: <http://trac.webkit.org/changeset/196038>
WebKit Commit Bot
Comment 4 2016-02-02 16:12:33 PST
All reviewed patches have been landed. Closing bug.
Note You need to log in before you can comment on or make changes to this bug.