Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Cassandra Wiki" for 
change notification.

The "API" page has been changed by JorisvanderWel:
http://wiki.apache.org/cassandra/API?action=diff&rev1=28&rev2=29

Comment:
Moved API10 to here

- ## page was renamed from API07
- ## page was copied from API
  == Overview ==
- The Cassandra Thrift API changed between [[API03|0.3]], [[API04|0.4]], 
[[API05|0.5]], [[API06|0.6]], and 0.7; this document explains the 0.7 version.
+ The Cassandra Thrift API changed between [[API03|0.3]], [[API04|0.4]], 
[[API05|0.5]], [[API06|0.6]], and [[API07|0.7]]; this document explains the 1.0 
version.
  
  Cassandra's client API is built entirely on top of Thrift. It should be noted 
that these documents mention default values, but these are not generated in all 
of the languages that Thrift supports.  Full examples of using Cassandra from 
Thrift, including setup boilerplate, are found on ThriftExamples.  Higher-level 
clients are linked from ClientOptions.
  
@@ -24, +22 @@

   TApplicationException:: Internal server error or invalid Thrift method 
(possible if you are using an older version of a Thrift client with a newer 
build of the Cassandra server).
   AuthenticationException:: Invalid authentication request (user does not 
exist or credentials invalid)
   AuthorizationException:: Invalid authorization request (user does not have 
access to keyspace)
+  SchemaDisagreementException:: Schemas are not in agreement across all nodes
  
  == Structures ==
  === ConsistencyLevel ===
@@ -35, +34 @@

  ||'''Level''' ||'''Behavior''' ||
  ||`ANY` ||Ensure that the write has been written to at least 1 node, 
including HintedHandoff recipients. ||
  ||`ONE` ||Ensure that the write has been written to at least 1 replica's 
commit log and memory table before responding to the client. ||
+ ||`TWO` ||Ensure that the write has been written to at least 2 replica's 
before responding to the client. ||
+ ||`THREE` ||Ensure that the write has been written to at least 3 replica's 
before responding to the client. ||
  ||`QUORUM` ||Ensure that the write has been written to `N / 2 + 1` replicas 
before responding to the client. ||
  ||`LOCAL_QUORUM` ||Ensure that the write has been written to 
`<ReplicationFactor>` / 2 + 1 nodes, within the local datacenter (requires 
`NetworkTopologyStrategy`) ||
  ||`EACH_QUORUM` ||Ensure that the write has been written to 
`<ReplicationFactor>` / 2 + 1 nodes in each datacenter (requires 
`NetworkTopologyStrategy`) ||
@@ -45, +46 @@

  ||'''Level''' ||'''Behavior''' ||
  ||`ANY` ||Not supported. You probably want ONE instead. ||
  ||`ONE` ||Will return the record returned by the first replica to respond. A 
consistency check is always done in a background thread to fix any consistency 
issues when `ConsistencyLevel.ONE` is used. This means subsequent calls will 
have correct data even if the initial read gets an older value.  (This is 
called ReadRepair) ||
+ ||`TWO` ||Will query 2 replicas and return the record with the most recent 
timestamp.  Again, the remaining replicas will be checked in the background. ||
+ ||`THREE` ||Will query 2 replicas and return the record with the most recent 
timestamp. ||
  ||`QUORUM` ||Will query all replicas and return the record with the most 
recent timestamp once it has at least a majority of replicas (`N / 2 + 1`) 
reported.  Again, the remaining replicas will be checked in the background. ||
  ||`LOCAL_QUORUM` ||Returns the record with the most recent timestamp once a 
majority of replicas within the local datacenter have replied. ||
  ||`EACH_QUORUM` ||Returns the record with the most recent timestamp once a 
majority of replicas within each datacenter have replied. ||
@@ -60, +63 @@

  ||'''Attribute''' ||'''Type''' ||'''Default''' ||'''Required''' 
||'''Description''' ||
  ||`column` ||`Column` ||n/a ||N ||The `Column` if this `ColumnOrSuperColumn` 
is aggregating a `Column`. ||
  ||`super_column` ||`SuperColumn` ||n/a ||N ||The `SuperColumn` if this 
`ColumnOrSuperColumn` is aggregating a `SuperColumn` ||
- 
+ ||`counter_column` ||`CounterColumn` ||n/a ||N ||The `CounterColumn` if this 
`ColumnOrSuperColumn` is aggregating a `CounterColumn`. ||
+ ||`counter_super_column` ||`CounterSuperColumn` ||n/a ||N ||The 
`CounterSuperColumn` if this `ColumnOrSuperColumn` is aggregating a 
`CounterSuperColumn` ||
  
  
  
  === Column ===
