- From: Jonas Sicking <jonas@sicking.cc>
- Date: Thu, 6 Oct 2011 17:43:48 -0700
- To: Webapps WG <public-webapps@w3.org>
Hi All, In both the Firefox and the Chrome implementation you can pass an empty array to IDBDatabase.transaction in order to create a transaction which has a scope that covers all objectStores in the database. I.e. you can do something like: trans = db.transaction([]); trans.objectStore(<any objectstore here>); (Note that this is *not* a dynamic scoped transaction, it's still a static scope that covers the whole database). In other words, these implementations treat the following two lines as equivalent: trans = db.transaction([]); trans = db.transaction(db.objectStoreNames); This, however, is not specified behavior. According to the spec as it is now the transaction should be created with an empty scope. I suspect both Mozilla and Google implemented it this way because we had discussions about this syntax on the list. However apparently this syntax never made it into the spec. I don't recall why. I'm personally not a big fan of this syntax. My concern is that it makes it easier to create a widely scoped transaction which has less ability to run in parallel with other transactions, than to create a transaction with as narrow scope as possible. And passing db.objectStoreNames is always possible. What do people think we should do? Should we add this behavior to the spec? Or are implementations willing to remove it? / Jonas
Received on Friday, 7 October 2011 00:44:53 UTC