blob: 6369460ebabceddee28c9e3e52b0a3608db5e62f [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="The Apache Cassandra database is the right choice when you need scalability and high availability without compromising performance. Linear scalability and proven fault-tolerance on commodity hardware or cloud infrastructure make it the perfect platform for mission-critical data. Cassandra's support for replicating across multiple datacenters is best-in-class, providing lower latency for your users and the peace of mind of knowing that you can survive regional outages.
">
<meta name="keywords" content="cassandra, apache, apache cassandra, distributed storage, key value store, scalability, bigtable, dynamo" />
<meta name="robots" content="index,follow" />
<meta name="language" content="en" />
<title>Documentation</title>
<link rel="canonical" href="http://cassandra.apache.org/doc/4.0-alpha1/cql/changes.html">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
<link rel="stylesheet" href="./../../../css/style.css">
<link rel="stylesheet" href="./../../../css/sphinx.css">
<link rel="top" title="Apache Cassandra Documentation v4.0-alpha1" href="../index.html"/> <link rel="up" title="The Cassandra Query Language (CQL)" href="index.html"/> <link rel="next" title="Configuring Cassandra" href="../configuration/index.html"/> <link rel="prev" title="Appendices" href="appendices.html"/>
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.2.0/css/all.css" integrity="sha384-hWVjflwFxL6sNzntih27bfxkr27PmbbK/iSvJ+a4+0owXq79v+lsFkW54bOGbiDQ" crossorigin="anonymous">
<link type="application/atom+xml" rel="alternate" href="http://cassandra.apache.org/feed.xml" title="Apache Cassandra Website" />
</head>
<body>
<!-- breadcrumbs -->
<div class="topnav">
<div class="container breadcrumb-container">
<ul class="breadcrumb">
<li>
<div class="dropdown">
<img class="asf-logo" src="./../../../img/asf_feather.png" />
<a data-toggle="dropdown" href="#">Apache Software Foundation <span class="caret"></span></a>
<ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
<li><a href="http://www.apache.org">Apache Homepage</a></li>
<li><a href="http://www.apache.org/licenses/">License</a></li>
<li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
<li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
<li><a href="http://www.apache.org/security/">Security</a></li>
</ul>
</div>
</li>
<li><a href="./../../../">Apache Cassandra</a></li>
<li><a href="./../../../doc/latest/">Documentation</a></li>
<li><a href="./">The Cassandra Query Language (CQL)</a></li>
<li>Changes</li>
</ul>
</div>
<!-- navbar -->
<nav class="navbar navbar-default navbar-static-top" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#cassandra-menu" aria-expanded="false">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="./../../../"><img src="./../../../img/cassandra_logo.png" alt="Apache Cassandra logo" /></a>
</div><!-- /.navbar-header -->
<div id="cassandra-menu" class="collapse navbar-collapse">
<ul class="nav navbar-nav navbar-right">
<li><a href="./../../../">Home</a></li>
<li><a href="./../../../download/">Download</a></li>
<li><a href="./../../../doc/latest/">Documentation</a></li>
<li><a href="./../../../community/">Community</a></li>
<li>
<a href="./../../../blog/">Blog</a>
</li>
</ul>
</div><!-- /#cassandra-menu -->
</div>
</nav><!-- /.navbar -->
</div><!-- /.topnav -->
<div class="container-fluid">
<div class="row">
<div class="col-md-3">
<div class="doc-navigation">
<div class="doc-menu" role="navigation">
<div class="navbar-header">
<button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<div class="navbar-collapse collapse sidebar-navbar-collapse">
<form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
<div class="form-group">
<input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</div>
</form>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">The Cassandra Query Language (CQL)</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="definitions.html">Definitions</a></li>
<li class="toctree-l2"><a class="reference internal" href="types.html">Data Types</a></li>
<li class="toctree-l2"><a class="reference internal" href="ddl.html">Data Definition</a></li>
<li class="toctree-l2"><a class="reference internal" href="dml.html">Data Manipulation</a></li>
<li class="toctree-l2"><a class="reference internal" href="indexes.html">Secondary Indexes</a></li>
<li class="toctree-l2"><a class="reference internal" href="mvs.html">Materialized Views</a></li>
<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
<li class="toctree-l2"><a class="reference internal" href="functions.html">Functions</a></li>
<li class="toctree-l2"><a class="reference internal" href="operators.html">Arithmetic Operators</a></li>
<li class="toctree-l2"><a class="reference internal" href="json.html">JSON Support</a></li>
<li class="toctree-l2"><a class="reference internal" href="triggers.html">Triggers</a></li>
<li class="toctree-l2"><a class="reference internal" href="appendices.html">Appendices</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Changes</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id1">3.4.5</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id2">3.4.4</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id3">3.4.3</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id6">3.4.2</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id7">3.4.1</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id8">3.4.0</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id9">3.3.1</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id10">3.3.0</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id11">3.2.0</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id12">3.1.7</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id13">3.1.6</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id14">3.1.5</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id15">3.1.4</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id16">3.1.3</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id17">3.1.2</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id18">3.1.1</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id19">3.1.0</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id20">3.0.5</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id21">3.0.4</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id22">3.0.3</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id23">3.0.2</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id24">3.0.1</a></li>
<li class="toctree-l3"><a class="reference internal" href="#versioning">Versioning</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
</ul>
</div><!--/.nav-collapse -->
</div>
</div>
</div>
<div class="col-md-8">
<div class="content doc-content">
<div class="content-container">
<div class="section" id="changes">
<h1>Changes<a class="headerlink" href="#changes" title="Permalink to this headline"></a></h1>
<p>The following describes the changes in each version of CQL.</p>
<div class="section" id="id1">
<h2>3.4.5<a class="headerlink" href="#id1" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li>Adds support for arithmetic operators (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-11935">CASSANDRA-11935</a>)</li>
<li>Adds support for <code class="docutils literal notranslate"><span class="pre">+</span></code> and <code class="docutils literal notranslate"><span class="pre">-</span></code> operations on dates (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-11936">CASSANDRA-11936</a>)</li>
<li>Adds <code class="docutils literal notranslate"><span class="pre">currentTimestamp</span></code>, <code class="docutils literal notranslate"><span class="pre">currentDate</span></code>, <code class="docutils literal notranslate"><span class="pre">currentTime</span></code> and <code class="docutils literal notranslate"><span class="pre">currentTimeUUID</span></code> functions (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-13132">CASSANDRA-13132</a>)</li>
</ul>
</div>
<div class="section" id="id2">
<h2>3.4.4<a class="headerlink" href="#id2" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li><code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code> <code class="docutils literal notranslate"><span class="pre">ALTER</span></code> has been removed; a column’s type may not be changed after creation (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-12443">CASSANDRA-12443</a>).</li>
<li><code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">TYPE</span></code> <code class="docutils literal notranslate"><span class="pre">ALTER</span></code> has been removed; a field’s type may not be changed after creation (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-12443">CASSANDRA-12443</a>).</li>
</ul>
</div>
<div class="section" id="id3">
<h2>3.4.3<a class="headerlink" href="#id3" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li>Adds a new <a href="#id4"><span class="problematic" id="id5">``</span></a>duration `` <a class="reference internal" href="types.html#data-types"><span class="std std-ref">data types</span></a> (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-11873">CASSANDRA-11873</a>).</li>
<li>Support for <code class="docutils literal notranslate"><span class="pre">GROUP</span> <span class="pre">BY</span></code> (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-10707">CASSANDRA-10707</a>).</li>
<li>Adds a <code class="docutils literal notranslate"><span class="pre">DEFAULT</span> <span class="pre">UNSET</span></code> option for <code class="docutils literal notranslate"><span class="pre">INSERT</span> <span class="pre">JSON</span></code> to ignore omitted columns (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-11424">CASSANDRA-11424</a>).</li>
<li>Allows <code class="docutils literal notranslate"><span class="pre">null</span></code> as a legal value for TTL on insert and update. It will be treated as equivalent to inserting a 0 (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-12216">CASSANDRA-12216</a>).</li>
</ul>
</div>
<div class="section" id="id6">
<h2>3.4.2<a class="headerlink" href="#id6" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li>If a table has a non zero <code class="docutils literal notranslate"><span class="pre">default_time_to_live</span></code>, then explicitly specifying a TTL of 0 in an <code class="docutils literal notranslate"><span class="pre">INSERT</span></code> or
<code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> statement will result in the new writes not having any expiration (that is, an explicit TTL of 0 cancels
the <code class="docutils literal notranslate"><span class="pre">default_time_to_live</span></code>). This wasn’t the case before and the <code class="docutils literal notranslate"><span class="pre">default_time_to_live</span></code> was applied even though a
TTL had been explicitly set.</li>
<li><code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code> <code class="docutils literal notranslate"><span class="pre">ADD</span></code> and <code class="docutils literal notranslate"><span class="pre">DROP</span></code> now allow multiple columns to be added/removed.</li>
<li>New <code class="docutils literal notranslate"><span class="pre">PER</span> <span class="pre">PARTITION</span> <span class="pre">LIMIT</span></code> option for <code class="docutils literal notranslate"><span class="pre">SELECT</span></code> statements (see <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-7017)">CASSANDRA-7017</a>.</li>
<li><a class="reference internal" href="functions.html#cql-functions"><span class="std std-ref">User-defined functions</span></a> can now instantiate <code class="docutils literal notranslate"><span class="pre">UDTValue</span></code> and <code class="docutils literal notranslate"><span class="pre">TupleValue</span></code> instances via the
new <code class="docutils literal notranslate"><span class="pre">UDFContext</span></code> interface (see <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-10818)">CASSANDRA-10818</a>.</li>
<li><a class="reference internal" href="types.html#udts"><span class="std std-ref">User-defined types</span></a> may now be stored in a non-frozen form, allowing individual fields to be updated and
deleted in <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> statements and <code class="docutils literal notranslate"><span class="pre">DELETE</span></code> statements, respectively. (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-7423)">CASSANDRA-7423</a>).</li>
</ul>
</div>
<div class="section" id="id7">
<h2>3.4.1<a class="headerlink" href="#id7" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li>Adds <code class="docutils literal notranslate"><span class="pre">CAST</span></code> functions.</li>
</ul>
</div>
<div class="section" id="id8">
<h2>3.4.0<a class="headerlink" href="#id8" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li>Support for <a class="reference internal" href="mvs.html#materialized-views"><span class="std std-ref">materialized views</span></a>.</li>
<li><code class="docutils literal notranslate"><span class="pre">DELETE</span></code> support for inequality expressions and <code class="docutils literal notranslate"><span class="pre">IN</span></code> restrictions on any primary key columns.</li>
<li><code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> support for <code class="docutils literal notranslate"><span class="pre">IN</span></code> restrictions on any primary key columns.</li>
</ul>
</div>
<div class="section" id="id9">
<h2>3.3.1<a class="headerlink" href="#id9" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li>The syntax <code class="docutils literal notranslate"><span class="pre">TRUNCATE</span> <span class="pre">TABLE</span> <span class="pre">X</span></code> is now accepted as an alias for <code class="docutils literal notranslate"><span class="pre">TRUNCATE</span> <span class="pre">X</span></code>.</li>
</ul>
</div>
<div class="section" id="id10">
<h2>3.3.0<a class="headerlink" href="#id10" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li><a class="reference internal" href="functions.html#cql-functions"><span class="std std-ref">User-defined functions and aggregates</span></a> are now supported.</li>
<li>Allows double-dollar enclosed strings literals as an alternative to single-quote enclosed strings.</li>
<li>Introduces Roles to supersede user based authentication and access control</li>
<li>New <code class="docutils literal notranslate"><span class="pre">date</span></code>, <code class="docutils literal notranslate"><span class="pre">time</span></code>, <code class="docutils literal notranslate"><span class="pre">tinyint</span></code> and <code class="docutils literal notranslate"><span class="pre">smallint</span></code> <a class="reference internal" href="types.html#data-types"><span class="std std-ref">data types</span></a> have been added.</li>
<li><a class="reference internal" href="json.html#cql-json"><span class="std std-ref">JSON support</span></a> has been added</li>
<li>Adds new time conversion functions and deprecate <code class="docutils literal notranslate"><span class="pre">dateOf</span></code> and <code class="docutils literal notranslate"><span class="pre">unixTimestampOf</span></code>.</li>
</ul>
</div>
<div class="section" id="id11">
<h2>3.2.0<a class="headerlink" href="#id11" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li><a class="reference internal" href="types.html#udts"><span class="std std-ref">User-defined types</span></a> supported.</li>
<li><code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">INDEX</span></code> now supports indexing collection columns, including indexing the keys of map collections through the
<code class="docutils literal notranslate"><span class="pre">keys()</span></code> function</li>
<li>Indexes on collections may be queried using the new <code class="docutils literal notranslate"><span class="pre">CONTAINS</span></code> and <code class="docutils literal notranslate"><span class="pre">CONTAINS</span> <span class="pre">KEY</span></code> operators</li>
<li><a class="reference internal" href="types.html#tuples"><span class="std std-ref">Tuple types</span></a> were added to hold fixed-length sets of typed positional fields.</li>
<li><code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">INDEX</span></code> now supports optionally specifying a keyspace.</li>
</ul>
</div>
<div class="section" id="id12">
<h2>3.1.7<a class="headerlink" href="#id12" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li><code class="docutils literal notranslate"><span class="pre">SELECT</span></code> statements now support selecting multiple rows in a single partition using an <code class="docutils literal notranslate"><span class="pre">IN</span></code> clause on combinations
of clustering columns.</li>
<li><code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> and <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">EXISTS</span></code> syntax is now supported by <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">USER</span></code> and <code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">USER</span></code> statements,
respectively.</li>
</ul>
</div>
<div class="section" id="id13">
<h2>3.1.6<a class="headerlink" href="#id13" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li>A new <code class="docutils literal notranslate"><span class="pre">uuid()</span></code> method has been added.</li>
<li>Support for <code class="docutils literal notranslate"><span class="pre">DELETE</span> <span class="pre">...</span> <span class="pre">IF</span> <span class="pre">EXISTS</span></code> syntax.</li>
</ul>
</div>
<div class="section" id="id14">
<h2>3.1.5<a class="headerlink" href="#id14" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li>It is now possible to group clustering columns in a relation, see <a class="reference internal" href="dml.html#where-clause"><span class="std std-ref">WHERE</span></a> clauses.</li>
<li>Added support for <a class="reference internal" href="ddl.html#static-columns"><span class="std std-ref">static columns</span></a>.</li>
</ul>
</div>
<div class="section" id="id15">
<h2>3.1.4<a class="headerlink" href="#id15" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li><code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">INDEX</span></code> now allows specifying options when creating CUSTOM indexes.</li>
</ul>
</div>
<div class="section" id="id16">
<h2>3.1.3<a class="headerlink" href="#id16" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li>Millisecond precision formats have been added to the <a class="reference internal" href="types.html#timestamps"><span class="std std-ref">timestamp</span></a> parser.</li>
</ul>
</div>
<div class="section" id="id17">
<h2>3.1.2<a class="headerlink" href="#id17" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li><code class="docutils literal notranslate"><span class="pre">NaN</span></code> and <code class="docutils literal notranslate"><span class="pre">Infinity</span></code> has been added as valid float constants. They are now reserved keywords. In the unlikely case
you we using them as a column identifier (or keyspace/table one), you will now need to double quote them.</li>
</ul>
</div>
<div class="section" id="id18">
<h2>3.1.1<a class="headerlink" href="#id18" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li><code class="docutils literal notranslate"><span class="pre">SELECT</span></code> statement now allows listing the partition keys (using the <code class="docutils literal notranslate"><span class="pre">DISTINCT</span></code> modifier). See <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-4536">CASSANDRA-4536</a>.</li>
<li>The syntax <code class="docutils literal notranslate"><span class="pre">c</span> <span class="pre">IN</span> <span class="pre">?</span></code> is now supported in <code class="docutils literal notranslate"><span class="pre">WHERE</span></code> clauses. In that case, the value expected for the bind variable
will be a list of whatever type <code class="docutils literal notranslate"><span class="pre">c</span></code> is.</li>
<li>It is now possible to use named bind variables (using <code class="docutils literal notranslate"><span class="pre">:name</span></code> instead of <code class="docutils literal notranslate"><span class="pre">?</span></code>).</li>
</ul>
</div>
<div class="section" id="id19">
<h2>3.1.0<a class="headerlink" href="#id19" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li><code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code> <code class="docutils literal notranslate"><span class="pre">DROP</span></code> option added.</li>
<li><code class="docutils literal notranslate"><span class="pre">SELECT</span></code> statement now supports aliases in select clause. Aliases in WHERE and ORDER BY clauses are not supported.</li>
<li><code class="docutils literal notranslate"><span class="pre">CREATE</span></code> statements for <code class="docutils literal notranslate"><span class="pre">KEYSPACE</span></code>, <code class="docutils literal notranslate"><span class="pre">TABLE</span></code> and <code class="docutils literal notranslate"><span class="pre">INDEX</span></code> now supports an <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> condition.
Similarly, <code class="docutils literal notranslate"><span class="pre">DROP</span></code> statements support a <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">EXISTS</span></code> condition.</li>
<li><code class="docutils literal notranslate"><span class="pre">INSERT</span></code> statements optionally supports a <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> condition and <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> supports <code class="docutils literal notranslate"><span class="pre">IF</span></code> conditions.</li>
</ul>
</div>
<div class="section" id="id20">
<h2>3.0.5<a class="headerlink" href="#id20" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li><code class="docutils literal notranslate"><span class="pre">SELECT</span></code>, <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code>, and <code class="docutils literal notranslate"><span class="pre">DELETE</span></code> statements now allow empty <code class="docutils literal notranslate"><span class="pre">IN</span></code> relations (see <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-5626)">CASSANDRA-5626</a>.</li>
</ul>
</div>
<div class="section" id="id21">
<h2>3.0.4<a class="headerlink" href="#id21" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li>Updated the syntax for custom <a class="reference internal" href="indexes.html#secondary-indexes"><span class="std std-ref">secondary indexes</span></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 class="docutils literal notranslate"><span class="pre">token</span></code> method should always
be used for range queries on the partition key (see <a class="reference internal" href="dml.html#where-clause"><span class="std std-ref">WHERE clauses</span></a>).</li>
</ul>
</div>
<div class="section" id="id22">
<h2>3.0.3<a class="headerlink" href="#id22" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li>Support for custom <a class="reference internal" href="indexes.html#secondary-indexes"><span class="std std-ref">secondary indexes</span></a> has been added.</li>
</ul>
</div>
<div class="section" id="id23">
<h2>3.0.2<a class="headerlink" href="#id23" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li>Type validation for the <a class="reference internal" href="definitions.html#constants"><span class="std std-ref">constants</span></a> has been fixed. For instance, the implementation used to allow
<code class="docutils literal notranslate"><span class="pre">'2'</span></code> as a valid value for an <code class="docutils literal notranslate"><span class="pre">int</span></code> column (interpreting it has the equivalent of <code class="docutils literal notranslate"><span class="pre">2</span></code>), or <code class="docutils literal notranslate"><span class="pre">42</span></code> as a valid
<code class="docutils literal notranslate"><span class="pre">blob</span></code> value (in which case <code class="docutils literal notranslate"><span class="pre">42</span></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 class="reference internal" href="types.html#data-types"><span class="std std-ref">data types</span></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 blobs constants to allow the input of
blobs. Do note that while the input of blobs as strings constant is still supported by this version (to allow smoother
transition to blob constant), it is now deprecated 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 class="reference internal" href="functions.html#cql-functions"><span class="std std-ref">section on functions</span></a> for details.</li>
</ul>
</div>
<div class="section" id="id24">
<h2>3.0.1<a class="headerlink" href="#id24" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li>Date strings (and timestamps) are no longer accepted as valid <code class="docutils literal notranslate"><span class="pre">timeuuid</span></code> values. Doing so was a bug in the sense
that date string are not valid <code class="docutils literal notranslate"><span class="pre">timeuuid</span></code>, and it was thus resulting in <a class="reference external" 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 class="docutils literal notranslate"><span class="pre">timeuuid</span></code>: <code class="docutils literal notranslate"><span class="pre">now</span></code>, <code class="docutils literal notranslate"><span class="pre">minTimeuuid</span></code>, <code class="docutils literal notranslate"><span class="pre">maxTimeuuid</span></code> ,
<code class="docutils literal notranslate"><span class="pre">dateOf</span></code> and <code class="docutils literal notranslate"><span class="pre">unixTimestampOf</span></code>.</li>
<li>Float constants now support the exponent notation. In other words, <code class="docutils literal notranslate"><span class="pre">4.2E10</span></code> is now a valid floating point value.</li>
</ul>
</div>
<div class="section" id="versioning">
<h2>Versioning<a class="headerlink" href="#versioning" title="Permalink to this headline"></a></h2>
<p>Versioning of the CQL language adheres to the <a class="reference external" 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 border="1" class="docutils">
<colgroup>
<col width="8%" />
<col width="92%" />
</colgroup>
<thead valign="bottom">
<tr class="row-odd"><th class="head">version</th>
<th class="head">description</th>
</tr>
</thead>
<tbody valign="top">
<tr class="row-even"><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 class="row-odd"><td>Minor</td>
<td>Minor version increments occur when new, but backward compatible, functionality is introduced.</td>
</tr>
<tr class="row-even"><td>Patch</td>
<td>The patch version is incremented when bugs are fixed.</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
<a href="../configuration/index.html" class="btn btn-default pull-right " role="button" title="Configuring Cassandra" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
<a href="appendices.html" class="btn btn-default" role="button" title="Appendices" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
</div>
</div>
</div>
</div>
</div>
</div>
<hr />
<footer>
<div class="container">
<div class="col-md-4 social-blk">
<span class="social">
<a href="https://twitter.com/cassandra"
class="twitter-follow-button"
data-show-count="false" data-size="large">Follow @cassandra</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
<a href="https://twitter.com/intent/tweet?button_hashtag=cassandra"
class="twitter-hashtag-button"
data-size="large"
data-related="ApacheCassandra">Tweet #cassandra</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
</span>
<a class="subscribe-rss icon-link" href="/feed.xml" title="Subscribe to Blog via RSS">
<span><i class="fa fa-rss"></i></span>
</a>
</div>
<div class="col-md-8 trademark">
<p>&copy; 2016 <a href="http://apache.org">The Apache Software Foundation</a>.
Apache, the Apache feather logo, and Apache Cassandra are trademarks of The Apache Software Foundation.
<p>
</div>
</div><!-- /.container -->
</footer>
<!-- Javascript. Placed here so pages load faster -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="./../../../js/underscore-min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>
<script src="./../../../js/doctools.js"></script>
<script src="./../../../js/searchtools.js"></script>
<script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT: "", VERSION: "", COLLAPSE_INDEX: false, FILE_SUFFIX: ".html", HAS_SOURCE: false, SOURCELINK_SUFFIX: ".txt" }; </script>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
try {
var pageTracker = _gat._getTracker("UA-11583863-1");
pageTracker._trackPageview();
} catch(err) {}
</script>
</body>
</html>