All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Typedefs | Functions
Query Operations (3.0 only)

Description

The Aerospike Query Operations provide the ability to query data in the Aerospike database. The queries can only be performed on secondary indexes, which have been created in the database. To scan all the records in the database, then you must use the Scan Operations.

Usage

Before you can execute a query, you first need to build a query using as_query. See as_query for details on building queries.

Once you have a query defined, then you can execute the query :

When aerospike_query_foreach() is executed, it will process the results and create records on the stack. Because the records are on the stack, they will only be available within the context of the callback function.

Walk-through

First, we define a query using as_query. The query will be for the "test" namespace and "demo" set. We will add a where predicate on "bin2", on which we have already created a secondary index. Also, we will limit the results to 100 records.

as_query query;
as_query_init(&query, "test", "demo");
as_query_limit(&query, 100);
as_query_where(&query, "bin2", integer_equals(100));

Now that we have a query defined, we want to execute it using aerospike_query_foreach().

if ( aerospike_query_foreach(&as, &err, NULL, &query, callback, NULL) != AEROSPIKE_OK ) {
fprintf(stderr, "error(%d) %s at [%s:%d]", err.code, err.message, err.file, err.line);
}

The callback provided to the function above is implemented as:

bool callback(const as_val * val, void * udata) {
if ( !rec ) return false;
fprintf("record contains %d bins", as_record_numbins(rec));
return true;
}

An as_query is simply a query definition, so it does not contain any state, allowing it to be reused for multiple query operations.

When you are finished with the query, you should destroy the resources allocated to it:

+ Collaboration diagram for Query Operations (3.0 only):

Typedefs

typedef bool(* aerospike_query_foreach_callback )(const as_val *val, void *udata)
 

Functions

as_status aerospike_query_foreach (aerospike *as, as_error *err, const as_policy_query *policy, const as_query *query, aerospike_query_foreach_callback callback, void *udata)
 

Typedef Documentation

typedef bool(* aerospike_query_foreach_callback)(const as_val *val, void *udata)

This callback will be called for each value or record returned from a query.

The aerospike_query_foreach() function accepts this callback.

bool my_callback(as_val * val, void * udata) {
return true;
}
Parameters
valThe value received from the query.
udataUser-data provided to the calling function.
Returns
true to continue to the next value. Otherwise, iteration will end.

Definition at line 127 of file aerospike_query.h.

Function Documentation

as_status aerospike_query_foreach ( aerospike as,
as_error err,
const as_policy_query policy,
const as_query query,
aerospike_query_foreach_callback  callback,
void *  udata 
)

Execute a query and call the callback function for each result item.

as_query query;
as_query_init(&query, "test", "demo");
as_query_select(&query, "bin1");
as_query_where(&query, "bin2", integer_equals(100));
if ( aerospike_query_foreach(&as, &err, NULL, &query, callback, NULL) != AEROSPIKE_OK ) {
fprintf(stderr, "error(%d) %s at [%s:%d]", err.code, err.message, err.file, err.line);
}
Parameters
asThe aerospike instance to use for this operation.
errThe as_error to be populated if an error occurs.
policyThe policy to use for this operation. If NULL, then the default policy will be used.
queryThe query to execute against the cluster.
callbackThe callback function to call for each result value.
udataUser-data to be passed to the callback.
Returns
AEROSPIKE_OK on success, otherwise an error.