<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>149205</bug_id>
          
          <creation_ts>2015-09-15 20:47:32 -0700</creation_ts>
          <short_desc>IndexedDB openKeyCursor() returns primaryKeys in wrong order</short_desc>
          <delta_ts>2016-03-30 10:23:33 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>149117</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nolan Lawson">nolan</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>beidson</cc>
    
    <cc>sroussey</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1126268</commentid>
    <comment_count>0</comment_count>
      <attachid>261291</attachid>
    <who name="Nolan Lawson">nolan</who>
    <bug_when>2015-09-15 20:47:32 -0700</bug_when>
    <thetext>Created attachment 261291
Reproducible test case

Let&apos;s say you create an objectStore with a primary key and a secondary key, and you insert:

{primaryKey: &apos;a&apos;, secondaryKey: 0}
{primaryKey: &apos;b&apos;, secondaryKey: 0}
{primaryKey: &apos;c&apos;, secondaryKey: 0}

If you then call openKeyCursor() on the secondary index, then the cursor&apos;s primaryKeys should be returned in order (since the secondary indexes are all the same).

However, in WebKit nightly 10600.8.9, r189569 I am able to get the cursor to return the primaryKeys in the wrong order, although only after a refresh. It seems like the order of the keys is being determined by the length instead of lexicographic order, but I&apos;m not sure.

I have a reproducible test to demonstrate (also attached to this bug): http://bl.ocks.org/nolanlawson/32daf56e98904562b52d

This bug cannot be reproduced in IE 10, Firefox 40, or Chrome 45. There is a note in the IndexedDB spec explaining this behavior:

&gt; records is always sorted in ascending key order.
&gt; In the case of source being an index, records is secondarily sorted 
&gt; in ascending value order (where the value in an index is the key of 
&gt; the record in the referenced object store). 

Source: http://w3c.github.io/IndexedDB/#h-cursor-iteration-operation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177002</commentid>
    <comment_count>1</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-03-22 09:42:27 -0700</bug_when>
    <thetext>This test case works in ToT - Please try in the latest WebKit nightly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179087</commentid>
    <comment_count>2</comment_count>
    <who name="Nolan Lawson">nolan</who>
    <bug_when>2016-03-30 10:23:33 -0700</bug_when>
    <thetext>Confirmed fixed in WebKit Nightly. Thank you!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>261291</attachid>
            <date>2015-09-15 20:47:32 -0700</date>
            <delta_ts>2015-09-15 20:47:32 -0700</delta_ts>
            <desc>Reproducible test case</desc>
            <filename>index.html</filename>
            <type>text/html</type>
            <size>2600</size>
            <attacher name="Nolan Lawson">nolan</attacher>
            
              <data encoding="base64">PGJvZHk+CiAgPGgxPiBSZXBybyBXZWJLaXQgd3Jvbmcga2V5IG9yZGVyIGJ1ZzwvaDE+CiAgPHA+
