- From: Ian Hickson via cvs-syncmail <cvsmail@w3.org>
- Date: Mon, 29 Dec 2008 09:59:54 +0000
- To: public-html-commits@w3.org
Update of /sources/public/html5/spec In directory hutz:/tmp/cvs-serv31625 Modified Files: Overview.html Log Message: SQL: Split the transaction() method into two, one for read/write access and one for shared read access. (whatwg r2607) Index: Overview.html =================================================================== RCS file: /sources/public/html5/spec/Overview.html,v retrieving revision 1.1777 retrieving revision 1.1778 diff -u -d -r1.1777 -r1.1778 --- Overview.html 29 Dec 2008 09:14:38 -0000 1.1777 +++ Overview.html 29 Dec 2008 09:59:51 -0000 1.1778 @@ -31779,9 +31779,8 @@ will try to use hundreds of megabytes to declare this upfront, instead of the user agent prompting the user for permission to increase the quota every five megabytes.<pre class=idl>interface <dfn id=database>Database</dfn> { - void <a href=#dom-database-transaction title=dom-database-transaction>transaction</a>(in <a href=#sqltransactioncallback>SQLTransactionCallback</a> callback); - void <a href=#dom-database-transaction title=dom-database-transaction>transaction</a>(in <a href=#sqltransactioncallback>SQLTransactionCallback</a> callback, in <a href=#sqltransactionerrorcallback>SQLTransactionErrorCallback</a> errorCallback); - void <a href=#dom-database-transaction title=dom-database-transaction>transaction</a>(in <a href=#sqltransactioncallback>SQLTransactionCallback</a> callback, in <a href=#sqltransactionerrorcallback>SQLTransactionErrorCallback</a> errorCallback, in <a href=#voidcallback>VoidCallback</a> successCallback); + void <a href=#dom-database-transaction title=dom-database-transaction>transaction</a>(in <a href=#sqltransactioncallback>SQLTransactionCallback</a> callback, [Optional] in <a href=#sqltransactionerrorcallback>SQLTransactionErrorCallback</a> errorCallback, [Optional] in <a href=#voidcallback>VoidCallback</a> successCallback); + void <a href=#dom-database-readtransaction title=dom-database-readTransaction>readTransaction</a>(in <a href=#sqltransactioncallback>SQLTransactionCallback</a> callback, [Optional] in <a href=#sqltransactionerrorcallback>SQLTransactionErrorCallback</a> errorCallback, [Optional] in <a href=#voidcallback>VoidCallback</a> successCallback); readonly attribute DOMString <a href=#dom-database-version title=dom-database-version>version</a>; void <a href=#dom-database-changeversion title=dom-database-changeVersion>changeVersion</a>(in DOMString oldVersion, in DOMString newVersion, in <a href=#sqltransactioncallback>SQLTransactionCallback</a> callback, in <a href=#sqltransactionerrorcallback>SQLTransactionErrorCallback</a> errorCallback, in <a href=#voidcallback>VoidCallback</a> successCallback); @@ -31794,13 +31793,16 @@ interface <dfn id=sqltransactionerrorcallback>SQLTransactionErrorCallback</dfn> { void <span title=dom-sqltransactionerrorcallback-handleEvent>handleEvent</span>(in <a href=#sqlerror>SQLError</a> error); };</pre><p>The <dfn id=dom-database-transaction title=dom-database-transaction><code>transaction()</code></dfn> - method takes one or two arguments. When called, the method must + and <dfn id=dom-database-readtransaction title=dom-database-readTransaction><code>readTransaction()</code></dfn> + methods takes one to three arguments. When called, these method must immediately return and then asynchronously run the <a href=#transaction-steps>transaction steps</a> with the <i>transaction callback</i> being the first argument, the <i>error callback</i> being the second argument, if any, the <i>success callback</i> being the third argument, if any, and with no <i>preflight operation</i> or <i>postflight - operation</i>.<p>The version that the database was opened with is the <dfn id=concept-database-expected-version title=concept-database-expected-version>expected version</dfn> of + operation</i>.<p>For the <code title=dom-database-transaction><a href=#dom-database-transaction>transaction()</a></code> method, the + <i>mode</i> must be read/write. For the <code title=dom-database-readTransaction><a href=#dom-database-readtransaction>readTransaction()</a></code> + method, the <i>mode</i> must be read-only.<p>The version that the database was opened with is the <dfn id=concept-database-expected-version title=concept-database-expected-version>expected version</dfn> of this <code><a href=#database>Database</a></code> object. It can be the empty string, in which case there is no expected version — any version is fine.<p>On getting, the <dfn id=dom-database-version title=dom-database-version><code>version</code></dfn> attribute @@ -31818,7 +31820,7 @@ exactly matches the database's actual version. If it does not, then the <i>preflight operation</i> fails.</li> - </ol><p>...and the <i>postflight operation</i> being the following:<ol><li>Change the database's actual version to the value of the second + </ol><p>...the <i>postflight operation</i> being the following:<ol><li>Change the database's actual version to the value of the second argument to the <code title=dom-database-changeVersion><a href=#dom-database-changeversion>changeVersion()</a></code> method.</li> @@ -31826,7 +31828,7 @@ the value of the second argument to the <code title=dom-database-changeVersion><a href=#dom-database-changeversion>changeVersion()</a></code> method.</li> - </ol><h5 id=executing-sql-statements><span class=secno>5.10.2.3 </span>Executing SQL statements</h5><p>The <code title=dom-database-transaction><a href=#dom-database-transaction>transaction()</a></code> + </ol><p>...and the <i>mode</i> being read/write.<h5 id=executing-sql-statements><span class=secno>5.10.2.3 </span>Executing SQL statements</h5><p>The <code title=dom-database-transaction><a href=#dom-database-transaction>transaction()</a></code> and <code title=dom-database-changeVersion><a href=#dom-database-changeversion>changeVersion()</a></code> methods invoke callbacks with <code><a href=#sqltransaction>SQLTransaction</a></code> objects.<pre class=idl>typedef sequence<any> <dfn id=objectarray>ObjectArray</dfn>; @@ -32006,12 +32008,18 @@ be run asynchronously. These steps are invoked with a <i>transaction callback</i>, optionally an <i>error callback</i>, optionally a <i>success callback</i>, optionally a <i>preflight operation</i>, - and optionally a <i>postflight operation</i>.<ol><li><p>Open a new SQL transaction to the database, and create a + optionally a <i>postflight operation</i>, and with a <i>mode</i> + that is either read/write or read-only.<ol><li><p>Open a new SQL transaction to the database, and create a <code><a href=#sqltransaction>SQLTransaction</a></code> object that represents that - transaction.</li> + transaction. If the <i>mode</i> is read/write, the transaction must + have an exclusive write lock over the entire database. If the + <i>mode</i> is read-only, the transaction must have a shared read + lock over the entire database. The user agent should wait for an + appropriate lock to be available..</li> - <li><p>If an error occurred in the opening of the transaction, jump - to the last step.</li> + <li><p>If an error occurred in the opening of the transaction + (e.g. if the user agent failed to obtain an appropriate lock after + an appropriate delay), jump to the last step.</li> <li><p>If a <i>preflight operation</i> was defined for this instance of the transaction steps, run that. If it fails, then jump @@ -32040,6 +32048,20 @@ <ol><li><p>If the statement is marked as bogus, jump to the "in case of error" steps below.</li> + <li id=modifications-fail-if-read-only> + + <p>If the <i>mode</i> is read-only but the statement's main verb + can modify the database, jump to the "in case of error" steps + below.</p> + + <p class=note>Only the statement's main verb (e.g. <code title="">UPDATE</code>, <code title="">SELECT</code>, <code title="">DROP</code>) is considered here. Thus, a statement like + "<code title="">UPDATE test SET id=0 WHERE 0=1</code>" would be + treated as potentially modifying the database for the purposes + of this step, even though it could never in fact have any + side-effects.</p> + + </li> + <li><p>Execute the statement in the context of the transaction. <a href=#references>[SQL]</a></p>
Received on Monday, 29 December 2008 10:00:04 UTC