blob: cf6530c7e76cdb9da96f90ecc28d7d39f90c4312 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>Changes | Apache Cassandra Documentation</title>
<link rel="stylesheet" href="../../../../assets/css/site.css">
<link rel="schema.dcterms" href="https://purl.org/dc/terms/">
<meta name="dcterms.subject" content="Cassandra">
<meta name="dcterms.identifier" content="4.0">
<meta name="generator" content="Antora 2.3.4">
<link rel="icon" href="../../../../assets/img/favicon.ico" type="image/x-icon">
<script>
const script = document.createElement("script");
const domain = window.location.hostname;
script.type = "text/javascript";
script.src = "https://plausible.cassandra.apache.org/js/plausible.js";
script.setAttribute("data-domain",domain);
script.setAttribute("defer",'true');
script.setAttribute("async",'true');
document.getElementsByTagName("head")[0].appendChild(script);
</script> </head>
<body class="docs-wrapper article">
<div class="container mx-auto relative">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<meta property="og:type" content="website" />
<meta property="og:url" content="/" />
<meta property="og:site_name" content="Apache Cassandra" />
<header id="top-nav">
<div class="inner relative">
<div class="header-social-icons text-right">
<a href="https://twitter.com/cassandra?lang=en" target="_blank" styles="margin-left: 20px;"><img src="../../../../assets/img/twitter-icon-circle-white.svg" alt="twitter icon" width="24"></a>
<a href="https://www.linkedin.com/company/apache-cassandra/" target="_blank" styles="margin-left: 20px;"><img src="../../../../assets/img/LI-In-Bug.png" alt="linked-in icon" width="24"></a>
<a href="https://www.youtube.com/c/PlanetCassandra" target="_blank" styles="margin-left: 20px;"><img src="../../../../assets/img/youtube-icon.png" alt="youtube icon" width="24"></a>
</div>
<div class="cf">
<div class="logo left"><a href="/"><img src="../../../../assets/img/logo-white-r.png" alt="Cassandra Logo"></a></div>
<div class="mobile-nav-icon right">
<img class="toggle-icon" src="../../../../assets/img/hamburger-nav.svg">
</div>
<ul class="main-nav nav-links right flex flex-vert-center flex-space-between">
<li>
<a class="nav-link hide-mobile">Get Started</a>
<ul class="sub-menu bg-white">
<li class="pa-micro">
<a href="/_/cassandra-basics.html">
<div class="sub-nav-icon">
<img src="../../../../assets/img/sub-menu-basics.png" alt="cassandra basics icon">
</div>
<div class="sub-nav-text teal py-small">
Cassandra Basics
</div>
</a>
</li>
<li class="pa-micro">
<a href="/_/quickstart.html">
<div class="sub-nav-icon">
<img src="../../../../assets/img/sub-menu-rocket.png" alt="cassandra basics icon">
</div>
<div class="sub-nav-text teal py-small">
Quickstart
</div>
</a>
</li>
<li class="pa-micro">
<a href="/_/ecosystem.html">
<div class="sub-nav-icon">
<img src="../../../../assets/img/sub-menu-ecosystem.png" alt="cassandra basics icon">
</div>
<div class="sub-nav-text teal py-small">
Ecosystem
</div>
</a>
</li>
</ul>
</li>
<li><a class="nav-link" href="/doc/latest/">Documentation</a></li>
<li>
<a class="nav-link" href="/_/community.html">Community</a>
<ul class="sub-menu bg-white">
<li class="pa-micro">
<a href="/_/community.html#code-of-conduct">
<div class="sub-nav-icon">
<img src="../../../../assets/img/sub-menu-welcome.png" alt="welcome icon">
</div>
<div class="sub-nav-text teal py-small">
Welcome
</div>
</a>
</li>
<li class="pa-micro hide-mobile">
<a href="/_/community.html#discussions">
<div class="sub-nav-icon">
<img src="../../../../assets/img/sub-menu-discussions.png" alt="discussions icon">
</div>
<div class="sub-nav-text teal py-small">
Discussions
</div>
</a>
</li>
<li class="pa-micro hide-mobile">
<a href="/_/community.html#project-governance">
<div class="sub-nav-icon">
<img src="../../../../assets/img/sub-menu-governance.png" alt="Governance icon">
</div>
<div class="sub-nav-text teal py-small">
Governance
</div>
</a>
</li>
<li class="pa-micro hide-mobile">
<a href="/_/community.html#how-to-contribute">
<div class="sub-nav-icon">
<img src="../../../../assets/img/sub-menu-contribute.png" alt="Contribute icon">
</div>
<div class="sub-nav-text teal py-small">
Contribute
</div>
</a>
</li>
<li class="pa-micro hide-mobile">
<a href="/_/community.html#meet-the-community">
<div class="sub-nav-icon">
<img src="../../../../assets/img/sub-menu-community.png" alt="Meet the Community icon">
</div>
<div class="sub-nav-text teal py-small">
Meet the Community
</div>
</a>
</li>
<li class="pa-micro hide-mobile">
<a href="/_/cassandra-catalyst-program.html">
<div class="sub-nav-icon">
<img src="../../../../assets/img/sub-menu-catalyst.png" alt="Catalyst icon">
</div>
<div class="sub-nav-text teal py-small">
Catalyst Program
</div>
</a>
</li>
<li class="pa-micro hide-mobile">
<a href="/_/events.html">
<div class="sub-nav-icon">
<img src="../../../../assets/img/sub-menu-events.png" alt="Events icon">
</div>
<div class="sub-nav-text teal py-small">
Events
</div>
</a>
</li>
</ul>
</li>
<li>
<a class="nav-link hide-mobile">Learn</a>
<ul class="sub-menu bg-white">
<li class="pa-micro">
<a href="/_/Apache-Cassandra-5.0-Moving-Toward-an-AI-Driven-Future.html">
<div class="sub-nav-icon">
<img src="../../../../assets/img/sub-menu-basics.png" alt="Basics icon">
</div>
<div class="sub-nav-text teal py-small">
Cassandra 5.0
</div>
</a>
</li>
<li class="pa-micro">
<a href="/_/case-studies.html">
<div class="sub-nav-icon">
<img src="../../../../assets/img/sub-menu-case-study.png" alt="Case Studies icon">
</div>
<div class="sub-nav-text teal py-small">
Case Studies
</div>
</a>
</li>
<li class="pa-micro">
<a href="/_/resources.html">
<div class="sub-nav-icon">
<img src="../../../../assets/img/sub-menu-resources.png" alt="Resources icon">
</div>
<div class="sub-nav-text teal py-small">
Resources
</div>
</a>
</li>
<li class="pa-micro">
<a href="/_/blog.html">
<div class="sub-nav-icon">
<img src="../../../../assets/img/sub-menu-blog.png" alt="Blog icon">
</div>
<div class="sub-nav-text teal py-small">
Blog
</div>
</a>
</li>
</ul>
</li>
<li><a class="nav-link btn btn--filled" href="/_/download.html">Download Now</a></li>
</ul>
</div>
</div>
</header>
<div class="hero hero--home grad">
<div class="eye"></div>
<div id="docs-content" class="text-center flex flex-center flex-column relative z2 ma-xlarge">
<h2>Cassandra Documentation</h2>
</div>
</div>
<div class="body px-medium py-medium container">
<div class="docs-nav-bar flex flex-space-between mb-medium">
<div id="mobile-docs-nav-burger" class="hidden">
<svg viewBox="0 0 24 24" width="36" height="36" stroke="#1c81a0" stroke-width="2.5" fill="none" stroke-linecap="round" stroke-linejoin="round" class="css-i6dzq1"><line x1="3" y1="12" x2="21" y2="12"></line><line x1="3" y1="6" x2="21" y2="6"></line><line x1="3" y1="18" x2="21" y2="18"></line></svg>
</div>
<div class="docs-nav-item relative">
<input id="search-input" type="text" placeholder="Search docs">
</div>
<div class="versions-wrapper">
<h4>Version:</h4>
<div class="nav-panel-explore" data-panel="explore">
<div id="version-toggle" class="context">
<span class="version">4.0</span>
</div>
<ul id="versions-list" class="components">
<li class="component">
<ul class="versions">
<li class="version is-latest">
<a href="../../../../_/index.html">master</a>
</li>
</ul>
</li>
<li class="component is-current">
<ul class="versions">
<li class="version">
<a href="../../../trunk/index.html">trunk</a>
</li>
<li class="version">
<a href="../../../5.0/index.html">5.0</a>
</li>
<li class="version is-latest">
<a href="../../../4.1/index.html">4.1</a>
</li>
<li class="version is-current">
<a href="../../index.html">4.0</a>
</li>
<li class="version">
<a href="../../../3.11/index.html">3.11</a>
</li>
</ul>
</li>
</ul>
</div>
</div> </div>
<div class="cf relative">
<nav class="nav docs-nav full-800">
<div class="nav-menu">
<ul class="nav-list">
<li class="nav-item is-active" data-depth="0">
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<span class="nav-line">
<button class="nav-toggle"></button>
<a class="nav-link" href="../../index.html">Main</a>
</span>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<span class="nav-line">
<a class="nav-link" href="../../../../_/glossary.html">Glossary</a>
</span>
</li>
<li class="nav-item" data-depth="2">
<span class="nav-line">
<a class="nav-link" href="../../../../_/bugs.html">How to report bugs</a>
</span>
</li>
<li class="nav-item" data-depth="2">
<span class="nav-line">
<a class="nav-link" href="../../../../_/contactus.html">Contact us</a>
</span>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item is-active" data-depth="0">
<ul class="nav-list">
<li class="nav-item is-current-path is-active" data-depth="1">
<span class="nav-line">
<button class="nav-toggle"></button>
<span class="nav-text">Cassandra</span>
</span>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<span class="nav-line">
<button class="nav-toggle"></button>
<a class="nav-link" href="../getting_started/index.html">Getting Started</a>
</span>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../getting_started/installing.html">Installing Cassandra</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../getting_started/configuring.html">Configuring Cassandra</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../getting_started/querying.html">Inserting and querying</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../getting_started/drivers.html">Client drivers</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../getting_started/production.html">Production recommendations</a>
</span>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<span class="nav-line">
<button class="nav-toggle"></button>
<a class="nav-link" href="../new/index.html">What&#8217;s new</a>
</span>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../new/java11.html">Support for Java 11</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../new/virtualtables.html">Virtual tables</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../new/auditlogging.html">Audit logging</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../new/fqllogging.html">Full query logging</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../new/messaging.html">Improved internode Messaging</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../new/streaming.html">Improved streaming</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../new/transientreplication.html">Transient replication</a>
</span>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<span class="nav-line">
<button class="nav-toggle"></button>
<a class="nav-link" href="../architecture/index.html">Architecture</a>
</span>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../architecture/overview.html">Overview</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../architecture/dynamo.html">Dynamo</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../architecture/storage_engine.html">Storage engine</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../architecture/guarantees.html">Guarantees</a>
</span>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<span class="nav-line">
<button class="nav-toggle"></button>
<a class="nav-link" href="../data_modeling/index.html">Data modeling</a>
</span>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../data_modeling/intro.html">Introduction</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../data_modeling/data_modeling_conceptual.html">Conceptual data modeling</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../data_modeling/data_modeling_rdbms.html">RDBMS design</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../data_modeling/data_modeling_queries.html">Defining application queries</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../data_modeling/data_modeling_logical.html">Logical data modeling</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../data_modeling/data_modeling_physical.html">Physical data modeling</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../data_modeling/data_modeling_refining.html">Evaluating and refining data models</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../data_modeling/data_modeling_schema.html">Defining database schema</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../data_modeling/data_modeling_tools.html">Cassandra data modeling tools</a>
</span>
</li>
</ul>
</li>
<li class="nav-item is-current-path is-active" data-depth="2">
<span class="nav-line">
<button class="nav-toggle"></button>
<a class="nav-link" href="index.html">Cassandra Query Language (CQL)</a>
</span>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="definitions.html">Definitions</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="types.html">Data types</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="ddl.html">Data definition (DDL)</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="dml.html">Data manipulation (DML)</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="operators.html">Operators</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="indexes.html">Secondary indexes</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="mvs.html">Materialized views</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="functions.html">Functions</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="json.html">JSON</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="security.html">Security</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="triggers.html">Triggers</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="appendices.html">Appendices</a>
</span>
</li>
<li class="nav-item is-current-page is-active" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="changes.html">Changes</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="SASI.html">SASI</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="cql_singlefile.html">Single file of CQL information</a>
</span>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<span class="nav-line">
<button class="nav-toggle"></button>
<a class="nav-link" href="../configuration/index.html">Configuration</a>
</span>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../configuration/cass_yaml_file.html">cassandra.yaml</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../configuration/cass_rackdc_file.html">cassandra-rackdc.properties</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../configuration/cass_env_sh_file.html">cassandra-env.sh</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../configuration/cass_topo_file.html">cassandra-topologies.properties</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../configuration/cass_cl_archive_file.html">commitlog-archiving.properties</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../configuration/cass_logback_xml_file.html">logback.xml</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../configuration/cass_jvm_options_file.html">jvm-* files</a>
</span>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<span class="nav-line">
<button class="nav-toggle"></button>
<a class="nav-link" href="../operating/index.html">Operating</a>
</span>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="#operating/snitch.adoc">Snitches</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../operating/topo_changes.html">Topology changes</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../operating/repair.html">Repair</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../operating/read_repair.html">Read repair</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../operating/hints.html">Hints</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../operating/bloom_filters.html">Bloom filters</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../operating/compression.html">Compression</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../operating/cdc.html">Change Data Capture (CDC)</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../operating/backups.html">Backups</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../operating/bulk_loading.html">Bulk loading</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../operating/metrics.html">Metrics</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../operating/security.html">Security</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../operating/hardware.html">Hardware</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../operating/audit_logging.html">Audit logging</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../operating/compaction/index.html">Compaction</a>
</span>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<span class="nav-line">
<button class="nav-toggle"></button>
<a class="nav-link" href="../tools/index.html">Tools</a>
</span>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../tools/cqlsh.html">cqlsh: the CQL shell</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../tools/nodetool/nodetool.html">nodetool</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../tools/sstable/index.html">SSTable tools</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../tools/cassandra_stress.html">cassandra-stress</a>
</span>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<span class="nav-line">
<button class="nav-toggle"></button>
<a class="nav-link" href="../troubleshooting/index.html">Troubleshooting</a>
</span>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../troubleshooting/finding_nodes.html">Finding misbehaving nodes</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../troubleshooting/reading_logs.html">Reading Cassandra logs</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../troubleshooting/use_nodetool.html">Using nodetool</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../troubleshooting/use_tools.html">Using external tools to deep-dive</a>
</span>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<span class="nav-line">
<button class="nav-toggle"></button>
<a class="nav-link" href="../../../../_/development/index.html">Development</a>
</span>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../../../../_/development/gettingstarted.html">Getting started</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../../../../_/development/ide.html">Building and IDE integration</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../../../../_/development/testing.html">Testing</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../../../../_/development/patches.html">Contributing code changes</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../../../../_/development/code_style.html">Code style</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../../../../_/development/how_to_review.html">Review checklist</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../../../../_/development/how_to_commit.html">How to commit</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../../../../_/development/documentation.html">Working on documentation</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../../../../_/development/ci.html">Jenkins CI environment</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../../../../_/development/dependencies.html">Dependency management</a>
</span>
</li>
<li class="nav-item" data-depth="3">
<span class="nav-line">
<a class="nav-link" href="../../../../_/development/release_process.html">Release process</a>
</span>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<span class="nav-line">
<a class="nav-link" href="../faq/index.html">FAQ</a>
</span>
</li>
<li class="nav-item" data-depth="2">
<span class="nav-line">
<a class="nav-link" href="../plugins/index.html">Plug-ins</a>
</span>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</nav>
<aside class="toc sidebar">
<div class="toc-menu"></div>
</aside>
<main class="article default-main full-800" data-ceiling="topbar">
<div class="article-banner">
<p>A newer version of this documentation is available.</p>
<a class="btn" href="../../../4.1/cassandra/cql/changes.html">View Latest</a>
</div>
<div class="article-header">
<nav class="crumbs" aria-label="breadcrumbs">
<ul>
<li class="crumb">Cassandra</li>
<li class="crumb"><a href="index.html">Cassandra Query Language (CQL)</a></li>
<li class="crumb"><a href="changes.html">Changes</a></li>
</ul>
</nav>
<div class="tools" role="navigation">
<ul>
<li class="tool edit"><a href="https://github.com/apache/cassandra/edit/cassandra-4.0/doc/modules/cassandra/pages/cql/changes.adoc" title="Edit Page" target="_blank" rel="noopener">Edit</a></li>
</ul>
</div>
</div>
<article class="doc">
<h1 class="page">Changes</h1>
<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>The following describes the changes in each version of CQL.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="3-4-5"><a class="anchor" href="#3-4-5"></a>3.4.5</h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p>Adds support for arithmetic operators (<code>11935</code>)</p>
</li>
<li>
<p>Adds support for <code>+</code> and <code>-</code> operations on dates (<code>11936</code>)</p>
</li>
<li>
<p>Adds <code>currentTimestamp</code>, <code>currentDate</code>, <code>currentTime</code> and
<code>currentTimeUUID</code> functions (<code>13132</code>)</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="3-4-4"><a class="anchor" href="#3-4-4"></a>3.4.4</h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p><code>ALTER TABLE</code> <code>ALTER</code> has been removed; a column&#8217;s type may not be
changed after creation (<code>12443</code>).</p>
</li>
<li>
<p><code>ALTER TYPE</code> <code>ALTER</code> has been removed; a field&#8217;s type may not be
changed after creation (<code>12443</code>).</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="3-4-3"><a class="anchor" href="#3-4-3"></a>3.4.3</h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p>Adds a new <code>duration</code> <code>data types &lt;data-types&gt;</code> (<code>11873</code>).</p>
</li>
<li>
<p>Support for <code>GROUP BY</code> (<code>10707</code>).</p>
</li>
<li>
<p>Adds a <code>DEFAULT UNSET</code> option for <code>INSERT JSON</code> to ignore omitted
columns (<code>11424</code>).</p>
</li>
<li>
<p>Allows <code>null</code> as a legal value for TTL on insert and update. It will
be treated as equivalent to inserting a 0 (<code>12216</code>).</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="3-4-2"><a class="anchor" href="#3-4-2"></a>3.4.2</h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p>If a table has a non zero <code>default_time_to_live</code>, then explicitly
specifying a TTL of 0 in an <code>INSERT</code> or <code>UPDATE</code> statement will result
in the new writes not having any expiration (that is, an explicit TTL of
0 cancels the <code>default_time_to_live</code>). This wasn&#8217;t the case before and
the <code>default_time_to_live</code> was applied even though a TTL had been
explicitly set.</p>
</li>
<li>
<p><code>ALTER TABLE</code> <code>ADD</code> and <code>DROP</code> now allow multiple columns to be
added/removed.</p>
</li>
<li>
<p>New <code>PER PARTITION LIMIT</code> option for <code>SELECT</code> statements (see
<a href="https://issues.apache.org/jira/browse/CASSANDRA-7017)">CASSANDRA-7017</a>.</p>
</li>
<li>
<p><code>User-defined functions &lt;cql-functions&gt;</code> can now instantiate
<code>UDTValue</code> and <code>TupleValue</code> instances via the new <code>UDFContext</code> interface
(see
<a href="https://issues.apache.org/jira/browse/CASSANDRA-10818)">CASSANDRA-10818</a>.</p>
</li>
<li>
<p><code>User-defined types &lt;udts&gt;</code> may now be stored in a non-frozen form,
allowing individual fields to be updated and deleted in <code>UPDATE</code>
statements and <code>DELETE</code> statements, respectively.
(<a href="https://issues.apache.org/jira/browse/CASSANDRA-7423)">CASSANDRA-7423</a>).</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="3-4-1"><a class="anchor" href="#3-4-1"></a>3.4.1</h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p>Adds <code>CAST</code> functions.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="3-4-0"><a class="anchor" href="#3-4-0"></a>3.4.0</h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p>Support for <code>materialized views &lt;materialized-views&gt;</code>.</p>
</li>
<li>
<p><code>DELETE</code> support for inequality expressions and <code>IN</code> restrictions on
any primary key columns.</p>
</li>
<li>
<p><code>UPDATE</code> support for <code>IN</code> restrictions on any primary key columns.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="3-3-1"><a class="anchor" href="#3-3-1"></a>3.3.1</h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p>The syntax <code>TRUNCATE TABLE X</code> is now accepted as an alias for
<code>TRUNCATE X</code>.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="3-3-0"><a class="anchor" href="#3-3-0"></a>3.3.0</h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p><code>User-defined functions and aggregates &lt;cql-functions&gt;</code> are now
supported.</p>
</li>
<li>
<p>Allows double-dollar enclosed strings literals as an alternative to
single-quote enclosed strings.</p>
</li>
<li>
<p>Introduces Roles to supersede user based authentication and access
control</p>
</li>
<li>
<p>New <code>date</code>, <code>time</code>, <code>tinyint</code> and <code>smallint</code> <code>data types &lt;data-types&gt;</code>
have been added.</p>
</li>
<li>
<p><code>JSON support &lt;cql-json&gt;</code> has been added</p>
</li>
<li>
<p>Adds new time conversion functions and deprecate <code>dateOf</code> and
<code>unixTimestampOf</code>.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="3-2-0"><a class="anchor" href="#3-2-0"></a>3.2.0</h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p><code>User-defined types &lt;udts&gt;</code> supported.</p>
</li>
<li>
<p><code>CREATE INDEX</code> now supports indexing collection columns, including
indexing the keys of map collections through the <code>keys()</code> function</p>
</li>
<li>
<p>Indexes on collections may be queried using the new <code>CONTAINS</code> and
<code>CONTAINS KEY</code> operators</p>
</li>
<li>
<p><code>Tuple types &lt;tuples&gt;</code> were added to hold fixed-length sets of typed
positional fields.</p>
</li>
<li>
<p><code>DROP INDEX</code> now supports optionally specifying a keyspace.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="3-1-7"><a class="anchor" href="#3-1-7"></a>3.1.7</h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p><code>SELECT</code> statements now support selecting multiple rows in a single
partition using an <code>IN</code> clause on combinations of clustering columns.</p>
</li>
<li>
<p><code>IF NOT EXISTS</code> and <code>IF EXISTS</code> syntax is now supported by
<code>CREATE USER</code> and <code>DROP USER</code> statements, respectively.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="3-1-6"><a class="anchor" href="#3-1-6"></a>3.1.6</h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p>A new <code>uuid()</code> method has been added.</p>
</li>
<li>
<p>Support for <code>DELETE &#8230;&#8203; IF EXISTS</code> syntax.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="3-1-5"><a class="anchor" href="#3-1-5"></a>3.1.5</h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p>It is now possible to group clustering columns in a relation, see
<code>WHERE &lt;where-clause&gt;</code> clauses.</p>
</li>
<li>
<p>Added support for <code>static columns &lt;static-columns&gt;</code>.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="3-1-4"><a class="anchor" href="#3-1-4"></a>3.1.4</h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p><code>CREATE INDEX</code> now allows specifying options when creating CUSTOM
indexes.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="3-1-3"><a class="anchor" href="#3-1-3"></a>3.1.3</h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p>Millisecond precision formats have been added to the
<code>timestamp &lt;timestamps&gt;</code> parser.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="3-1-2"><a class="anchor" href="#3-1-2"></a>3.1.2</h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p><code>NaN</code> and <code>Infinity</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.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="3-1-1"><a class="anchor" href="#3-1-1"></a>3.1.1</h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p><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>.</p>
</li>
<li>
<p>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.</p>
</li>
<li>
<p>It is now possible to use named bind variables (using <code>:name</code> instead
of <code>?</code>).</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="3-1-0"><a class="anchor" href="#3-1-0"></a>3.1.0</h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p><code>ALTER TABLE</code> <code>DROP</code> option added.</p>
</li>
<li>
<p><code>SELECT</code> statement now supports aliases in select clause. Aliases in
WHERE and ORDER BY clauses are not supported.</p>
</li>
<li>
<p><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.</p>
</li>
<li>
<p><code>INSERT</code> statements optionally supports a <code>IF NOT EXISTS</code> condition
and <code>UPDATE</code> supports <code>IF</code> conditions.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="3-0-5"><a class="anchor" href="#3-0-5"></a>3.0.5</h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p><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>.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="3-0-4"><a class="anchor" href="#3-0-4"></a>3.0.4</h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p>Updated the syntax for custom <code>secondary indexes &lt;secondary-indexes&gt;</code>.</p>
</li>
<li>
<p>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
<code>WHERE clauses &lt;where-clause&gt;</code>).</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="3-0-3"><a class="anchor" href="#3-0-3"></a>3.0.3</h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p>Support for custom <code>secondary indexes &lt;secondary-indexes&gt;</code> has been
added.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="3-0-2"><a class="anchor" href="#3-0-2"></a>3.0.2</h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p>Type validation for the <code>constants &lt;constants&gt;</code> 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 <code>data types &lt;data-types&gt;</code>
section for details on which constant is allowed for which type.</p>
</li>
<li>
<p>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.</p>
</li>
<li>
<p>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 <code>section on functions &lt;cql-functions&gt;</code> for details.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="3-0-1"><a class="anchor" href="#3-0-1"></a>3.0.1</h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p>Date strings (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>.</p>
</li>
<li>
<p>Float constants now support the exponent notation. In other words,
<code>4.2E10</code> is now a valid floating point value.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="versioning"><a class="anchor" href="#versioning"></a>Versioning</h2>
<div class="sectionbody">
<div class="paragraph">
<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>
</div>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">version</th>
<th class="tableblock halign-left valign-top">description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Major</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The major version <em>must</em> be bumped when backward incompatible changes
are introduced. This should rarely occur.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Minor</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Minor version increments occur when new, but backward compatible,
functionality is introduced.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Patch</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The patch version is incremented when bugs are fixed.</p></td>
</tr>
</tbody>
</table>
</div>
</div>
</article>
</main>
</div>
</div>
<footer class="grad grad--two flex-center pb-xlarge">
<div class="inner text-center z2 relative">
<h2 class="white py-small">Get started with Cassandra, fast.</h2>
<a id="footer-cta" href="/_/quickstart.html" class="btn btn--filled ma-medium">Quickstart Guide</a>
</div>
<div class="inner flex flex-distribute-items mt-xlarge z2 relative">
<div class="col-2">
<div id="footer-logo" class="logo logo--footer mb-medium"><img src="../../../../assets/img/logo-white-r.png" alt="Cassandra Logo"></div>
<p>Apache Cassandra<img src="../../../../assets/img/registered.svg" alt="®" style="width:18px;"> powers mission-critical deployments with improved performance and unparalleled levels of scale in the cloud.</p>
<div class="footer-social-icons">
<a href="https://twitter.com/cassandra?lang=en" target="_blank"><img src="../../../../assets/img/twitter-icon-circle-white.svg" alt="twitter icon" width="24"></a>
<a href="https://www.linkedin.com/company/apache-cassandra/" target="_blank"><img src="../../../../assets/img/LI-In-Bug.png" alt="linked-in icon" width="24"></a>
<a href="https://www.youtube.com/c/PlanetCassandra" target="_blank"><img src="../../../../assets/img/youtube-icon.png" alt="youtube icon" width="24"></a>
</div>
</div>
<div class="col-2 flex flex-center">
<ul class="columns-2">
<li class="mb-small"><a href="/">Home</a></li>
<li class="mb-small"><a href="/_/cassandra-basics.html">Cassandra Basics</a></li>
<li class="mb-small"><a href="/_/quickstart.html">Quickstart</a></li>
<li class="mb-small"><a href="/_/ecosystem.html">Ecosystem</a></li>
<li class="mb-small"><a href="/doc/latest/">Documentation</a></li>
<li class="mb-small"><a href="/_/community.html">Community</a></li>
<li class="mb-small"><a href="/_/case-studies.html">Case Studies</a></li>
<li class="mb-small"><a href="/_/resources.html">Resources</a></li>
<li class="mb-small"><a href="/_/blog.html">Blog</a></li>
</ul>
</div>
</div>
</footer>
<div class="lower-footer bg-white pa-medium">
<div class="flex flex-row flex-vert-center">
<div class="pr-medium"><img src="../../../../assets/img//feather-small.png" alt="ASF" width="20"></div>
<div class="pr-medium"><a href="http://www.apache.org/" target="_blank">Foundation</a></div>
<div class="pr-medium"><a href="https://www.apache.org/events/current-event.html" target="_blank">Events</a></div>
<div class="pr-medium"><a href="https://www.apache.org/licenses/" target="_blank">License</a></div>
<div class="pr-medium"><a href="https://www.apache.org/foundation/thanks" target="_blank">Thanks</a></div>
<div class="pr-medium"><a href="https://www.apache.org/security" target="_blank">Security</a></div>
<div class="pr-medium"><a href="https://privacy.apache.org/policies/privacy-policy-public.html" target="_blank">Privacy</a></div>
<div class="pr-medium"><a href="https://www.apache.org/foundation/sponsorship" target="_blank">Sponsorship</a></div>
</div>
<p class="my-medium">© 2009-<script>document.write(new Date().getFullYear())</script> <a href="https://apache.org" target="_blank">The Apache Software Foundation</a> under the terms of the Apache License 2.0. Apache, the Apache feather logo, Apache Cassandra, Cassandra, and the Cassandra logo, are either registered trademarks or trademarks of The Apache Software Foundation.</p>
</div>
<div id="fade" class="hidden"></div>
<div id="modal" class="hidden">
<div id="close-modal" class="cursor-pointer"><svg viewBox="0 0 24 24" width="24" height="24" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round" class="css-i6dzq1"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></div>
<div id="mod-content" class="vid-mod-content resp-container"></div>
</div>
<script src="../../../../assets/js/site.js"></script>
<script async src="../../../../assets/js/vendor/highlight.js"></script>
<script src="../../../../assets/js/vendor/lunr.js"></script>
<script src="../../../../assets/js/vendor/search.js" id="search-script" data-base-path="../../../.." data-page-path="/Cassandra/4.0/cassandra/cql/changes.html"></script>
<script async src="../../../../assets/../search-index.js"></script>
<script>
jQuery(function(){
var windowW = $(window).width();
$(document)
.on('click','.mobile-nav-icon',function(){
$('.main-nav').fadeIn();
})
.on('click','.main-nav',function(){
if(windowW <= 1000){
$(this).fadeOut();
}
})
.on('click','#version-toggle',function(){
$(this).toggleClass('active');
$(this).next().fadeToggle();
})
.on('click','#mobile-docs-nav-burger', function(){
$(this).toggleClass('active');
$('.docs-nav').toggleClass('active');
});
var url = window.location.pathname;
var isQuickstart = url.includes('quickstart.html');
if(isQuickstart){
var footerCTA = document.getElementById('footer-cta');
footerCTA.innerHTML = 'Get latest updates';
footerCTA.setAttribute('href', '/_/blog.html');
}
});
</script>
</div>
</body>
</html>