SWYgeW91IHNlZSB0aGUgdGV4dCA8c3Ryb25nPlRoZXJlIGlzIGEgYnVnPC9zdHJvbmc+LCB0aGVu
IHRoZXJlJ3MgYSBidWcuPC9wPgogIDxwcmUgaWQ9ImRpc3BsYXkiPgogIDwvcHJlPgo8c2NyaXB0
PgoKZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9u
ICgpIHsKCnZhciBkYm5hbWUgPSAndGVzdC13cm9uZy1rZXktb3JkZXInOwoKZnVuY3Rpb24gbG9n
KG1zZykgewogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXNwbGF5IikuaW5uZXJIVE1MICs9
IG1zZyArICJcbiI7Cn0KCnZhciBsb2FkZWRPbmNlID0gISFsb2NhbFN0b3JhZ2UubG9hZGVkT25j
ZTsKbG9jYWxTdG9yYWdlLmxvYWRlZE9uY2UgPSAidHJ1ZSI7Cgp2YXIgcmVxID0gaW5kZXhlZERC
Lm9wZW4oZGJuYW1lICsgIjEiKTsKCnJlcS5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbiAoZSkg
ewogIHZhciBkYiA9IGUudGFyZ2V0LnJlc3VsdDsKCiAgaWYgKGUub2xkVmVyc2lvbiA9PT0gMSkg
ewogICAgcmV0dXJuOwogIH0KCiAgZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJywge2tleVBh
dGg6ICdwcmltYXJ5S2V5J30pCiAgICAuY3JlYXRlSW5kZXgoJ3NlY29uZGFyeUtleScsICdzZWNv
bmRhcnlLZXknKTsKICAgIAogIHZhciB0eG4gPSBlLmN1cnJlbnRUYXJnZXQudHJhbnNhY3Rpb247
Cn07CgpyZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKICB2YXIgZGIgPSBlLnRhcmdldC5y
ZXN1bHQ7CiAgCiAgdmFyIHR4biA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsICdyZWFkd3JpdGUn
KTsKICAKICBpZiAoIWxvYWRlZE9uY2UpIHsKICAgIHR4bi5vYmplY3RTdG9yZSgnc3RvcmUnKS5w
dXQoe3ByaW1hcnlLZXk6ICJhMTEiLCBzZWNvbmRhcnlLZXk6IDB9KTsKICAgIHR4bi5vYmplY3RT
dG9yZSgnc3RvcmUnKS5wdXQoe3ByaW1hcnlLZXk6ICJiMTEiLCBzZWNvbmRhcnlLZXk6IDB9KTsK
ICAgIHR4bi5vYmplY3RTdG9yZSgnc3RvcmUnKS5wdXQoe3ByaW1hcnlLZXk6ICJjMSIsIHNlY29u
ZGFyeUtleTogMH0pOwogICAgdHhuLm9iamVjdFN0b3JlKCdzdG9yZScpLnB1dCh7cHJpbWFyeUtl
eTogImMyIiwgc2Vjb25kYXJ5S2V5OiAwfSk7CiAgICB0eG4ub2JqZWN0U3RvcmUoJ3N0b3JlJyku
cHV0KHtwcmltYXJ5S2V5OiAiYzMiLCBzZWNvbmRhcnlLZXk6IDB9KTsKICB9CgogIHR4bi5vbmNv
bXBsZXRlID0gZnVuY3Rpb24gKCkgewogICAgdmFyIHR4biA9IGRiLnRyYW5zYWN0aW9uKCdzdG9y
ZScsICdyZWFkb25seScpOwogICAgCiAgICB2YXIgcmVxID0gdHhuLm9iamVjdFN0b3JlKCdzdG9y
ZScpLmluZGV4KCdzZWNvbmRhcnlLZXknKS5vcGVuS2V5Q3Vyc29yKCk7CiAgCiAgICB2YXIgcHJp
bWFyeUtleXMgPSBbXTsKICAgIHZhciBzZWNvbmRhcnlLZXlzID0gW107CiAgCiAgICByZXEub25z
dWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKICAgICAgdmFyIGN1cnNvciA9IGUudGFyZ2V0LnJlc3Vs
dDsKICAgICAgaWYgKCFjdXJzb3IpIHsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgIAogICAg
ICBwcmltYXJ5S2V5cy5wdXNoKGN1cnNvci5wcmltYXJ5S2V5KTsKICAgICAgc2Vjb25kYXJ5S2V5
cy5wdXNoKGN1cnNvci5rZXkpOwogICAgCiAgICAgIGN1cnNvci5jb250aW51ZSgpOwogICAgfTsK
ICAKICAgIHR4bi5vbmNvbXBsZXRlID0gZnVuY3Rpb24gKCkgewogICAgICBpZiAoIWxvYWRlZE9u
Y2UpIHsKICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCkKICAgICAgfSBlbHNlIHsKICAg
ICAgICBsb2coJ3ByaW1hcnlLZXlzOlxuJyArIEpTT04uc3RyaW5naWZ5KHByaW1hcnlLZXlzLCBu
dWxsLCAnICAnKSk7CiAgICAgICAgbG9nKCcnKQogICAgICAgIGxvZygnc2Vjb25kYXJ5S2V5czpc
bicgKyBKU09OLnN0cmluZ2lmeShzZWNvbmRhcnlLZXlzKSk7CiAgICAgICAgCiAgICAgICAgdmFy
IHNvcnRlZCA9IHByaW1hcnlLZXlzLnNsaWNlKCkuc29ydCgpCiAgICAgICAgCiAgICAgICAgZnVu
Y3Rpb24gY2hlY2tCdWcoKSB7CiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNvcnRlZC5s
ZW5ndGg7IGkrKykgewogICAgICAgICAgICBpZiAoc29ydGVkW2ldICE9PSBwcmltYXJ5S2V5c1tp
XSkgewogICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaWYg
KGNoZWNrQnVnKCkpIHsKICAgICAgICAgIGxvZygnXG5UaGVyZSBpcyBhIGJ1Zy4nKTsKICAgICAg
ICAgIGxvZygnVGhlIHNvcnRlZCBsaXN0IGFuZCB0aGUgYWN0dWFsIGxpc3QgYXJlIG5vdCB0aGUg
c2FtZS4nKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgbG9nKCdcblRoZSBidWcgd2FzIG5v
dCByZXByb2R1Y2VkLicpOwogICAgICAgICAgbG9nKCdUaGUgc29ydGVkIGxpc3QgYW5kIHRoZSBh
Y3R1YWwgbGlzdCBhcmUgdGhlIHNhbWUuJyk7CiAgICAgICAgfQogICAgICB9CiAgICB9OwogIH07
Cn07Cn0pOwo8L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+Cgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>