[Bug 11976] New: Autoincrement keys need to be cleaned up some in the spec

http://www.w3.org/Bugs/Public/show_bug.cgi?id=11976

           Summary: Autoincrement keys need to be cleaned up some in the
                    spec
           Product: WebAppsWG
           Version: unspecified
          Platform: PC
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Indexed Database API
        AssignedTo: dave.null@w3.org
        ReportedBy: jorlow@chromium.org
         QAContact: member-webapi-cvs@w3.org
                CC: mike@w3.org, public-webapps@w3.org


>From the "[IndexedDB] Auto increment and spec inconsistency" thread:

On Mon, Jan 17, 2011 at 9:06 AM, Hans Wennborg <hans@chromium.org> wrote:
Reading http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html,
there seems to be some inconsistency around how an object store with
key generator is supposed to behave.

In 5.1 Object Store Storage Operation, step 1 it says: "If store uses
a key generator and key is undefined, set key to the next generated
key. If store also uses in-line keys, then set the property in value
pointed to by store's key path to the new value for key".

But in the object store example in 3.3.3, there is the following:

A second put operation will overwrite the record stored by the first
put operation.
var abraham = {id: 1, name: 'Abraham', number: '2107'};
store.put(abraham);

However, the way I read the specification, the key generator will
generate the key 2, and then set the "id" property in the value to 2.
So this operation does not at all overwrite the first record, and the
next statement in the example: "Now when the object store is read with
the same key, the result is different compared to the object read
earlier." is false.


It seems to me that for an object store with a key generator, it is
never possible to specify the key for a put or add operation: Using a
key parameter is disallowed (in 3.2.5 under "add" and "put"), and
in-line keys get overwritten.

This means that it is not possible to update a record with a put
operation if the object store uses a key generator, which seems
counter-intuitive to me.

To me, it would make sense that:

1. If a user provides an explicit key to an operation on an object
store that has a key generator, then the explicit key takes
precedence, and the key generator doesn't do anything.

2. If a user provides an in-line key, then that key takes precedence,
and the key generator doesn't do anything.

-- 
Configure bugmail: http://www.w3.org/Bugs/Public/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.

Received on Thursday, 3 February 2011 21:12:47 UTC