IDB: HTML5 Rocks Indexed Database demo fails
authorbeidson@apple.com <beidson@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 4 Feb 2014 05:42:05 +0000 (05:42 +0000)
committerbeidson@apple.com <beidson@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 4 Feb 2014 05:42:05 +0000 (05:42 +0000)
https://bugs.webkit.org/show_bug.cgi?id=128157

Reviewed by Anders Carlsson (Provisional review by Jon Lee)

* DatabaseProcess/IndexedDB/sqlite/SQLiteIDBCursor.cpp:
(WebKit::getIndexStatement): Only increment the open/closed counters if those keys exist.
  Fix order of statements for no lower key.
(WebKit::getObjectStoreStatement): Only increment the open/closed counters if those keys exist.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@163364 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebKit2/ChangeLog
Source/WebKit2/DatabaseProcess/IndexedDB/sqlite/SQLiteIDBCursor.cpp

index 3647882..10f1a82 100644 (file)
@@ -1,3 +1,15 @@
+2014-02-03  Brady Eidson  <beidson@apple.com>
+
+        IDB: HTML5 Rocks Indexed Database demo fails
+        https://bugs.webkit.org/show_bug.cgi?id=128157
+
+        Reviewed by Anders Carlsson (Provisional review by Jon Lee)
+
+        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBCursor.cpp:
+        (WebKit::getIndexStatement): Only increment the open/closed counters if those keys exist.
+          Fix order of statements for no lower key.
+        (WebKit::getObjectStoreStatement): Only increment the open/closed counters if those keys exist.
+
 2014-02-03  Jae Hyun Park  <jae.park@company100.net>
 
         Use nullptr in ShareableBitmap
index 7e89a5e..dcf5395 100644 (file)
@@ -64,7 +64,7 @@ SQLiteIDBCursor::SQLiteIDBCursor(SQLiteIDBTransaction* transaction, const IDBIde
     ASSERT(m_objectStoreID);
 }
 
-static const String& getIndexStatement(bool lowerKey, bool lowerOpen, bool upperKey, bool upperOpen, bool descending)
+static const String& getIndexStatement(bool hasLowerKey, bool isLowerOpen, bool hasUpperKey, bool isUpperOpen, bool descending)
 {
     DEFINE_STATIC_LOCAL(Vector<String>, indexStatements, ());
 
@@ -74,10 +74,10 @@ static const String& getIndexStatement(bool lowerKey, bool lowerOpen, bool upper
         // No lower key statements (6)
         indexStatements.append(ASCIILiteral("SELECT key, value FROM IndexRecords WHERE indexID = ? ORDER BY key;"));
         indexStatements.append(ASCIILiteral("SELECT key, value FROM IndexRecords WHERE indexID = ? ORDER BY key DESC;"));
-        indexStatements.append(ASCIILiteral("SELECT key, value FROM IndexRecords WHERE indexID = ? AND key < CAST(? AS TEXT) ORDER BY key;"));
-        indexStatements.append(ASCIILiteral("SELECT key, value FROM IndexRecords WHERE indexID = ? AND key < CAST(? AS TEXT) ORDER BY key DESC;"));
         indexStatements.append(ASCIILiteral("SELECT key, value FROM IndexRecords WHERE indexID = ? AND key <= CAST(? AS TEXT) ORDER BY key;"));
         indexStatements.append(ASCIILiteral("SELECT key, value FROM IndexRecords WHERE indexID = ? AND key <= CAST(? AS TEXT) ORDER BY key DESC;"));
+        indexStatements.append(ASCIILiteral("SELECT key, value FROM IndexRecords WHERE indexID = ? AND key < CAST(? AS TEXT) ORDER BY key;"));
+        indexStatements.append(ASCIILiteral("SELECT key, value FROM IndexRecords WHERE indexID = ? AND key < CAST(? AS TEXT) ORDER BY key DESC;"));
 
         // Closed lower key statements (6)
         indexStatements.append(ASCIILiteral("SELECT key, value FROM IndexRecords WHERE indexID = ? AND key >= CAST(? AS TEXT) ORDER BY key;"));
@@ -97,14 +97,19 @@ static const String& getIndexStatement(bool lowerKey, bool lowerOpen, bool upper
     }
 
     size_t i = 0;
-    if (lowerKey)
-        i += 6;
-    if (lowerOpen)
+
+    if (hasLowerKey) {
         i += 6;
-    if (upperKey)
-        i += 2;
-    if (upperOpen)
+        if (isLowerOpen)
+            i += 6;
+    }
+
+    if (hasUpperKey) {
         i += 2;
+        if (isUpperOpen)
+            i += 2;
+    }
+
     if (descending)
         i += 1;
 
@@ -144,14 +149,19 @@ static const String& getObjectStoreStatement(bool lowerKey, bool lowerOpen, bool
     }
 
     size_t i = 0;
-    if (lowerKey)
-        i += 6;
-    if (lowerOpen)
+
+    if (hasLowerKey) {
         i += 6;
-    if (upperKey)
-        i += 2;
-    if (upperOpen)
+        if (isLowerOpen)
+            i += 6;
+    }
+
+    if (hasUpperKey) {
         i += 2;
+        if (isUpperOpen)
+            i += 2;
+    }
+
     if (descending)
         i += 1;