/** * Create a new secondary index. * * @param as - the aerospike cluster to connect to. * @param err - the error is populated if the return value is not AEROSPIKE_OK. * @param policy - the policy to use for this operation. If NULL, then the default policy will be used. * @param ns - the namespace to be indexed * @param set - the set to be indexed * @param bin - the bin to be indexed * @param type - the type of the bin to be indexed * @param name - the name of the index * * @return AEROSPIKE_OK if successful. AEROSPIKE_ERR_INDEX_FOUND if the index already exists. Otherwise an error. */ static as_status aerospike_index_create( aerospike * as, as_error * err, const as_policy_info * policy, const char * ns, const char * set, const char * bin, const char * type, const char * name) { as_error_reset(err); char * response = NULL; int rc = citrusleaf_secondary_index_create(as->cluster, ns, set, name, bin, type, &response); switch ( rc ) { case CITRUSLEAF_OK: as_error_reset(err); break; case CITRUSLEAF_FAIL_INDEX_FOUND: as_error_update(err, AEROSPIKE_ERR_INDEX_FOUND, "Index already exists"); break; default: as_error_update(err, AEROSPIKE_ERR_INDEX, "Failure creating index: %s", response); break; } if ( response != NULL ) { free(response); response = NULL; } return err->code; }
/** * Create a new secondary index. * * @param as - the aerospike cluster to connect to. * @param err - the error is populated if the return value is not AEROSPIKE_OK. * @param policy - the policy to use for this operation. If NULL, then the default policy will be used. * @param ns - the namespace to be indexed * @param set - the set to be indexed * @param bin - the bin to be indexed * @param type - the type of the bin to be indexed * @param name - the name of the index * * @return AEROSPIKE_OK if successful or index already exists. Otherwise an error. */ static as_status aerospike_index_create( aerospike * as, as_error * err, const as_policy_info * policy, const char * ns, const char * set, const char * bin, const char * type, const char * name) { as_error_reset(err); char * response = NULL; int rc = citrusleaf_secondary_index_create(as->cluster, ns, set, name, bin, type, &response); switch ( rc ) { case CITRUSLEAF_OK: case CITRUSLEAF_FAIL_INDEX_FOUND: break; default: as_strncpy(err->message, response, sizeof(err->message)); as_error_fromrc(err, rc); break; } free(response); return err->code; }