- The `Column` is a triplet of a name, value and timestamp. As described above, 
`Column` names are unique within a row. Timestamps are arbitrary - they can be 
any integer you specify, however they must be consistent across your 
application. It is recommended to use a timestamp value with a fine 
granularity, such as milliseconds since the UNIX epoch. See DataModel for more 
information.
+ The `Column` is a triplet of a name, value and timestamp. As described above, 
`Column` names are unique within a row. Timestamps are arbitrary - they can be 
any integer you specify, however they must be consistent across your 
application. It is recommended to use a timestamp value with a fine 
granularity, such as milliseconds since the UNIX epoch (the CLI uses 
microseconds). See DataModel for more information.
  ||'''Attribute''' ||'''Type''' ||'''Default''' ||'''Required''' 
||'''Description''' ||
  ||`name` ||`binary` ||n/a ||Y ||The name of the `Column`. ||
  ||`value` ||`binary` ||n/a ||Y ||The value of the `Column`. ||
  ||`timestamp` ||`i64` ||n/a ||Y ||The timestamp of the `Column`. ||
- 
+ ||`ttl` ||`i32` ||n/a ||N ||An optional, positive delay (in seconds) after 
which the `Column` will be automatically deleted. ||
  
  
  
@@ -80, +84 @@

  ||`name` ||`binary` ||n/a ||Y ||The name of the `SuperColumn`. ||
  ||`columns` ||`list<Column>` ||n/a ||Y ||The `Columns` within the 
`SuperColumn`. ||
  
+ 
+ 
+ === CounterColumn ===
+ A `CounterColumn` only allows for addition and subtraction. See 
[[Counters|Counters]] for more information.
+ ||'''Attribute''' ||'''Type''' ||'''Default''' ||'''Required''' 
||'''Description''' ||
+ ||`name` ||`binary` ||n/a ||Y ||The name of the `Column`. ||
+ ||`value` ||`binary` ||n/a ||Y ||The value of the `Column`. ||
+ 
+ 
+ 
+ === CounterSuperColumn ===
+ A `CounterSuperColumn` contains no data itself, but instead stores another 
level of `CounterColumn` below the key.
+ ||'''Attribute''' ||'''Type''' ||'''Default''' ||'''Required''' 
||'''Description''' ||
+ ||`name` ||`binary` ||n/a ||Y ||The name of the `SuperColumn`. ||
+ ||`columns` ||`list<CounterColumn>` ||n/a ||Y ||The `CounterColumns` within 
the `CounterSuperColumn`. ||
  
  
  
@@ -203, +222 @@

  === Deletion ===
  A `Deletion` encapsulates an operation that will delete all columns less than 
the specified `timestamp` and matching the `predicate`. If `super_column` is 
specified, the `Deletion` will operate on columns within the `SuperColumn` - 
otherwise it will operate on columns in the top-level of the key.
  ||'''Attribute''' ||'''Type''' ||'''Default''' ||'''Required''' 
||'''Description''' ||
- ||`timestamp` ||`i64` ||n/a ||Y ||The timestamp of the delete operation. ||
+ ||`timestamp` ||`i64` ||n/a ||N ||The timestamp of the delete operation. Must 
only be unset in the case of counter deletions. ||
  ||`super_column` ||`binary` ||n/a ||N ||The super column to delete the 
column(s) from. ||
  ||`predicate` ||`SlicePredicate` ||n/a ||N ||A predicate to match the 
column(s) to be deleted from the key/super column. ||
  
  
- 
- 
  === AuthenticationRequest ===
  A structure that encapsulates a request for the connection to be 
authenticated. The authentication credentials are arbitrary - this structure 
simply provides a mapping of credential name to credential value.
  ||'''Attribute''' ||'''Type''' ||'''Default''' ||'''Required''' 
||'''Description''' ||
  ||`credentials` ||`map<string, string>` ||n/a ||Y ||A map of named 
credentials. ||
  
