Author: slebresne
Date: Wed Jun 26 14:51:33 2013
New Revision: 1496950
URL: http://svn.apache.org/r1496950
Log:
Update website for 1.2.6 release
Modified:
cassandra/site/publish/doc/cql3/CQL.html
cassandra/site/publish/download/index.html
cassandra/site/publish/index.html
cassandra/site/src/settings.py
Modified: cassandra/site/publish/doc/cql3/CQL.html
URL:
http://svn.apache.org/viewvc/cassandra/site/publish/doc/cql3/CQL.html?rev=1496950&r1=1496949&r2=1496950&view=diff
==============================================================================
--- cassandra/site/publish/doc/cql3/CQL.html (original)
+++ cassandra/site/publish/doc/cql3/CQL.html Wed Jun 26 14:51:33 2013
@@ -1,4 +1,4 @@
-<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD
XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html
xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type"
content="text/html; charset=utf-8"/><title>CQL</title></head><body><p><link
rel="StyleSheet" href="CQL.css" type="text/css" media="screen"></p><h1
id="CassandraQueryLanguageCQLv3.0.3">Cassandra Query Language (CQL)
v3.0.3</h1><span id="tableOfContents"><ol style="list-style: none;"><li><a
href="CQL.html#CassandraQueryLanguageCQLv3.0.3">Cassandra Query Language (CQL)
v3.0.3</a><ol style="list-style: none;"><li><a href="CQL.html#CQLSyntax">CQL
Syntax</a><ol style="list-style: none;"><li><a
href="CQL.html#Preamble">Preamble</a></li><li><a
href="CQL.html#Conventions">Conventions</a></li><li><a
href="CQL.html#identifiers">Identifiers and keywords</a></li><li><a
href="CQL.html#constants">Constants</a></li><li><a
href="CQL.html#Comments">Comment
s</a></li><li><a href="CQL.html#statements">Statements</a></li><li><a
href="CQL.html#preparedStatement">Prepared Statement</a></li></ol></li><li><a
href="CQL.html#dataDefinition">Data Definition</a><ol style="list-style:
none;"><li><a href="CQL.html#createKeyspaceStmt">CREATE KEYSPACE</a></li><li><a
href="CQL.html#useStmt">USE</a></li><li><a
href="CQL.html#alterKeyspaceStmt">ALTER KEYSPACE</a></li><li><a
href="CQL.html#dropKeyspaceStmt">DROP KEYSPACE</a></li><li><a
href="CQL.html#createTableStmt">CREATE TABLE</a></li><li><a
href="CQL.html#alterTableStmt">ALTER TABLE</a></li><li><a
href="CQL.html#dropTableStmt">DROP TABLE</a></li><li><a
href="CQL.html#truncateStmt">TRUNCATE</a></li><li><a
href="CQL.html#createIndexStmt">CREATE INDEX</a></li><li><a
href="CQL.html#dropIndexStmt">DROP INDEX</a></li></ol></li><li><a
href="CQL.html#dataManipulation">Data Manipulation</a><ol style="list-style:
none;"><li><a href="CQL.html#insertStmt">INSERT</a></li><li><a
href="CQL.html#updateStmt"
>UPDATE</a></li><li><a href="CQL.html#deleteStmt">DELETE</a></li><li><a
>href="CQL.html#batchStmt">BATCH</a></li></ol></li><li><a
>href="CQL.html#queries">Queries</a><ol style="list-style: none;"><li><a
>href="CQL.html#selectStmt">SELECT</a></li></ol></li><li><a
>href="CQL.html#types">Data Types</a><ol style="list-style: none;"><li><a
>href="CQL.html#usingdates">Working with dates</a></li><li><a
>href="CQL.html#counters">Counters</a></li><li><a
>href="CQL.html#collections">Working with collections</a></li></ol></li><li><a
>href="CQL.html#functions">Functions</a><ol style="list-style: none;"><li><a
>href="CQL.html#tokenFun">Token</a></li><li><a
>href="CQL.html#timeuuidFun">Timeuuid functions</a></li><li><a
>href="CQL.html#blobFun">Blob conversion functions</a></li></ol></li><li><a
>href="CQL.html#appendixA">Appendix A: CQL Keywords</a></li><li><a
>href="CQL.html#changes">Changes</a><ol style="list-style: none;"><li><a
>href="CQL.html#a3.0.3">3.0.3</a></li><li><a href="CQL.html#a3.0.2">3.0.
2</a></li><li><a href="CQL.html#a3.0.1">3.0.1</a></li></ol></li><li><a
href="CQL.html#Versioning">Versioning</a></li></ol></li></ol></span><h2
id="CQLSyntax">CQL Syntax</h2><h3 id="Preamble">Preamble</h3><p>This document
describes the Cassandra Query Language (CQL) version 3. CQL v3 is not backward
compatible with CQL v2 and differs from it in numerous ways. Note that this
document describes the last version of the languages. However, the <a
href="#changes">changes</a> section provides the diff between the different
versions of CQL v3.</p><p>CQL v3 offers a model very close to SQL in the sense
that data is put in <em>tables</em> containing <em>rows</em> of
<em>columns</em>. For that reason, when used in this document, these terms
(tables, rows and columns) have the same definition than they have in SQL. But
please note that as such, they do <strong>not</strong> refer to the concept of
rows and columns found in the internal implementation of Cassandra and in the
thrift and CQ
L v2 API.</p><h3 id="Conventions">Conventions</h3><p>To aid in specifying the
CQL syntax, we will use the following conventions in this
document:</p><ul><li>Language rules will be given in a <a
href="http://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Form">BNF</a> -like
notation:</li></ul><pre class="syntax"><pre><start> ::= TERMINAL
<non-terminal1> <non-terminal1>
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD
XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html
xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type"
content="text/html; charset=utf-8"/><title>CQL</title></head><body><p><link
rel="StyleSheet" href="CQL.css" type="text/css" media="screen"></p><h1
id="CassandraQueryLanguageCQLv3.0.4">Cassandra Query Language (CQL)
v3.0.4</h1><span id="tableOfContents"><ol style="list-style: none;"><li><a
href="CQL.html#CassandraQueryLanguageCQLv3.0.4">Cassandra Query Language (CQL)
v3.0.4</a><ol style="list-style: none;"><li><a href="CQL.html#CQLSyntax">CQL
Syntax</a><ol style="list-style: none;"><li><a
href="CQL.html#Preamble">Preamble</a></li><li><a
href="CQL.html#Conventions">Conventions</a></li><li><a
href="CQL.html#identifiers">Identifiers and keywords</a></li><li><a
href="CQL.html#constants">Constants</a></li><li><a
href="CQL.html#Comments">Comment
s</a></li><li><a href="CQL.html#statements">Statements</a></li><li><a
href="CQL.html#preparedStatement">Prepared Statement</a></li></ol></li><li><a
href="CQL.html#dataDefinition">Data Definition</a><ol style="list-style:
none;"><li><a href="CQL.html#createKeyspaceStmt">CREATE KEYSPACE</a></li><li><a
href="CQL.html#useStmt">USE</a></li><li><a
href="CQL.html#alterKeyspaceStmt">ALTER KEYSPACE</a></li><li><a
href="CQL.html#dropKeyspaceStmt">DROP KEYSPACE</a></li><li><a
href="CQL.html#createTableStmt">CREATE TABLE</a></li><li><a
href="CQL.html#alterTableStmt">ALTER TABLE</a></li><li><a
href="CQL.html#dropTableStmt">DROP TABLE</a></li><li><a
href="CQL.html#truncateStmt">TRUNCATE</a></li><li><a
href="CQL.html#createIndexStmt">CREATE INDEX</a></li><li><a
href="CQL.html#dropIndexStmt">DROP INDEX</a></li></ol></li><li><a
href="CQL.html#dataManipulation">Data Manipulation</a><ol style="list-style:
none;"><li><a href="CQL.html#insertStmt">INSERT</a></li><li><a
href="CQL.html#updateStmt"
>UPDATE</a></li><li><a href="CQL.html#deleteStmt">DELETE</a></li><li><a
>href="CQL.html#batchStmt">BATCH</a></li></ol></li><li><a
>href="CQL.html#queries">Queries</a><ol style="list-style: none;"><li><a
>href="CQL.html#selectStmt">SELECT</a></li></ol></li><li><a
>href="CQL.html#types">Data Types</a><ol style="list-style: none;"><li><a
>href="CQL.html#usingdates">Working with dates</a></li><li><a
>href="CQL.html#counters">Counters</a></li><li><a
>href="CQL.html#collections">Working with collections</a></li></ol></li><li><a
>href="CQL.html#functions">Functions</a><ol style="list-style: none;"><li><a
>href="CQL.html#tokenFun">Token</a></li><li><a
>href="CQL.html#timeuuidFun">Timeuuid functions</a></li><li><a
>href="CQL.html#blobFun">Blob conversion functions</a></li></ol></li><li><a
>href="CQL.html#appendixA">Appendix A: CQL Keywords</a></li><li><a
>href="CQL.html#changes">Changes</a><ol style="list-style: none;"><li><a
>href="CQL.html#a3.0.4">3.0.4</a></li><li><a href="CQL.html#a3.0.3">3.0.
3</a></li><li><a href="CQL.html#a3.0.2">3.0.2</a></li><li><a
href="CQL.html#a3.0.1">3.0.1</a></li></ol></li><li><a
href="CQL.html#Versioning">Versioning</a></li></ol></li></ol></span><h2
id="CQLSyntax">CQL Syntax</h2><h3 id="Preamble">Preamble</h3><p>This document
describes the Cassandra Query Language (CQL) version 3. CQL v3 is not backward
compatible with CQL v2 and differs from it in numerous ways. Note that this
document describes the last version of the languages. However, the <a
href="#changes">changes</a> section provides the diff between the different
versions of CQL v3.</p><p>CQL v3 offers a model very close to SQL in the sense
that data is put in <em>tables</em> containing <em>rows</em> of
<em>columns</em>. For that reason, when used in this document, these terms
(tables, rows and columns) have the same definition than they have in SQL. But
please note that as such, they do <strong>not</strong> refer to the concept of
rows and columns found in the internal implemen
tation of Cassandra and in the thrift and CQL v2 API.</p><h3
id="Conventions">Conventions</h3><p>To aid in specifying the CQL syntax, we
will use the following conventions in this document:</p><ul><li>Language rules
will be given in a <a
href="http://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Form">BNF</a> -like
notation:</li></ul><pre class="syntax"><pre><start> ::= TERMINAL
<non-terminal1> <non-terminal1>
</pre></pre><ul><li>Nonterminal symbols will have <code><angle
brackets></code>.</li><li>As additional shortcut notations to BNF, we’ll
use traditional regular expression’s symbols (<code>?</code>,
<code>+</code> and <code>*</code>) to signify that a given symbol is optional
and/or can be repeated. We’ll also allow parentheses to group symbols and
the <code>[<characters>]</code> notation to represent any one of
<code><characters></code>.</li><li>The grammar is provided for documentation
purposes and leave some minor details out. For instance, the last column
definition in a <code>CREATE TABLE</code> statement is optional but supported
if present even though the provided grammar in this document suggest it is not
supported. </li><li>Sample code will be provided in a code block:</li></ul><pre
class="sample"><pre>SELECT sample_usage FROM cql;
</pre></pre><ul><li>References to keywords or pieces of CQL code in running
text will be shown in a <code>fixed-width font</code>.</li></ul><h3
id="identifiers">Identifiers and keywords</h3><p>The CQL language uses
<em>identifiers</em> (or <em>names</em>) to identify tables, columns and other
objects. An identifier is a token matching the regular expression <code
lang="a-zA-Z">[a-zA-Z0-9_]</code><code>*</code>.</p><p>A number of such
identifiers, like <code>SELECT</code> or <code>WITH</code>, are
<em>keywords</em>. They have a fixed meaning for the language and most are
reserved. The list of those keywords can be found in <a
href="#appendixA">Appendix A</a>.</p><p>Identifiers and (unquoted) keywords are
case insensitive. Thus <code>SELECT</code> is the same than <code>select</code>
or <code>sElEcT</code>, and <code>myId</code> is the same than
<code>myid</code> or <code>MYID</code> for instance. A convention often used
(in particular by the samples of this documentation) is
to use upper case for keywords and lower case for other
identifiers.</p><p>There is a second kind of identifiers called <em>quoted
identifiers</em> defined by enclosing an arbitrary sequence of characters in
double-quotes(<code>"</code>). Quoted identifiers are never keywords. Thus
<code>"select"</code> is not a reserved keyword and can be used to refer to a
column, while <code>select</code> would raise a parse error. Also, contrarily
to unquoted identifiers and keywords, quoted identifiers are case sensitive
(<code>"My Quoted Id"</code> is <em>different</em> from <code>"my quoted
id"</code>). A fully lowercase quoted identifier that matches <code
lang="a-zA-Z">[a-zA-Z0-9_]</code><code>*</code> is equivalent to the unquoted
identifier obtained by removing the double-quote (so <code>"myid"</code> is
equivalent to <code>myid</code> and to <code>myId</code> but different from
<code>"myId"</code>). Inside a quoted identifier, the double-quote character
can be repeated to escape
it, so <code>"foo "" bar"</code> is a valid identifier.</p><h3
id="constants">Constants</h3><p>CQL defines the following kind of
<em>constants</em>: strings, integers, floats, booleans, uuids and
blobs:</p><ul><li>A string constant is an arbitrary sequence of characters
characters enclosed by single-quote(<code>'</code>). One can include a
single-quote in a string by repeating it, e.g. <code>'It''s raining
today'</code>. Those are not to be confused with quoted identifiers that use
double-quotes.</li><li>An integer constant is defined by
<code>'-'?[0-9]+</code>.</li><li>A float constant is defined by
<code>'-'?[0-9]+('.'[0-9]*)?([eE][+-]?[0-9+])?</code>.</li><li>A boolean
constant is either <code>true</code> or <code>false</code> up to
case-insensitivity (i.e. <code>True</code> is a valid boolean
constant).</li><li>A <a
href="http://en.wikipedia.org/wiki/Universally_unique_identifier">UUID</a>
constant is defined by <code>hex{8}-hex{4}-hex{4}-hex{4}-hex{12}</code> where
<cod
e>hex</code> is an hexadecimal character, e.g. <code>[0-9a-fA-F]</code> and
<code>{4}</code> is the number of such characters.</li><li>A blob constant is
an hexadecimal number defined by <code>0[xX](hex)+</code> where
<code>hex</code> is an hexadecimal character, e.g.
<code>[0-9a-fA-F]</code>.</li></ul><p>For how these constants are typed, see
the <a href="#types">data types section</a>.</p><h3
id="Comments">Comments</h3><p>A comment in CQL is a line beginning by either
double dashes (<code>--</code>) or double slash (<code>//</code>).</p><pre
class="sample"><pre>-- This is a comment
// This is a comment too
@@ -110,10 +110,10 @@ WITH comment = 'A most excellent and use
</pre></pre><p>The <code>DROP TABLE</code> statement results in the immediate,
irreversible removal of a table, including all data contained in it. As for
table creation, <code>DROP COLUMNFAMILY</code> is allowed as an alias for
<code>DROP TABLE</code>.</p><h3
id="truncateStmt">TRUNCATE</h3><p><i>Syntax:</i></p><pre
class="syntax"><pre><truncate-stmt> ::= TRUNCATE <tablename>
</pre></pre><p><i>Sample:</i></p><pre class="sample"><pre>TRUNCATE
superImportantData;
</pre></pre><p>The <code>TRUNCATE</code> statement permanently removes all
data from a table.</p><h3 id="createIndexStmt">CREATE
INDEX</h3><p><i>Syntax:</i></p><pre class="syntax"><pre><create-index-stmt>
::= CREATE ( CUSTOM )? INDEX <identifier>? ON <tablename> '('
<identifier> ')'
- ( WITH <properties> )?
+ ( USING <string> )?
</pre></pre><p><i>Sample:</i></p><pre class="sample"><pre>CREATE INDEX
userIndex ON NerdMovies (user);
CREATE INDEX ON Mutants (abilityId);
-CREATE CUSTOM INDEX ON users (email) WITH options = {'class':
'path.to.the.IndexClass'};
+CREATE CUSTOM INDEX ON users (email) USING 'path.to.the.IndexClass';
</pre></pre><p>The <code>CREATE INDEX</code> statement is used to create a new
(automatic) secondary index for a given (existing) column in a given table. A
name for the index itself can be specified before the <code>ON</code> keyword,
if desired. If data already exists for the column, it will be indexed during
the execution of this statement. After the index is created, new data for the
column is indexed automatically at insertion time.</p><h3
id="dropIndexStmt">DROP INDEX</h3><p><i>Syntax:</i></p><pre
class="syntax"><pre><drop-index-stmt> ::= DROP INDEX <identifier>
</pre></pre><p><i>Sample:</i></p><pre class="sample"><pre>DROP INDEX userIndex;
</pre></pre><p>The <code>DROP INDEX</code> statement is used to drop an
existing secondary index. The argument of the statement is the index
name.</p><h2 id="dataManipulation">Data Manipulation</h2><h3
id="insertStmt">INSERT</h3><p><i>Syntax:</i></p><pre
class="syntax"><pre><insertStatement> ::= INSERT INTO <tablename>
@@ -214,7 +214,7 @@ WHERE event_type = 'myEvent'
AND time <= 2012-01-01
SELECT COUNT(*) FROM users;
-</pre></pre><p><br/>The <code>SELECT</code> statements reads one or more
columns for one or more rows in a table. It returns a result-set of rows, where
each row contains the collection of columns corresponding to the query.</p><h4
id="selectSelection"><code><select-clause></code></h4><p>The
<code><select-clause></code> determines which columns needs to be queried
and returned in the result-set. It consists of either the comma-separated list
of <selector> or the wildcard character (<code>*</code>) to select all the
columns defined for the table.</p><p>A <code><selector></code> is either a
column name to retrieve, or a <code><function></code> of one or multiple
column names. The functions allows are the same that for <code><term></code>
and are describe in the <a href="#function">function section</a>. In addition
to these generic functions, the <code>WRITETIME</code> (resp. <code>TTL</code>)
function allows to select the timestamp of when the column was inserte
d (resp. the time to live (in seconds) for the column (or null if the column
has no expiration set)).</p><p>The <code>COUNT</code> keyword can be used with
parenthesis enclosing <code>*</code>. If so, the query will return a single
result: the number of rows matching the query. Note that <code>COUNT(1)</code>
is supported as an alias.</p><h4
id="selectWhere"><code><where-clause></code></h4><p>The
<code><where-clause></code> specifies which rows must be queried. It is
composed of relations on the columns that are part of the <code>PRIMARY
KEY</code> and/or have a <a href="#createIndexStmt">secondary index</a> defined
on them.</p><p>Not all relations are allowed in a query. For instance,
non-equal relations (where <code>IN</code> is considered as an equal relation)
on a partition key is only supported if the partitioner for the keyspace is an
ordered one. Moreover, for a given partition key, the clustering keys induce an
ordering of rows and relations on them is restrict
ed to the relations that allow to select a <strong>contiguous</strong> (for
the ordering) set of rows. For instance, given</p><pre
class="sample"><pre>CREATE TABLE posts (
+</pre></pre><p><br/>The <code>SELECT</code> statements reads one or more
columns for one or more rows in a table. It returns a result-set of rows, where
each row contains the collection of columns corresponding to the query.</p><h4
id="selectSelection"><code><select-clause></code></h4><p>The
<code><select-clause></code> determines which columns needs to be queried
and returned in the result-set. It consists of either the comma-separated list
of <selector> or the wildcard character (<code>*</code>) to select all the
columns defined for the table.</p><p>A <code><selector></code> is either a
column name to retrieve, or a <code><function></code> of one or multiple
column names. The functions allows are the same that for <code><term></code>
and are describe in the <a href="#function">function section</a>. In addition
to these generic functions, the <code>WRITETIME</code> (resp. <code>TTL</code>)
function allows to select the timestamp of when the column was inserte
d (resp. the time to live (in seconds) for the column (or null if the column
has no expiration set)).</p><p>The <code>COUNT</code> keyword can be used with
parenthesis enclosing <code>*</code>. If so, the query will return a single
result: the number of rows matching the query. Note that <code>COUNT(1)</code>
is supported as an alias.</p><h4
id="selectWhere"><code><where-clause></code></h4><p>The
<code><where-clause></code> specifies which rows must be queried. It is
composed of relations on the columns that are part of the <code>PRIMARY
KEY</code> and/or have a <a href="#createIndexStmt">secondary index</a> defined
on them.</p><p>Not all relations are allowed in a query. For instance,
non-equal relations (where <code>IN</code> is considered as an equal relation)
on a partition key are not supported (but see the use of the <code>TOKEN</code>
method below to do non-equal queries on the partition key). Moreover, for a
given partition key, the clustering keys induce an or
dering of rows and relations on them is restricted to the relations that allow
to select a <strong>contiguous</strong> (for the ordering) set of rows. For
instance, given</p><pre class="sample"><pre>CREATE TABLE posts (
userid text,
blog_title text,
posted_at timestamp,
@@ -226,7 +226,7 @@ SELECT COUNT(*) FROM users;
</pre></pre><p>The following query is allowed:</p><pre
class="sample"><pre>SELECT entry_title, content FROM posts WHERE userid='john
doe' AND blog_title='John's Blog' AND posted_at >= 2012-01-01 AND posted_at
< 2012-01-31
</pre></pre><p>But the following one is not, as it does not select a
contiguous set of rows (and we suppose no secondary indexes are set):</p><pre
class="sample"><pre>// Needs a blog_title to be set to select ranges of
posted_at
SELECT entry_title, content FROM posts WHERE userid='john doe' AND posted_at
>= 2012-01-01 AND posted_at < 2012-01-31
-</pre></pre><p>When specifying relations, the <code>TOKEN</code> function can
be used on the <code>PARTITION KEY</code> column to query. In that case, rows
will be selected based on the token of their <code>PARTITION_KEY</code> rather
than on the value (note that the token of a key depends on the partitioner in
use, and that in particular the RandomPartitioner won’t yeld a meaningful
order). Example:</p><pre class="sample"><pre>SELECT * FROM posts WHERE
token(userid) > token('tom') AND token(userid) < token('bob')
+</pre></pre><p>When specifying relations, the <code>TOKEN</code> function can
be used on the <code>PARTITION KEY</code> column to query. In that case, rows
will be selected based on the token of their <code>PARTITION_KEY</code> rather
than on the value. Note that the token of a key depends on the partitioner in
use, and that in particular the RandomPartitioner won’t yeld a meaningful
order. Also note that ordering partitioners always order token values by bytes
(so even if the partition key is of type int, <code>token(-1) > token(0)</code>
in particular). Example:</p><pre class="sample"><pre>SELECT * FROM posts WHERE
token(userid) > token('tom') AND token(userid) < token('bob')
</pre></pre><h4 id="selectOrderBy"><code><order-by></code></h4><p>The
<code>ORDER BY</code> option allows to select the order of the returned
results. It takes as argument a list of column names along with the order for
the column (<code>ASC</code> for ascendant and <code>DESC</code> for
descendant, omitting the order being equivalent to <code>ASC</code>). Currently
the possible orderings are limited (which depends on the table <a
href="#createTableOptions"><code>CLUSTERING ORDER</code></a>):</p><ul><li>if
the table has been defined without any specific <code>CLUSTERING ORDER</code>,
then then allowed orderings are the order induced by the clustering key and the
reverse of that one.</li><li>otherwise, the orderings allowed are the order of
the <code>CLUSTERING ORDER</code> option and the reversed one.</li></ul><h4
id="selectLimit"><code>LIMIT</code></h4><p>The <code>LIMIT</code> option to a
<code>SELECT</code> statement limits the number of rows returned by a
query.</p><h
4 id="selectAllowFiltering"><code>ALLOW FILTERING</code></h4><p>By default,
CQL only allows select queries that don’t involve “filtering”
server side, i.e. queries where we know that all (live) record read will be
returned (maybe partly) in the result set. The reasoning is that those
“non filtering” queries have predictable performance in the sense
that they will execute in a time that is proportional to the amount of data
<strong>returned</strong> by the query (which can be controlled through
<code>LIMIT</code>).</p><p>The <code>ALLOW FILTERING</code> option allows to
explicitely allow (some) queries that require filtering. Please note that a
query using <code>ALLOW FILTERING</code> may thus have unpredictable
performance (for the definition above), i.e. even a query that selects a
handful of records <strong>may</strong> exhibit performance that depends on the
total amount of data stored in the cluster.</p><p>For instance, considering the
follo
wing table holding user profiles with their year of birth (with a secondary
index on it) and country of residence:</p><pre class="sample"><pre>CREATE TABLE
users (
username text PRIMARY KEY,
firstname text,
@@ -309,4 +309,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 < 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 ‘2013-01-01 00:05+0000’ but
stricly younger than ‘2013-02-02 10:00+0000’. 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 ‘2013-01-01
00:05+0000’ 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 ide
a</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 “convert” the native types into binary data
(<code>blob</code>). For every <code><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>blo
b</code> argument 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>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>CONSISTENCY</code> </td><td>n
o </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>QUORUM</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></table><h2
id="changes">Changes</h2><p>The following describes the addition/changes
brought for each version of CQL.</p><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 fi
xed. 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><l
i>“Float constants”#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 incremented 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 ‘2013-01-01 00:05+0000’ but
stricly younger than ‘2013-02-02 10:00+0000’. 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 ‘2013-01-01
00:05+0000’ 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 ide
a</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 “convert” the native types into binary data
(<code>blob</code>). For every <code><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>blo
b</code> argument 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>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>CONSISTENCY</code> </td><td>n
o </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>QUORUM</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></table><h2
id="changes">Changes</h2><p>The following describes the addition/changes
brought for each version of CQL.</p><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 n
ot 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
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>“Float
constants”#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 v
ersion.</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 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=1496950&r1=1496949&r2=1496950&view=diff
==============================================================================
--- cassandra/site/publish/download/index.html (original)
+++ cassandra/site/publish/download/index.html Wed Jun 26 14:51:33 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 1.2.5
- (released on 2013-05-19). <i>If you're just
+ The latest stable release of Apache Cassandra is 1.2.6
+ (released on 2013-06-26). <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/1.2.5/apache-cassandra-1.2.5-bin.tar.gz"
+
href="http://www.apache.org/dyn/closer.cgi?path=/cassandra/1.2.6/apache-cassandra-1.2.6-bin.tar.gz"
onclick="javascript:
pageTracker._trackPageview('/clicks/binary_download');">
- apache-cassandra-1.2.5-bin.tar.gz
+ apache-cassandra-1.2.6-bin.tar.gz
</a>
- [<a
href="http://www.apache.org/dist/cassandra/1.2.5/apache-cassandra-1.2.5-bin.tar.gz.asc">PGP</a>]
- [<a
href="http://www.apache.org/dist/cassandra/1.2.5/apache-cassandra-1.2.5-bin.tar.gz.md5">MD5</a>]
- [<a
href="http://www.apache.org/dist/cassandra/1.2.5/apache-cassandra-1.2.5-bin.tar.gz.sha1">SHA1</a>]
+ [<a
href="http://www.apache.org/dist/cassandra/1.2.6/apache-cassandra-1.2.6-bin.tar.gz.asc">PGP</a>]
+ [<a
href="http://www.apache.org/dist/cassandra/1.2.6/apache-cassandra-1.2.6-bin.tar.gz.md5">MD5</a>]
+ [<a
href="http://www.apache.org/dist/cassandra/1.2.6/apache-cassandra-1.2.6-bin.tar.gz.sha1">SHA1</a>]
</li>
<li>
<a href="http://wiki.apache.org/cassandra/DebianPackaging">Debian
installation instructions</a>
@@ -153,13 +153,13 @@
<ul>
<li>
<a class="filename"
-
href="http://www.apache.org/dyn/closer.cgi?path=/cassandra/1.2.5/apache-cassandra-1.2.5-src.tar.gz"
+
href="http://www.apache.org/dyn/closer.cgi?path=/cassandra/1.2.6/apache-cassandra-1.2.6-src.tar.gz"
onclick="javascript:
pageTracker._trackPageview('/clicks/source_download');">
- apache-cassandra-1.2.5-src.tar.gz
+ apache-cassandra-1.2.6-src.tar.gz
</a>
- [<a
href="http://www.apache.org/dist/cassandra/1.2.5/apache-cassandra-1.2.5-src.tar.gz.asc">PGP</a>]
- [<a
href="http://www.apache.org/dist/cassandra/1.2.5/apache-cassandra-1.2.5-src.tar.gz.md5">MD5</a>]
- [<a
href="http://www.apache.org/dist/cassandra/1.2.5/apache-cassandra-1.2.5-src.tar.gz.sha1">SHA1</a>]
+ [<a
href="http://www.apache.org/dist/cassandra/1.2.6/apache-cassandra-1.2.6-src.tar.gz.asc">PGP</a>]
+ [<a
href="http://www.apache.org/dist/cassandra/1.2.6/apache-cassandra-1.2.6-src.tar.gz.md5">MD5</a>]
+ [<a
href="http://www.apache.org/dist/cassandra/1.2.6/apache-cassandra-1.2.6-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=1496950&r1=1496949&r2=1496950&view=diff
==============================================================================
--- cassandra/site/publish/index.html (original)
+++ cassandra/site/publish/index.html Wed Jun 26 14:51:33 2013
@@ -76,8 +76,8 @@
<h2>Download</h2>
<div class="inner rc">
<p>
- The latest release is <b>1.2.5</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-1.2.5">Changes</a>)</span>
+ The latest release is <b>1.2.6</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-1.2.6">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=1496950&r1=1496949&r2=1496950&view=diff
==============================================================================
--- cassandra/site/src/settings.py (original)
+++ cassandra/site/src/settings.py Wed Jun 26 14:51:33 2013
@@ -98,8 +98,8 @@ class CassandraDef(object):
veryoldstable_version = '1.0.12'
veryoldstable_release_date = '2012-10-04'
veryoldstable_exists = True
- stable_version = '1.2.5'
- stable_release_date = '2013-05-19'
+ stable_version = '1.2.6'
+ stable_release_date = '2013-06-26'
devel_version = '1.2.0-rc2'
devel_release_date = '2012-12-21'
devel_exists = False