Was this page helpful?
A session can be initially connected using a supplied keyspace.
Performance Tip: An application should create a single session object per keyspace as a session object is designed to be created once, reused, and shared by multiple threads within the application.
CassSession* session = cass_session_new();
CassCluster* cluster = cass_cluster_new();
/* Configure cluster */
CassFuture* connect_future
= cass_session_connect_keyspace(session, cluster, "keyspace1");
/* Handle connect future */
cass_future_free(connect_future);
cass_session_free(session);
cass_cluster_free(cluster);
You can specify a keyspace to change to by executing a USE
statement on a connection session object.
void use_keyspace(CassSession* session) {
CassStatement* use_statement
= cass_statement_new("USE keyspace1", 0);
CassFuture* use_future
= cass_session_execute(session, use_statement);
/* Check future result... */
cass_statement_free(use_statement);
cass_future_free(use_future);
}
Be very careful though: if the session is shared by multiple threads, switching the keyspace at runtime could easily cause unexpected query failures.
It is possible to interact with multiple keyspaces using a single session object by fully qualifying the table names in your queries e.g. keyspace_name.table_name
.
SELECT * FROM keyspace_name.table_name WHERE ...;
INSERT INTO keyspace_name.table_name (...) VALUES (...);
It is also possible to create keyspaces and tables by executing CQL using a session object.
CREATE KEYSPACE cpp_driver
WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 1 };
CREATE TABLE cpp_driver.contributers (
lastname text,
firstname test,
company text,
website text,
since timestamp,
last_activity timestamp
PRIMARY KEY(lastname));
Was this page helpful?