+ === IndexType ===
+ ||'''Type''' ||'''Behavior''' ||
+ ||KEYS ||A `ColumnFamily` backed index. ||
+ 
+ === ColumnDef ===
+ Describes a column in a column family.
+ ||'''Attribute''' ||'''Type''' ||'''Default''' ||'''Required''' 
||'''Description''' ||
+ ||`name` ||`binary` ||n/a ||Y ||The column name ||
+ ||`validation_class` ||`string` ||n/a ||Y ||The validation_class of the 
column as a class name ||
+ ||`index_type` ||`IndexType` ||n/a ||N ||The type of index ||
+ ||`index_name` ||`string` ||n/a ||N ||Name for the index. Both an index name 
and type must be specified. ||
+ 
+ 
+ === CfDef ===
+ Describes a column family
+ ||'''Attribute''' ||'''Type''' ||'''Default''' ||'''Required''' ||
+ ||`keyspace` ||`string` ||n/a ||Y ||
+ ||`name` ||`string` ||n/a ||Y ||
+ ||`column_type` ||`string` ||`Standard` ||N ||
+ ||`comparator_type` ||`string` ||`BytesType` ||N ||
+ ||`subcomparator_type` ||`string` ||n/a ||N ||
+ ||`comment` ||`string` ||n/a ||N ||
+ ||`row_cache_size` ||`double` ||0 ||N ||
+ ||`key_cache_size` ||`double` ||200000 ||N ||
+ ||`read_repair_chance` ||`double` ||1.0||N ||
+ ||`column_metadata` ||`list<ColumnDef>` ||n/a ||N ||
+ ||`gc_grace_seconds` ||`i32` ||n/a ||N ||
+ ||`default_validation_class` ||`string` ||n/a ||N ||
+ ||`id` ||`i32` ||n/a ||N ||
+ ||`min_compaction_threshold` ||`i32` ||n/a ||N ||
+ ||`max_compaction_threshold` ||`i32` ||n/a ||N ||
+ ||`row_cache_save_period_in_seconds` ||`i32` ||n/a ||N ||
+ ||`key_cache_save_period_in_seconds` ||`i32` ||n/a ||N ||
+ ||`memtable_flush_after_mins` ||`i32` ||n/a ||N ||
+ ||`memtable_throughput_in_mb` ||`i32` ||n/a ||N ||
+ ||`memtable_operations_in_millions` ||`double` ||n/a ||N ||
+ ||`replicate_on_write` ||`bool` ||n/a ||N ||
+ ||`merge_shards_chance` ||`double` ||n/a ||N ||
+ ||`key_validation_class` ||`string` ||n/a ||N ||
+ ||`row_cache_provider` ||`string` 
||`org.apache.cassandra.cache.ConcurrentLinkedHashCacheProvider` ||N ||
+ ||`key_alias` ||`binary` ||n/a ||N ||
+ 
+ === KsDef ===
+ Describes a keyspace.
+ ||'''Attribute''' ||'''Type''' ||'''Default''' ||'''Required''' ||
+ ||`name` ||`string` ||n/a ||Y ||
+ ||`strategy_class` ||`string` ||n/a ||Y ||
+ ||`strategy_options` ||`map<string,string>` ||n/a ||N ||
+ ||`cf_defs` ||`list<CfDef>` ||n/a ||Y ||
+ ||`durable_writes` ||`bool` ||true ||N ||
+ 
+ 
+ === Compression ===
+ ||'''Type''' ||
+ ||`GZIP` ||
+ ||`NONE` ||
+ 
+ === CqlResultType ===
+ ||'''Type''' ||
+ ||`ROWS` ||
+ ||`VOID` ||
+ ||`INT` ||
+ 
+ 
+ === CqlRow ===
+ Row returned from a CQL query.
+ ||'''Attribute''' ||'''Type''' ||'''Default''' ||'''Required''' ||
+ ||`key` ||`binary` ||n/a ||Y ||
+ ||`columns` ||`list<Column>` ||n/a ||Y ||
+ 
+ 
+ === CqlRow ===
+ Result returned from a CQL query.
+ ||'''Attribute''' ||'''Type''' ||'''Default''' ||'''Required''' ||
+ ||`type` ||`CqlResultType` ||n/a ||Y ||
+ ||`rows` ||`list<CqlRow>` ||n/a ||N ||
+ ||`num` ||`i32` ||n/a ||N ||
  
  
  
  == Method calls ==
  === login ===
-  . `void login(keyspace, auth_request)`
+  . `void login(AuthenticationRequest auth_request)`
  
