Author: slebresne
Date: Mon Sep 23 13:52:02 2013
New Revision: 1525592

URL: http://svn.apache.org/r1525592
Log:
Update website for 2.0.1 release

Modified:
    cassandra/site/publish/doc/cql3/CQL-2.0.html
    cassandra/site/publish/download/index.html
    cassandra/site/publish/index.html
    cassandra/site/src/settings.py

Modified: cassandra/site/publish/doc/cql3/CQL-2.0.html
URL: 
http://svn.apache.org/viewvc/cassandra/site/publish/doc/cql3/CQL-2.0.html?rev=1525592&r1=1525591&r2=1525592&view=diff
==============================================================================
--- cassandra/site/publish/doc/cql3/CQL-2.0.html (original)
+++ cassandra/site/publish/doc/cql3/CQL-2.0.html Mon Sep 23 13:52:02 2013
@@ -21,6 +21,7 @@
                | <boolean>
                | <hex>
   <variable> ::= '?'
+               | ':' <identifier>
       <term> ::= <constant>
                | <collection-literal>
                | <variable>
@@ -37,7 +38,7 @@
 
   <properties> ::= <property> (AND <property>)*
     <property> ::= <identifier> '=' ( <identifier> | <constant> | 
<map-literal> )
-</pre></pre><p><br/>Please note that not every possible productions of the 
grammar above will be valid in practice. Most notably, 
<code>&lt;variable></code> and nested <code>&lt;collection-literal></code> are 
currently not allowed inside <code>&lt;collection-literal></code>.</p><p>The 
question mark (<code>?</code>) of <code>&lt;variable></code> is a bind 
variables for <a href="#preparedStatement">prepared statements</a>.</p><p>The 
<code>&lt;properties></code> production is use by statement that create and 
alter keyspaces and tables. Each <code>&lt;property></code> is either a 
<em>simple</em> one, in which case it just has a value, or a <em>map</em> one, 
in which case it&#8217;s value is a map grouping sub-options. The following 
will refer to one or the other as the <em>kind</em> (<em>simple</em> or 
<em>map</em>) of the property.</p><p>A <code>&lt;tablename></code> will be used 
to identify a table. This is an identifier representing the table name that can 
be preceded by a keyspace n
 ame. The keyspace name, if provided, allow to identify a table in another 
keyspace than the currently active one (the currently active keyspace is set 
through the <a href="#useStmt"><tt>USE</tt></a> statement).</p><p>For supported 
<code>&lt;function></code>, see the section on <a 
href="#functions">functions</a>.</p><h3 id="preparedStatement">Prepared 
Statement</h3><p>CQL supports <em>prepared statements</em>. Prepared statement 
is an optimization that allows to parse a query only once but execute it 
multiple times with different concrete values.</p><p>In a statement, each time 
a column value is expected (in the data manipulation and query statements), a 
bind variable marker (denoted by a <code>?</code> symbol) can be used instead. 
A statement with bind variables must then be <em>prepared</em>. Once it has 
been prepared, it can executed by providing concrete values for the bind 
variables (values for bind variables must be provided in the order the bind 
variables are defined in the qu
 ery string). The exact procedure to prepare a statement and execute a prepared 
statement depends on the CQL driver used and is beyond the scope of this 
document.</p><h2 id="dataDefinition">Data Definition</h2><h3 
id="createKeyspaceStmt">CREATE KEYSPACE</h3><p><i>Syntax:</i></p><pre 
class="syntax"><pre>&lt;create-keyspace-stmt> ::= CREATE KEYSPACE (IF NOT 
EXISTS)? &lt;identifier> WITH &lt;properties>
+</pre></pre><p><br/>Please note that not every possible productions of the 
grammar above will be valid in practice. Most notably, 
<code>&lt;variable></code> and nested <code>&lt;collection-literal></code> are 
currently not allowed inside <code>&lt;collection-literal></code>.</p><p>A 
<code>&lt;variable></code> can be either anonymous (a question mark 
(<code>?</code>)) or named (an identifier preceded by <code>:</code>). Both 
declare a bind variables for <a href="#preparedStatement">prepared 
statements</a>. The only difference between an anymous and a named variable is 
that a named one will be easier to refer to (how exactly depends on the client 
driver used).</p><p>The <code>&lt;properties></code> production is use by 
statement that create and alter keyspaces and tables. Each 
<code>&lt;property></code> is either a <em>simple</em> one, in which case it 
just has a value, or a <em>map</em> one, in which case it&#8217;s value is a 
map grouping sub-options. The following will refer to one
  or the other as the <em>kind</em> (<em>simple</em> or <em>map</em>) of the 
property.</p><p>A <code>&lt;tablename></code> will be used to identify a table. 
This is an identifier representing the table name that can be preceded by a 
keyspace name. The keyspace name, if provided, allow to identify a table in 
another keyspace than the currently active one (the currently active keyspace 
is set through the <a href="#useStmt"><tt>USE</tt></a> statement).</p><p>For 
supported <code>&lt;function></code>, see the section on <a 
href="#functions">functions</a>.</p><h3 id="preparedStatement">Prepared 
Statement</h3><p>CQL supports <em>prepared statements</em>. Prepared statement 
is an optimization that allows to parse a query only once but execute it 
multiple times with different concrete values.</p><p>In a statement, each time 
a column value is expected (in the data manipulation and query statements), a 
<code>&lt;variable></code> (see above) can be used instead. A statement with 
bind variables m
 ust then be <em>prepared</em>. Once it has been prepared, it can executed by 
