Skip to main content
Cassandra 3.0 is the floor here, and 2.x will not connect. The driver reads its schema from system_schema, which 2.x does not have. ScyllaDB is a separate entry in the database type list but the same driver, over the same CQL native protocol.

Quick setup

Click New Connection…, select Cassandra or ScyllaDB, enter host, port, and credentials, and connect. The Cassandra driver is not in the app. Picking Cassandra in the Choose a Database sheet offers the download before the form opens, and opening a saved Cassandra connection installs it without asking. Settings > Plugins > Browse > Cassandra Driver installs it up front. See Plugins.

Connection settings

There is no Keyspace field. Pick one in the sidebar after connecting, or put it in the URL path and import that URL. Later switches happen in place, with no reconnect, and the system keyspaces are filtered out of the list. Tabs already open are bound to their own keyspace and do not follow. See Tabs. There is no consistency level field either. The driver never sets one, so every statement runs at the DataStax C driver’s default of LOCAL_ONE.

Connection URLs

cql:// and scylla:// work too. See Connection URL Reference.

Amazon Keyspaces

Keyspaces authenticates with SigV4, not a password, so set Authentication to an AWS IAM mode and leave Username and Password empty.
1

Point at the regional endpoint

Host cassandra.{region}.amazonaws.com, port 9142.
2

Pick an IAM mode and enter the region

Access Key, Profile, or SSO. Profiles resolve from ~/.aws/config and ~/.aws/credentials, including credential_process and assumed roles.
3

Turn TLS on

Keyspaces refuses a plaintext connection. See AWS IAM Authentication.

Browsing and editing

Cassandra keyspace and tables in the sidebar with table data in the gridCassandra keyspace and tables in the sidebar with table data in the grid

Keyspace tables in the sidebar with the data grid

The structure view gives each column’s name, CQL type, a primary key flag set for partition key and clustering columns alike, and the table’s secondary indexes. Structure editing adds and drops columns; every other schema change goes in the CQL editor. In the grid, map, set, list, and tuple render as collections, a user-defined type as {field: value}, a duration as 1d2h30m, a float vector as a list of numbers, and blob as hex. CQL has no OFFSET, so a page is reached by reading forward from the first row. Next and Previous over pages already shown take one read each. Jumping straight to page 200 reads the 199 pages before it first. Rows arrive in token order, and a column header does not sort them: CQL orders rows only by clustering columns inside one partition. A result in the CQL editor sorts the rows it holds. Neither a table’s total nor a filtered total is counted on open. Count Exactly runs SELECT COUNT(*), which reads every partition whatever LIMIT it carries, so on a large table it can hit the 30 second request timeout.

Filters

A filter adds ALLOW FILTERING, so the server reads every partition to answer it unless the filter pins the whole partition key. The filter bar offers Match all only, because CQL has no OR, and Search All Rows does not appear in the find bar. A raw row goes into the WHERE clause as written, joined to the others with AND.

Editing

An edited value is sent as its column’s type, so it has to read as one: a number for int or decimal, a UUID for uuid, 0x… for blob. A timestamp takes the form the grid shows, the form cqlsh prints, a date alone, or milliseconds since 1970, and one with no zone is read as UTC. A value that does not parse is refused and nothing in the save is written. list, set, map, tuple, user-defined types and duration cannot be edited in the grid: write an UPDATE in the CQL editor. Each row in a save is written by its own statement, named by its whole primary key, so deleting several rows sends one DELETE each. Add Row writes INSERT … IF NOT EXISTS: a new row whose key is already taken is refused rather than written over the row that holds it. A primary key column cannot be edited in place. Delete the row and add it again with the new key. Results in the CQL editor are read-only. Open the table from the sidebar to edit its rows.

SSL/TLS

The default is Disabled, and there is no opportunistic TLS here, so Preferred behaves exactly like Required. Both verifying modes need a CA Certificate path, and refuse to connect without one rather than falling back to the system roots. For mutual TLS set the client certificate and key paths, with the key’s passphrase in Key Passphrase. See SSL/TLS.

Limitations

  • A page far into a large table is slow, because every row before it is read first. Filter the table down, or query it in the CQL editor with a WHERE on the partition key.
  • Counter columns cannot be set with a plain UPDATE. The grid will edit one and the server rejects the statement it generates. Use UPDATE … SET c = c + 1 in the CQL editor.
  • Materialized views and UDTs do not appear in the sidebar. Query system_schema in the CQL editor to see them. UDFs and UDAs are listed under Functions; see Procedures, functions, and triggers.
  • The DDL tab reconstructs CREATE TABLE from the column list, so table options (compaction, compression, gc_grace_seconds), clustering order, and the split between partition and clustering key are all missing from it. Read the real definition with DESCRIBE TABLE in cqlsh.
  • DataStax Astra DB does not connect. The Secure Connect Bundle it requires cannot be loaded, and there is no way around it.
  • Connect and request timeouts are fixed at 10 and 30 seconds. Neither the app-wide query timeout nor a multi-DC policy reaches this driver.

Troubleshooting

Connection refused: Check Cassandra is running with nodetool status, that port 9042 matches cassandra.yaml, and that rpc_address and listen_address are reachable from your Mac. Authentication fails: Verify the credentials and check authenticator: PasswordAuthenticator in cassandra.yaml. The default superuser is cassandra / cassandra. Read timeout: Put the full partition key in the WHERE clause, add a LIMIT, and check cluster health with nodetool.