- Authenticates with the cluster for operations on the specified keyspace using 
the specified `AuthenticationRequest` credentials. Throws 
`AuthenticationException` if the credentials are invalid or 
`AuthorizationException` if the credentials are valid, but not for the 
specified keyspace.
+ Authenticates with the cluster using the specified `AuthenticationRequest` 
credentials. Throws `AuthenticationException` if the credentials are invalid or 
`AuthorizationException` if the credentials are valid, but not for the 
specified keyspace.
+ 
+ === set_keyspace ===
+  . `void set_keyspace(string keyspace)`
+ 
+ Set the keyspace to use for subsequent requests. Throws 
InvalidRequestException for an unknown keyspace.
  
  === get ===
-  . `ColumnOrSuperColumn get(key, column_path, consistency_level)`
+  . `ColumnOrSuperColumn get(binary key, ColumnPath column_path, 
ConsistencyLevel consistency_level)`
  
  Get the `Column` or `SuperColumn` at the given `column_path`.  If no value is 
present, `NotFoundException` is thrown.  (This is the only method that can 
throw an exception under non-failure conditions.)
  
  === get_slice ===
-  . `list<ColumnOrSuperColumn> get_slice(key, column_parent, predicate, 
consistency_level)`
+  . `list<ColumnOrSuperColumn> get_slice(binary key, ColumnParent 
column_parent, SlicePredicate predicate, ConsistencyLevel consistency_level)`
  
  Get the group of columns contained by `column_parent` (either a 
`ColumnFamily` name or a `ColumnFamily/SuperColumn` name pair) specified by the 
given `SlicePredicate` struct.
  
  === multiget_slice ===
-  . `map<string,list<ColumnOrSuperColumn>> multiget_slice(keys, column_parent, 
predicate, consistency_level)`
+  . `map<string,list<ColumnOrSuperColumn>> multiget_slice(list<binary> keys, 
ColumnParent column_parent, SlicePredicate predicate, ConsistencyLevel 
consistency_level)`
  
  Retrieves slices for `column_parent` and `predicate` on each of the given 