providing concrete values for the bind variables. The exact procedure to 
prepare a statement and execute a prepared statement depends on the CQL driver 
used and is beyond the scope of this document.</p><h2 id="dataDefinition">Data 
Definition</h2><h3 id="createKeyspaceStmt">CREATE 
KEYSPACE</h3><p><i>Syntax:</i></p><pre 
class="syntax"><pre>&lt;create-keyspace-stmt> ::= CREATE KEYSPACE (IF NOT 
EXISTS)? &lt;identifier> WITH &lt;properties>
 </pre></pre><p><br/><i>Sample:</i></p><pre class="sample"><pre>CREATE KEYSPACE 
Excelsior
            WITH replication = {'class': 'SimpleStrategy', 'replication_factor' 
: 3};
 
@@ -148,6 +149,7 @@ USING TTL 86400;
 
 &lt;relation> ::= &lt;identifier> '=' &lt;term>
              | &lt;identifier> IN '(' ( &lt;term> ( ',' &lt;term> )* )? ')'
+             | &lt;identifier> IN '?'
 
 &lt;option> ::= TIMESTAMP &lt;integer>
            | TTL &lt;integer>
@@ -169,6 +171,7 @@ UPDATE UserActions SET total = total + 2
 
 &lt;relation> ::= &lt;identifier> '=' &lt;term>
              | &lt;identifier> IN '(' ( &lt;term> ( ',' &lt;term> )* )? ')'
+             | &lt;identifier> IN '?'
 </pre></pre><p><br/><i>Sample:</i></p><pre class="sample"><pre>DELETE FROM 
NerdMovies USING TIMESTAMP 1240003134 WHERE movie = 'Serenity';
 
 DELETE phone FROM Users WHERE userid IN (C73DE1D3-AF08-40F3-B124-3FF3E5109F22, 
B70DE1D0-9908-4AE3-BE34-5573E5B09F14);
@@ -210,7 +213,7 @@ APPLY BATCH;
 
 &lt;relation> ::= &lt;identifier> ('=' | '&lt;' | '>' | '&lt;=' | '>=') 
&lt;term>
              | &lt;identifier> IN '(' ( &lt;term> ( ',' &lt;term>)* )? ')'
-             | TOKEN '(' &lt;identifier> ')' ('=' | '&lt;' | '>' | '&lt;=' | 
'>=') (&lt;term> | TOKEN '(' &lt;term> ')' )
+             | TOKEN '(' &lt;identifier> ( ',' &lt;identifer>)* ')' ('=' | 
'&lt;' | '>' | '&lt;=' | '>=') &lt;term>
 
 &lt;order-by> ::= &lt;ordering> ( ',' &lt;odering> )*
 &lt;ordering> ::= &lt;identifer> ( ASC | DESC )?
@@ -323,4 +326,4 @@ UPDATE plays SET scores = scores - [ 12,
 )
 </pre></pre><p>then the <code>token</code> function will take a single 
argument of type <code>text</code> (in that case, the partition key is 
<code>userid</code> (there is no clustering key so the partition key is the 
same than the primary key)), and the return type will be 
<code>bigint</code>.</p><h3 id="timeuuidFun">Timeuuid functions</h3><h4 
id="now"><code>now</code></h4><p>The <code>now</code> function takes no 
arguments and generates a new unique timeuuid (at the time where the statement 
using it is executed). Note that this method is useful for insertion but is 
largely non-sensical in <code>WHERE</code> clauses. For instance, a query of 
the form</p><pre class="sample"><pre>SELECT * FROM myTable WHERE t = now()
 </pre></pre><p>will never return any result by design, since the value 
