html5/spec Overview.html,1.1777,1.1778

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 &mdash; 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&lt;any&gt; <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