keys in parallel. Keys are a `list<string> of the keys to get slices for.
  
  This is similar to `get_range_slices`, except it operates on a set of 
non-contiguous keys instead of a range of keys.
  
  === get_count ===
-  . `i32 get_count(key, column_parent, predicate, consistency_level)`
+  . `i32 get_count(binary key, ColumnParent column_parent, SlicePredicate 
predicate, ConsistencyLevel consistency_level)`
  
  Counts the columns present in `column_parent` within the `predicate.`
  
  The method is not O(1). It takes all the columns from disk to calculate the 
answer. The only benefit of the method is that you do not need to pull all the 
columns over Thrift interface to count them.
  
  === multiget_count ===
-  . `map<string, i32> multiget_count(keys, column_parent, predicate, 
consistency_level)`
+  . `map<string, i32> multiget_count(list<binary> keys, ColumnParent 
column_parent, SlicePredicate predicate, ConsistencyLevel consistency_level)`
  
  A combination of `multiget_slice `and` get_count.`
  
  === get_range_slices ===
-  . `list<KeySlice> get_range_slices(column_parent, predicate, range, 
consistency_level)`
+  . `list<KeySlice> get_range_slices(ColumnParent column_parent, 
SlicePredicate predicate, KeyRange range, ConsistencyLevel consistency_level)`
  
  Replaces `get_range_slice`. Returns a list of slices for the keys within the 
specified `KeyRange`. Unlike get_key_range, this applies the given predicate to 
all keys in the range, not just those with undeleted matching data. Note that 
when using RandomPartitioner, keys are stored in the order of their MD5 hash, 
making it impossible to get a meaningful range of keys between two endpoints.
  
  === get_indexed_slices ===
-  . `list<KeySlice> get_indexed_slices(column_parent, index_clause, predicate, 
consistency_level)`
+  . `list<KeySlice> get_indexed_slices(ColumnParent column_parent, IndexClause 
index_clause, SlicePredicate predicate, ConsistencyLevel consistency_level)`
  
  Like `get_range_slices`, returns a list of slices, but uses `IndexClause` 
instead of `KeyRange`. To use this method, the underlying `ColumnFamily` of the 
`ColumnParent` must have been configured with a column_metadata attribute, 
specifying at least the name and index_type attributes. See `CfDef` and 
`ColumnDef` above for the list of attributes. Note: the `IndexClause` must 
contain one `IndexExpression` with an `EQ` operator on a configured index 
column. Other `IndexExpression` structs may be added to the `IndexClause` for 
non-indexed columns to further refine the results of the `EQ` expression.
  
  === insert ===
-  . `insert(key, column_path, column, consistency_level)`
+  . `insert(binary key, ColumnParent column_parent, Column column, 
ConsistencyLevel consistency_level)`
  
- Insert a `Column` consisting of (`name`, `value`, `timestamp`) at the given 
`column_path.column_family` and optional `column_path.super_column`.  Note that 
a !SuperColumn cannot directly contain binary values -- it can only contain 
sub-Columns.  Only one sub-Column may be inserted at a time, as well.
+ Insert a `Column` consisting of (`name`, `value`, `timestamp`, `ttl`) at the 
given ColumnParent.  Note that a !SuperColumn cannot directly contain binary 
values -- it can only contain sub-Columns.  Only one sub-Column may be inserted 
at a time, as well.
  
  === batch_mutate ===
-  . `batch_mutate(mutation_map, consistency_level)`
+  . `batch_mutate(map<binary, map<string, list<Mutation>>> mutation_map, 
ConsistencyLevel consistency_level)`
  
  Executes the specified mutations on the keyspace. `mutation_map` is a 
`map<string, map<string, vector<Mutation>>>`; the outer map maps the key to the 
inner map, which maps the column family to the `Mutation`; can be read as: 
`map<key : string, map<column_family : string, vector<Mutation>>>`.  To be more 
specific, the outer map key is a row key, the inner map key is the column 
family name.
  
  A `Mutation` specifies either columns to insert or columns to delete. See 
`Mutation` and `Deletion` above for more details.
  
+ === add ===
+  . `add(binary key, ColumnParent column_parent, CounterColumn column, 
ConsistencyLevel consistency_level)`
+ 
+ Increments a `CounterColumn` consisting of (`name`, `value`) at the given 
ColumnParent.  Note that a !SuperColumn cannot directly contain binary values 
-- it can only contain sub-Columns.
+ 
  === remove ===
-  . `remove(key, column_path, timestamp, consistency_level)`
+  . `remove(binary key, ColumnPath column_path, i64 timestamp, 
ConsistencyLevel consistency_level)`
  
  Remove data from the row specified by `key` at the granularity specified by 
`column_path`, and the given `timestamp`.  Note that all the values in 
`column_path` besides `column_path.column_family` are truly optional: you can 
remove the entire row by just specifying the !ColumnFamily, or you can remove a 
!SuperColumn or a single Column by specifying those levels too. Note that the 
`timestamp` is needed, so that if the commands are replayed in a different 
order on different nodes, the same result is produced.
+ 
+ === remove_counter ===
+  . `remove_counter(binary key, ColumnPath column_path, ConsistencyLevel 
consistency_level)`
+ 
+ Remove a counter from the row specified by `key` at the granularity specified 
by `column_path`.  Note that all the values in `column_path` besides 
`column_path.column_family` are truly optional: you can remove the entire row 
by just specifying the !ColumnFamily, or you can remove a !SuperColumn or a 
single Column by specifying those levels too. Note that counters have limited 
support for deletes: if you remove a counter, you must wait to issue any 
following update until the delete has reached all the nodes and all of them 
have been fully compacted.
  
  === truncate ===
   . `truncate(string column_family)`
@@ -290, +399 @@

  
  Gets the name of the cluster.
  
+ === describe_schema_versions ===
+  . `map<string, list<string>> describe_schema_versions`
+ 
+ For each schema version present in the cluster, returns a list of nodes at 
that version. Hosts that do not respond will be under the key 
DatabaseDescriptor.INITIAL_VERSION. The cluster is all on the same version if 
the size of the map is 1. 
+ 
  === describe_keyspace ===
   . `KsDef describe_keyspace(string keyspace)`
  
@@ -340, +454 @@

  
  Drops a keyspace. Creates a snapshot and then submits a 'graveyard' 
compaction during which the abandoned files will be deleted. Returns the new 
schema version ID.
  
+ === system_update_keyspace ===
+  . `string system_update_keyspace(KsDef ks_def)`
+ 
+ Updates properties of a keyspace. returns the new schema id.
+ 
+ === system_update_column_family ===
+  . `string system_update_column_family(CfDef cf_def)`
+ 
+ === execute_cql_query ===
+  .  `CqlResult execute_cql_query(binary query, Compression compression)`
+ 
+ Executes a CQL (Cassandra Query Language) statement and returns a CqlResult 
containing the results.
+ Throws InvalidRequestException, UnavailableException, TimedOutException, 
SchemaDisagreementException.
+ 
  == Examples ==
  [[http://wiki.apache.org/cassandra/ClientExamples|There are a few examples on 
this page over here.]]
  

Reply via email to