returned by <code>now()</code> is guaranteed to be unique.</p><h4 
id="minTimeuuidandmaxTimeuuid"><code>minTimeuuid</code> and 
<code>maxTimeuuid</code></h4><p>The <code>minTimeuuid</code> (resp. 
<code>maxTimeuuid</code>) function takes a <code>timestamp</code> value 
<code>t</code> (which can be <a href="#usingdates">either a timestamp or a date 
string</a>) and return a <em>fake</em> <code>timeuuid</code> corresponding to 
the <em>smallest</em> (resp. <em>biggest</em>) possible <code>timeuuid</code> 
having for timestamp <code>t</code>. So for instance:</p> <pre 
class="sample"><pre>SELECT * FROM myTable WHERE t > maxTimeuuid('2013-01-01 
00:05+0000') AND t &lt; minTimeuuid('2013-02-02 10:00+0000')
-</pre></pre> <p>will select all rows where the <code>timeuuid</code> column 
<code>t</code> is strictly older than &#8216;2013-01-01 00:05+0000&#8217; but 
stricly younger than &#8216;2013-02-02 10:00+0000&#8217;.  Please note that 
<code>t >= maxTimeuuid('2013-01-01 00:05+0000')</code> would still <em>not</em> 
select a <code>timeuuid</code> generated exactly at &#8216;2013-01-01 
00:05+0000&#8217; and is essentially equivalent to <code>t > 
maxTimeuuid('2013-01-01 00:05+0000')</code>.</p><p><em>Warning</em>: We called 
the values generated by <code>minTimeuuid</code> and <code>maxTimeuuid</code> 
<em>fake</em> UUID because they do no respect the Time-Based UUID generation 
process specified by the <a href="http://www.ietf.org/rfc/rfc4122.txt";>RFC 
4122</a>. In particular, the value returned by these 2 methods will not be 
unique. This means you should only use those methods for querying (as in the 
example above). Inserting the result of those methods is almost certainly <em>a 
bad idea</em>.<
 /p><h4 id="dateOfandunixTimestampOf"><code>dateOf</code> and 
<code>unixTimestampOf</code></h4><p>The <code>dateOf</code> and 
<code>unixTimestampOf</code> functions take a <code>timeuuid</code> argument 
and extract the embeded timestamp. However, while the <code>dateof</code> 
function return it with the <code>timestamp</code> type (that most client, 
including cqlsh, interpret as a date), the <code>unixTimestampOf</code> 
function returns it as a <code>bigint</code> raw value.</p><h3 
id="blobFun">Blob conversion functions</h3><p>A number of functions are 
provided to &#8220;convert&#8221; the native types into binary data 
(<code>blob</code>). For every <code>&lt;native-type></code> <code>type</code> 
supported by CQL3 (a notable exceptions is <code>blob</code>, for obvious 
reasons), the function <code>typeAsBlob</code> takes a argument of type 
<code>type</code> and return it as a <code>blob</code>.  Conversely, the 
function <code>blobAsType</code> takes a 64-bit <code>blob</code> argumen
 t and convert it to a <code>bigint</code> value.  And so for instance, 
<code>bigintAsBlob(3)</code> is <code>0x0000000000000003</code> and 
<code>blobAsBigint(0x0000000000000003)</code> is <code>3</code>.</p><h2 
id="appendixA">Appendix A: CQL Keywords</h2><p>CQL distinguishes between 
<em>reserved</em> and <em>non-reserved</em> keywords. Reserved keywords cannot 
be used as identifier, they are truly reserved for the language (but one can 
enclose a reserved keyword by double-quotes to use it as an identifier). 
Non-reserved keywords however only have a specific meaning in certain context 
but can used as identifer otherwise. The only <em>raison d'être</em> of these 
non-reserved keywords is convenience: some keyword are non-reserved when it was 
always easy for the parser to decide whether they were used as keywords or 
not.</p><table><tr><th>Keyword      </th><th>Reserved? 
</th></tr><tr><td><code>ADD</code>          </td><td>yes 
</td></tr><tr><td><code>ALL</code>          </td><td>no  <
 /td></tr><tr><td><code>ALTER</code>        </td><td>yes 
</td></tr><tr><td><code>AND</code>          </td><td>yes 
</td></tr><tr><td><code>ANY</code>          </td><td>yes 
</td></tr><tr><td><code>APPLY</code>        </td><td>yes 
</td></tr><tr><td><code>AS</code>           </td><td>no  
</td></tr><tr><td><code>ASC</code>          </td><td>yes 
</td></tr><tr><td><code>ASCII</code>        </td><td>no  
</td></tr><tr><td><code>AUTHORIZE</code>    </td><td>yes 
</td></tr><tr><td><code>BATCH</code>        </td><td>yes 
</td></tr><tr><td><code>BEGIN</code>        </td><td>yes 
</td></tr><tr><td><code>BIGINT</code>       </td><td>no  
</td></tr><tr><td><code>BLOB</code>         </td><td>no  
</td></tr><tr><td><code>BOOLEAN</code>      </td><td>no  
</td></tr><tr><td><code>BY</code>           </td><td>yes 
</td></tr><tr><td><code>CLUSTERING</code>   </td><td>no  
</td></tr><tr><td><code>COLUMNFAMILY</code> </td><td>yes 
</td></tr><tr><td><code>COMPACT</code>      </td><td>no  
</td></tr><tr><td><code>CONSI
 STENCY</code>  </td><td>no  </td></tr><tr><td><code>COUNT</code>        
</td><td>no  </td></tr><tr><td><code>COUNTER</code>      </td><td>no  
</td></tr><tr><td><code>CREATE</code>       </td><td>yes 
</td></tr><tr><td><code>DECIMAL</code>      </td><td>no  
</td></tr><tr><td><code>DELETE</code>       </td><td>yes 
</td></tr><tr><td><code>DESC</code>         </td><td>yes 
</td></tr><tr><td><code>DOUBLE</code>       </td><td>no  
</td></tr><tr><td><code>DROP</code>         </td><td>yes 
</td></tr><tr><td><code>EACH_QUORUM</code>  </td><td>yes 
</td></tr><tr><td><code>FLOAT</code>        </td><td>no  
</td></tr><tr><td><code>FROM</code>         </td><td>yes 
</td></tr><tr><td><code>GRANT</code>        </td><td>yes 
</td></tr><tr><td><code>IN</code>           </td><td>yes 
</td></tr><tr><td><code>INDEX</code>        </td><td>yes 
</td></tr><tr><td><code>CUSTOM</code>       </td><td>no  
</td></tr><tr><td><code>INSERT</code>       </td><td>yes 
</td></tr><tr><td><code>INT</code>          </td><td>no  
 </td></tr><tr><td><code>INTO</code>         </td><td>yes 
</td></tr><tr><td><code>KEY</code>          </td><td>no  
</td></tr><tr><td><code>KEYSPACE</code>     </td><td>yes 
</td></tr><tr><td><code>LEVEL</code>        </td><td>no  
</td></tr><tr><td><code>LIMIT</code>        </td><td>yes 
</td></tr><tr><td><code>LOCAL_QUORUM</code> </td><td>yes 
</td></tr><tr><td><code>MODIFY</code>       </td><td>yes 
</td></tr><tr><td><code>NORECURSIVE</code>  </td><td>yes 
</td></tr><tr><td><code>NOSUPERUSER</code>  </td><td>no  
</td></tr><tr><td><code>OF</code>           </td><td>yes 
</td></tr><tr><td><code>ON</code>           </td><td>yes 
</td></tr><tr><td><code>ONE</code>          </td><td>yes 
</td></tr><tr><td><code>ORDER</code>        </td><td>yes 
</td></tr><tr><td><code>PASSWORD</code>     </td><td>no  
</td></tr><tr><td><code>PERMISSION</code>   </td><td>no  
</td></tr><tr><td><code>PERMISSIONS</code>  </td><td>no  
</td></tr><tr><td><code>PRIMARY</code>      </td><td>yes 
</td></tr><tr><td><code>QUOR
 UM</code>       </td><td>yes </td></tr><tr><td><code>REVOKE</code>       
</td><td>yes </td></tr><tr><td><code>SCHEMA</code>       </td><td>yes 
</td></tr><tr><td><code>SELECT</code>       </td><td>yes 
</td></tr><tr><td><code>SET</code>          </td><td>yes 
</td></tr><tr><td><code>STORAGE</code>      </td><td>no  
</td></tr><tr><td><code>SUPERUSER</code>    </td><td>no  
</td></tr><tr><td><code>TABLE</code>        </td><td>yes 
</td></tr><tr><td><code>TEXT</code>         </td><td>no  
</td></tr><tr><td><code>TIMESTAMP</code>    </td><td>no  
</td></tr><tr><td><code>TIMEUUID</code>     </td><td>no  
</td></tr><tr><td><code>THREE</code>        </td><td>yes 
</td></tr><tr><td><code>TOKEN</code>        </td><td>yes 
</td></tr><tr><td><code>TRUNCATE</code>     </td><td>yes 
</td></tr><tr><td><code>TTL</code>          </td><td>no  
</td></tr><tr><td><code>TWO</code>          </td><td>yes 
</td></tr><tr><td><code>TYPE</code>         </td><td>no  
</td></tr><tr><td><code>UPDATE</code>       </td><td>yes
  </td></tr><tr><td><code>USE</code>          </td><td>yes 
</td></tr><tr><td><code>USER</code>         </td><td>no  
</td></tr><tr><td><code>USERS</code>        </td><td>no  
</td></tr><tr><td><code>USING</code>        </td><td>yes 
</td></tr><tr><td><code>UUID</code>         </td><td>no  
</td></tr><tr><td><code>VALUES</code>       </td><td>no  
</td></tr><tr><td><code>VARCHAR</code>      </td><td>no  
</td></tr><tr><td><code>VARINT</code>       </td><td>no  
</td></tr><tr><td><code>WHERE</code>        </td><td>yes 
</td></tr><tr><td><code>WITH</code>         </td><td>yes 
</td></tr><tr><td><code>WRITETIME</code>    </td><td>no  
</td></tr><tr><td><code>DISTINCT</code>     </td><td>no  </td></tr></table><h2 
id="changes">Changes</h2><p>The following describes the addition/changes 
brought for each version of CQL.</p><h3 
id="a3.1.1">3.1.1</h3><ul><li><code>SELECT</code> statement now allows listing 
the partition keys (using the <code>DISTINCT</code> modifier). See <a 
href="https://issues.apache.
 org/jira/browse/CASSANDRA-4536">CASSANDRA-4536</a>.</li></ul><h3 
id="a3.1.0">3.1.0</h3><ul><li><a href="#alterTableStmt">ALTER TABLE</a> 
<code>DROP</code> option has been reenabled for CQL3 tables and has new 
semantics now: the space formerly used by dropped columns will now be 
eventually reclaimed (post-compaction). You should not readd previously dropped 
columns unless you use timestamps with microsecond precision (see <a 
href="https://issues.apache.org/jira/browse/CASSANDRA-3919";>CASSANDRA-3919</a> 
for more details).</li><li><code>SELECT</code> statement now supports aliases 
in select clause. Aliases in WHERE and ORDER BY clauses are not supported. See 
the &#8220;section on select&#8221;#selectStmt for 
details.</li><li><code>CREATE</code> statements for <code>KEYSPACE</code>, 
<code>TABLE</code> and <code>INDEX</code> now supports an <code>IF NOT 
EXISTS</code> condition. Similarly, <code>DROP</code> statements support a 
<code>IF EXISTS</code> condition.</li><li><code>INSERT</code>
  statements optionally supports a <code>IF NOT EXISTS</code> condition and 
<code>UDPATE</code> supports <code>IF</code> conditions.</li></ul><h3 
id="a3.0.5">3.0.5</h3><ul><li><code>SELECT</code>, <code>UPDATE</code>, and 
<code>DELETE</code> statements now allow empty <code>IN</code> relations (see 
<a 
href="https://issues.apache.org/jira/browse/CASSANDRA-5626";>CASSANDRA-5626</a>).</li></ul><h3
 id="a3.0.4">3.0.4</h3><ul><li>Updated the syntax for custom <a 
href="#createIndexStmt">secondary indexes</a>.</li><li>Non-equal condition on 
the partition key are now never supported, even for ordering partitioner as 
this was not correct (the order was <strong>not</strong> the one of the type of 
the partition key). Instead, the <code>token</code> method should always be 
used for range queries on the partition key (see <a href="#selectWhere">WHERE 
clauses</a>).</li></ul><h3 id="a3.0.3">3.0.3</h3><ul><li>Support for custom <a 
href="#createIndexStmt">secondary indexes</a> has been added.</li></ul>
 <h3 id="a3.0.2">3.0.2</h3><ul><li>Type validation for the <a 
href="#constants">constants</a> has been fixed. For instance, the 
implementation used to allow <code>'2'</code> as a valid value for an 
<code>int</code> column (interpreting it has the equivalent of <code>2</code>), 
or <code>42</code> as a valid <code>blob</code> value (in which case 
<code>42</code> was interpreted as an hexadecimal representation of the blob). 
This is no longer the case, type validation of constants is now more strict. 
See the <a href="#types">data types</a> section for details on which constant 
is allowed for which type.</li><li>The type validation fixed of the previous 
point has lead to the introduction of <a href="#constants">blobs constants</a> 
to allow inputing blobs. Do note that while inputing blobs as strings constant 
is still supported by this version (to allow smoother transition to blob 
constant), it is now deprecated (in particular the <a href="#types">data 
types</a> section does not list stri
 ngs constants as valid blobs) and will be removed by a future version. If you 
were using strings as blobs, you should thus update your client code asap to 
switch blob constants.</li><li>A number of functions to convert native types to 
blobs have also been introduced. Furthermore the token function is now also 
allowed in select clauses. See the <a href="#functions">section on 
functions</a> for details.</li></ul><h3 id="a3.0.1">3.0.1</h3><ul><li><a 
href="#usingdates">Date strings</a> (and timestamps) are no longer accepted as 
valid <code>timeuuid</code> values. Doing so was a bug in the sense that date 
string are not valid <code>timeuuid</code>, and it was thus resulting in <a 
href="https://issues.apache.org/jira/browse/CASSANDRA-4936";>confusing 
behaviors</a>.  However, the following new methods have been added to help 
working with <code>timeuuid</code>: <code>now</code>, <code>minTimeuuid</code>, 
<code>maxTimeuuid</code> , <code>dateOf</code> and 
<code>unixTimestampOf</code>. See the
  <a href="#usingtimeuuid">section dedicated to these methods</a> for more 
detail.</li><li>&#8220;Float constants&#8221;#constants now support the 
exponent notation. In other words, <code>4.2E10</code> is now a valid floating 
point value.</li></ul><h2 id="Versioning">Versioning</h2><p>Versioning of the 
CQL language adheres to the <a href="http://semver.org";>Semantic Versioning</a> 
guidelines. Versions take the form X.Y.Z where X, Y, and Z are integer values 
representing major, minor, and patch level respectively. There is no 
correlation between Cassandra release versions and the CQL language 
version.</p><table><tr><th>version</th><th>description</th></tr><tr><td>Major   
  </td><td>The major version <em>must</em> be bumped when backward incompatible 
changes are introduced. This should rarely occur.</td></tr><tr><td>Minor     
</td><td>Minor version increments occur when new, but backward compatible, 
functionality is introduced.</td></tr><tr><td>Patch     </td><td>The patch 
version is i
 ncremented when bugs are fixed.</td></tr></table></body></html>
\ No newline at end of file
+</pre></pre> <p>will select all rows where the <code>timeuuid</code> column 
<code>t</code> is strictly older than &#8216;2013-01-01 00:05+0000&#8217; but 
stricly younger than &#8216;2013-02-02 10:00+0000&#8217;.  Please note that 
<code>t >= maxTimeuuid('2013-01-01 00:05+0000')</code> would still <em>not</em> 
select a <code>timeuuid</code> generated exactly at &#8216;2013-01-01 
00:05+0000&#8217; and is essentially equivalent to <code>t > 
maxTimeuuid('2013-01-01 00:05+0000')</code>.</p><p><em>Warning</em>: We called 
the values generated by <code>minTimeuuid</code> and <code>maxTimeuuid</code> 
<em>fake</em> UUID because they do no respect the Time-Based UUID generation 
process specified by the <a href="http://www.ietf.org/rfc/rfc4122.txt";>RFC 
4122</a>. In particular, the value returned by these 2 methods will not be 
unique. This means you should only use those methods for querying (as in the 
example above). Inserting the result of those methods is almost certainly <em>a 
bad idea</em>.<
 /p><h4 id="dateOfandunixTimestampOf"><code>dateOf</code> and 
<code>unixTimestampOf</code></h4><p>The <code>dateOf</code> and 
<code>unixTimestampOf</code> functions take a <code>timeuuid</code> argument 
and extract the embeded timestamp. However, while the <code>dateof</code> 
function return it with the <code>timestamp</code> type (that most client, 
including cqlsh, interpret as a date), the <code>unixTimestampOf</code> 
function returns it as a <code>bigint</code> raw value.</p><h3 
id="blobFun">Blob conversion functions</h3><p>A number of functions are 
provided to &#8220;convert&#8221; the native types into binary data 
(<code>blob</code>). For every <code>&lt;native-type></code> <code>type</code> 
supported by CQL3 (a notable exceptions is <code>blob</code>, for obvious 
reasons), the function <code>typeAsBlob</code> takes a argument of type 
<code>type</code> and return it as a <code>blob</code>.  Conversely, the 
function <code>blobAsType</code> takes a 64-bit <code>blob</code> argumen
 t and convert it to a <code>bigint</code> value.  And so for instance, 
<code>bigintAsBlob(3)</code> is <code>0x0000000000000003</code> and 
<code>blobAsBigint(0x0000000000000003)</code> is <code>3</code>.</p><h2 
id="appendixA">Appendix A: CQL Keywords</h2><p>CQL distinguishes between 
<em>reserved</em> and <em>non-reserved</em> keywords. Reserved keywords cannot 
be used as identifier, they are truly reserved for the language (but one can 
enclose a reserved keyword by double-quotes to use it as an identifier). 
Non-reserved keywords however only have a specific meaning in certain context 
but can used as identifer otherwise. The only <em>raison d'être</em> of these 
non-reserved keywords is convenience: some keyword are non-reserved when it was 
always easy for the parser to decide whether they were used as keywords or 
not.</p><table><tr><th>Keyword      </th><th>Reserved? 
</th></tr><tr><td><code>ADD</code>          </td><td>yes 
</td></tr><tr><td><code>ALL</code>          </td><td>no  <
 /td></tr><tr><td><code>ALTER</code>        </td><td>yes 
</td></tr><tr><td><code>AND</code>          </td><td>yes 
</td></tr><tr><td><code>ANY</code>          </td><td>yes 
</td></tr><tr><td><code>APPLY</code>        </td><td>yes 
</td></tr><tr><td><code>AS</code>           </td><td>no  
</td></tr><tr><td><code>ASC</code>          </td><td>yes 
</td></tr><tr><td><code>ASCII</code>        </td><td>no  
</td></tr><tr><td><code>AUTHORIZE</code>    </td><td>yes 
</td></tr><tr><td><code>BATCH</code>        </td><td>yes 
</td></tr><tr><td><code>BEGIN</code>        </td><td>yes 
</td></tr><tr><td><code>BIGINT</code>       </td><td>no  
</td></tr><tr><td><code>BLOB</code>         </td><td>no  
</td></tr><tr><td><code>BOOLEAN</code>      </td><td>no  
</td></tr><tr><td><code>BY</code>           </td><td>yes 
</td></tr><tr><td><code>CLUSTERING</code>   </td><td>no  
</td></tr><tr><td><code>COLUMNFAMILY</code> </td><td>yes 
</td></tr><tr><td><code>COMPACT</code>      </td><td>no  
</td></tr><tr><td><code>CONSI
 STENCY</code>  </td><td>no  </td></tr><tr><td><code>COUNT</code>        
</td><td>no  </td></tr><tr><td><code>COUNTER</code>      </td><td>no  
</td></tr><tr><td><code>CREATE</code>       </td><td>yes 
</td></tr><tr><td><code>DECIMAL</code>      </td><td>no  
</td></tr><tr><td><code>DELETE</code>       </td><td>yes 
</td></tr><tr><td><code>DESC</code>         </td><td>yes 
</td></tr><tr><td><code>DOUBLE</code>       </td><td>no  
</td></tr><tr><td><code>DROP</code>         </td><td>yes 
</td></tr><tr><td><code>EACH_QUORUM</code>  </td><td>yes 
</td></tr><tr><td><code>FLOAT</code>        </td><td>no  
</td></tr><tr><td><code>FROM</code>         </td><td>yes 
</td></tr><tr><td><code>GRANT</code>        </td><td>yes 
</td></tr><tr><td><code>IN</code>           </td><td>yes 
</td></tr><tr><td><code>INDEX</code>        </td><td>yes 
</td></tr><tr><td><code>CUSTOM</code>       </td><td>no  
</td></tr><tr><td><code>INSERT</code>       </td><td>yes 
</td></tr><tr><td><code>INT</code>          </td><td>no  
 </td></tr><tr><td><code>INTO</code>         </td><td>yes 
</td></tr><tr><td><code>KEY</code>          </td><td>no  
</td></tr><tr><td><code>KEYSPACE</code>     </td><td>yes 
</td></tr><tr><td><code>LEVEL</code>        </td><td>no  
</td></tr><tr><td><code>LIMIT</code>        </td><td>yes 
</td></tr><tr><td><code>LOCAL_QUORUM</code> </td><td>yes 
</td></tr><tr><td><code>MODIFY</code>       </td><td>yes 
</td></tr><tr><td><code>NORECURSIVE</code>  </td><td>yes 
</td></tr><tr><td><code>NOSUPERUSER</code>  </td><td>no  
</td></tr><tr><td><code>OF</code>           </td><td>yes 
</td></tr><tr><td><code>ON</code>           </td><td>yes 
</td></tr><tr><td><code>ONE</code>          </td><td>yes 
</td></tr><tr><td><code>ORDER</code>        </td><td>yes 
</td></tr><tr><td><code>PASSWORD</code>     </td><td>no  
</td></tr><tr><td><code>PERMISSION</code>   </td><td>no  
</td></tr><tr><td><code>PERMISSIONS</code>  </td><td>no  
</td></tr><tr><td><code>PRIMARY</code>      </td><td>yes 
</td></tr><tr><td><code>QUOR
 UM</code>       </td><td>yes </td></tr><tr><td><code>REVOKE</code>       
</td><td>yes </td></tr><tr><td><code>SCHEMA</code>       </td><td>yes 
</td></tr><tr><td><code>SELECT</code>       </td><td>yes 
</td></tr><tr><td><code>SET</code>          </td><td>yes 
</td></tr><tr><td><code>STORAGE</code>      </td><td>no  
</td></tr><tr><td><code>SUPERUSER</code>    </td><td>no  
</td></tr><tr><td><code>TABLE</code>        </td><td>yes 
</td></tr><tr><td><code>TEXT</code>         </td><td>no  
</td></tr><tr><td><code>TIMESTAMP</code>    </td><td>no  
</td></tr><tr><td><code>TIMEUUID</code>     </td><td>no  
</td></tr><tr><td><code>THREE</code>        </td><td>yes 
</td></tr><tr><td><code>TOKEN</code>        </td><td>yes 
</td></tr><tr><td><code>TRUNCATE</code>     </td><td>yes 
</td></tr><tr><td><code>TTL</code>          </td><td>no  
</td></tr><tr><td><code>TWO</code>          </td><td>yes 
</td></tr><tr><td><code>TYPE</code>         </td><td>no  
</td></tr><tr><td><code>UPDATE</code>       </td><td>yes
  </td></tr><tr><td><code>USE</code>          </td><td>yes 
</td></tr><tr><td><code>USER</code>         </td><td>no  
</td></tr><tr><td><code>USERS</code>        </td><td>no  
</td></tr><tr><td><code>USING</code>        </td><td>yes 
</td></tr><tr><td><code>UUID</code>         </td><td>no  
</td></tr><tr><td><code>VALUES</code>       </td><td>no  
</td></tr><tr><td><code>VARCHAR</code>      </td><td>no  
</td></tr><tr><td><code>VARINT</code>       </td><td>no  
</td></tr><tr><td><code>WHERE</code>        </td><td>yes 
</td></tr><tr><td><code>WITH</code>         </td><td>yes 
</td></tr><tr><td><code>WRITETIME</code>    </td><td>no  
</td></tr><tr><td><code>DISTINCT</code>     </td><td>no  </td></tr></table><h2 
id="changes">Changes</h2><p>The following describes the addition/changes 
brought for each version of CQL.</p><h3 
id="a3.1.1">3.1.1</h3><ul><li><code>SELECT</code> statement now allows listing 
the partition keys (using the <code>DISTINCT</code> modifier). See <a 
href="https://issues.apache.
 org/jira/browse/CASSANDRA-4536">CASSANDRA-4536</a>.</li><li>The syntax <code>c 
IN ?</code> is now supported in <code>WHERE</code> clauses. In that case, the 
value expected for the bind variable will be a list of whatever type 
<code>c</code> is.</li><li>It is now possible to use named bind variables 
(using <code>:name</code> instead of <code>?</code>).</li></ul><h3 
id="a3.1.0">3.1.0</h3><ul><li><a href="#alterTableStmt">ALTER TABLE</a> 
<code>DROP</code> option has been reenabled for CQL3 tables and has new 
semantics now: the space formerly used by dropped columns will now be 
eventually reclaimed (post-compaction). You should not readd previously dropped 
columns unless you use timestamps with microsecond precision (see <a 
href="https://issues.apache.org/jira/browse/CASSANDRA-3919";>CASSANDRA-3919</a> 
for more details).</li><li><code>SELECT</code> statement now supports aliases 
in select clause. Aliases in WHERE and ORDER BY clauses are not supported. See 
the &#8220;section on select&#8
 221;#selectStmt for details.</li><li><code>CREATE</code> statements for 
<code>KEYSPACE</code>, <code>TABLE</code> and <code>INDEX</code> now supports 
an <code>IF NOT EXISTS</code> condition. Similarly, <code>DROP</code> 
statements support a <code>IF EXISTS</code> 
condition.</li><li><code>INSERT</code> statements optionally supports a 
<code>IF NOT EXISTS</code> condition and <code>UDPATE</code> supports 
<code>IF</code> conditions.</li></ul><h3 
id="a3.0.5">3.0.5</h3><ul><li><code>SELECT</code>, <code>UPDATE</code>, and 
<code>DELETE</code> statements now allow empty <code>IN</code> relations (see 
<a 
href="https://issues.apache.org/jira/browse/CASSANDRA-5626";>CASSANDRA-5626</a>).</li></ul><h3
 id="a3.0.4">3.0.4</h3><ul><li>Updated the syntax for custom <a 
href="#createIndexStmt">secondary indexes</a>.</li><li>Non-equal condition on 
the partition key are now never supported, even for ordering partitioner as 
this was not correct (the order was <strong>not</strong> the one of the type of 
th
 e partition key). Instead, the <code>token</code> method should always be used 
for range queries on the partition key (see <a href="#selectWhere">WHERE 
clauses</a>).</li></ul><h3 id="a3.0.3">3.0.3</h3><ul><li>Support for custom <a 
href="#createIndexStmt">secondary indexes</a> has been added.</li></ul><h3 
id="a3.0.2">3.0.2</h3><ul><li>Type validation for the <a 
href="#constants">constants</a> has been fixed. For instance, the 
implementation used to allow <code>'2'</code> as a valid value for an 
<code>int</code> column (interpreting it has the equivalent of <code>2</code>), 
or <code>42</code> as a valid <code>blob</code> value (in which case 
<code>42</code> was interpreted as an hexadecimal representation of the blob). 
This is no longer the case, type validation of constants is now more strict. 
See the <a href="#types">data types</a> section for details on which constant 
is allowed for which type.</li><li>The type validation fixed of the previous 
point has lead to the introduction of 
 <a href="#constants">blobs constants</a> to allow inputing blobs. Do note that 
while inputing blobs as strings constant is still supported by this version (to 
allow smoother transition to blob constant), it is now deprecated (in 
particular the <a href="#types">data types</a> section does not list strings 
constants as valid blobs) and will be removed by a future version. If you were 
using strings as blobs, you should thus update your client code asap to switch 
blob constants.</li><li>A number of functions to convert native types to blobs 
have also been introduced. Furthermore the token function is now also allowed 
in select clauses. See the <a href="#functions">section on functions</a> for 
details.</li></ul><h3 id="a3.0.1">3.0.1</h3><ul><li><a href="#usingdates">Date 
strings</a> (and timestamps) are no longer accepted as valid 
<code>timeuuid</code> values. Doing so was a bug in the sense that date string 
are not valid <code>timeuuid</code>, and it was thus resulting in <a href="https
 ://issues.apache.org/jira/browse/CASSANDRA-4936">confusing behaviors</a>.  
However, the following new methods have been added to help working with 
<code>timeuuid</code>: <code>now</code>, <code>minTimeuuid</code>, 
<code>maxTimeuuid</code> , <code>dateOf</code> and 
<code>unixTimestampOf</code>. See the <a href="#usingtimeuuid">section 
dedicated to these methods</a> for more detail.</li><li>&#8220;Float 
constants&#8221;#constants now support the exponent notation. In other words, 
<code>4.2E10</code> is now a valid floating point value.</li></ul><h2 
id="Versioning">Versioning</h2><p>Versioning of the CQL language adheres to the 
<a href="http://semver.org";>Semantic Versioning</a> guidelines. Versions take 
the form X.Y.Z where X, Y, and Z are integer values representing major, minor, 
and patch level respectively. There is no correlation between Cassandra release 
versions and the CQL language 
version.</p><table><tr><th>version</th><th>description</th></tr><tr><td>Major   
  </td><td>The ma
 jor version <em>must</em> be bumped when backward incompatible changes are 
introduced. This should rarely occur.</td></tr><tr><td>Minor     </td><td>Minor 
version increments occur when new, but backward compatible, functionality is 
introduced.</td></tr><tr><td>Patch     </td><td>The patch version is 
incremented when bugs are fixed.</td></tr></table></body></html>
\ No newline at end of file

Modified: cassandra/site/publish/download/index.html
URL: 
http://svn.apache.org/viewvc/cassandra/site/publish/download/index.html?rev=1525592&r1=1525591&r2=1525592&view=diff
==============================================================================
--- cassandra/site/publish/download/index.html (original)
+++ cassandra/site/publish/download/index.html Mon Sep 23 13:52:02 2013
@@ -49,8 +49,8 @@
   Cassandra releases include the core server, the <a 
href="http://wiki.apache.org/cassandra/NodeTool";>nodetool</a> administration 
command-line interface, and a development shell (<a 
href="http://cassandra.apache.org/doc/cql/CQL.html";><tt>cqlsh</tt></a> and the 
old <tt>cassandra-cli</tt>).
 
   <p>
-  The latest stable release of Apache Cassandra is 2.0.0
-  (released on 2013-09-03).  <i>If you're just
+  The latest stable release of Apache Cassandra is 2.0.1
+  (released on 2013-09-23).  <i>If you're just
   starting out, download this one.</i>
   </p>
 
@@ -59,13 +59,13 @@
   <ul>
     <li>
     <a class="filename" 
-       
href="http://www.apache.org/dyn/closer.cgi?path=/cassandra/2.0.0/apache-cassandra-2.0.0-bin.tar.gz";
+       
href="http://www.apache.org/dyn/closer.cgi?path=/cassandra/2.0.1/apache-cassandra-2.0.1-bin.tar.gz";
        onclick="javascript: 
pageTracker._trackPageview('/clicks/binary_download');">
-      apache-cassandra-2.0.0-bin.tar.gz
+      apache-cassandra-2.0.1-bin.tar.gz
     </a>
-    [<a 
href="http://www.apache.org/dist/cassandra/2.0.0/apache-cassandra-2.0.0-bin.tar.gz.asc";>PGP</a>]
-    [<a 
href="http://www.apache.org/dist/cassandra/2.0.0/apache-cassandra-2.0.0-bin.tar.gz.md5";>MD5</a>]
-    [<a 
href="http://www.apache.org/dist/cassandra/2.0.0/apache-cassandra-2.0.0-bin.tar.gz.sha1";>SHA1</a>]
+    [<a 
href="http://www.apache.org/dist/cassandra/2.0.1/apache-cassandra-2.0.1-bin.tar.gz.asc";>PGP</a>]
+    [<a 
href="http://www.apache.org/dist/cassandra/2.0.1/apache-cassandra-2.0.1-bin.tar.gz.md5";>MD5</a>]
+    [<a 
href="http://www.apache.org/dist/cassandra/2.0.1/apache-cassandra-2.0.1-bin.tar.gz.sha1";>SHA1</a>]
     </li>
     <li>
     <a href="http://wiki.apache.org/cassandra/DebianPackaging";>Debian 
installation instructions</a>
@@ -144,13 +144,13 @@
   <ul>
     <li>
     <a class="filename" 
-       
href="http://www.apache.org/dyn/closer.cgi?path=/cassandra/2.0.0/apache-cassandra-2.0.0-src.tar.gz";
+       
href="http://www.apache.org/dyn/closer.cgi?path=/cassandra/2.0.1/apache-cassandra-2.0.1-src.tar.gz";
        onclick="javascript: 
pageTracker._trackPageview('/clicks/source_download');">
-      apache-cassandra-2.0.0-src.tar.gz
+      apache-cassandra-2.0.1-src.tar.gz
     </a>
-    [<a 
href="http://www.apache.org/dist/cassandra/2.0.0/apache-cassandra-2.0.0-src.tar.gz.asc";>PGP</a>]
-    [<a 
href="http://www.apache.org/dist/cassandra/2.0.0/apache-cassandra-2.0.0-src.tar.gz.md5";>MD5</a>]
-    [<a 
href="http://www.apache.org/dist/cassandra/2.0.0/apache-cassandra-2.0.0-src.tar.gz.sha1";>SHA1</a>]
+    [<a 
href="http://www.apache.org/dist/cassandra/2.0.1/apache-cassandra-2.0.1-src.tar.gz.asc";>PGP</a>]
+    [<a 
href="http://www.apache.org/dist/cassandra/2.0.1/apache-cassandra-2.0.1-src.tar.gz.md5";>MD5</a>]
+    [<a 
href="http://www.apache.org/dist/cassandra/2.0.1/apache-cassandra-2.0.1-src.tar.gz.sha1";>SHA1</a>]
     </li>
   
     <li>

Modified: cassandra/site/publish/index.html
URL: 
http://svn.apache.org/viewvc/cassandra/site/publish/index.html?rev=1525592&r1=1525591&r2=1525592&view=diff
==============================================================================
--- cassandra/site/publish/index.html (original)
+++ cassandra/site/publish/index.html Mon Sep 23 13:52:02 2013
@@ -76,8 +76,8 @@
   <h2>Download</h2>
   <div class="inner rc">
     <p>
-    The latest release is <b>2.0.0</b>
-    <span class="relnotes">(<a 
href="http://git-wip-us.apache.org/repos/asf?p=cassandra.git;a=blob_plain;f=CHANGES.txt;hb=refs/tags/cassandra-2.0.0";>Changes</a>)</span>
+    The latest release is <b>2.0.1</b>
+    <span class="relnotes">(<a 
href="http://git-wip-us.apache.org/repos/asf?p=cassandra.git;a=blob_plain;f=CHANGES.txt;hb=refs/tags/cassandra-2.0.1";>Changes</a>)</span>
     </p>
 
     <p><a class="filename" href="/download/">Download options</a></p>

Modified: cassandra/site/src/settings.py
URL: 
http://svn.apache.org/viewvc/cassandra/site/src/settings.py?rev=1525592&r1=1525591&r2=1525592&view=diff
==============================================================================
--- cassandra/site/src/settings.py (original)
+++ cassandra/site/src/settings.py Mon Sep 23 13:52:02 2013
@@ -98,8 +98,8 @@ class CassandraDef(object):
     veryoldstable_version = '1.1.12'
     veryoldstable_release_date = '2013-05-27'
     veryoldstable_exists = True
-    stable_version = '2.0.0'
-    stable_release_date = '2013-09-03'
+    stable_version = '2.0.1'
+    stable_release_date = '2013-09-23'
     devel_version = '2.0.0-rc2'
     devel_release_date = '2013-08-20'
     devel_exists = False


Reply via email to