void insert_records_in_thread_pool(const vector<int>& indices) { // ThreadPool thread_pool(2); vector<string> index_names; for (auto idx : indices) { string index_name = "index" + lexical_cast<string>(idx); index_names.push_back(index_name); } insert_records(index_names); // thread_pool.add_task(std::bind(insert_records, index_name)); // thread_pool.stop(); }
int main(int argc, char* argv[]) { // Parse command line arguments. if (! example_get_opts(argc, argv, EXAMPLE_MULTI_KEY_OPTS)) { exit(-1); } // Connect to the aerospike database cluster. aerospike as; example_connect_to_aerospike(&as); // Start clean. example_remove_test_records(&as); if (! insert_records(&as)) { cleanup(&as); exit(-1); } if (! example_read_test_records(&as)) { cleanup(&as); exit(-1); } as_error err; // Specify the namespace and set to use during the scan. as_scan scan; as_scan_init(&scan, g_namespace, g_set); LOG("starting scan all ..."); // Do the scan. This call blocks while the scan is running - callbacks are // made in the scope of this call. if (aerospike_scan_foreach(&as, &err, NULL, &scan, scan_cb, NULL) != AEROSPIKE_OK) { LOG("aerospike_scan_foreach() returned %d - %s", err.code, err.message); as_scan_destroy(&scan); cleanup(&as); exit(-1); } LOG("... scan all completed"); // Now specify that only two bins are to be returned by the scan. The first // ten records do not have these two bins, so they should not be returned by // the scan. The remaining records should be returned without test-bin-1. as_scan_select_inita(&scan, 2); as_scan_select(&scan, "test-bin-2"); as_scan_select(&scan, "test-bin-3"); LOG("starting scan with select ..."); // Do the scan. This call blocks while the scan is running - callbacks are // made in the scope of this call. if (aerospike_scan_foreach(&as, &err, NULL, &scan, scan_cb, NULL) != AEROSPIKE_OK) { LOG("aerospike_scan_foreach() returned %d - %s", err.code, err.message); as_scan_destroy(&scan); cleanup(&as); exit(-1); } LOG("... scan with select completed"); // Destroy the as_scan object. as_scan_destroy(&scan); // Cleanup and disconnect from the database cluster. cleanup(&as); LOG("standard scan example successfully completed"); return 0; }
int main(int argc, char* argv[]) { // Parse command line arguments. if (! example_get_opts(argc, argv, EXAMPLE_MULTI_KEY_OPTS)) { exit(-1); } // Connect to the aerospike database cluster. aerospike as; example_connect_to_aerospike_with_udf_config(&as, UDF_USER_PATH); // Start clean. example_remove_test_records(&as); example_remove_index(&as, TEST_INDEX_NAME); // Register the UDF in the database cluster. if (! example_register_udf(&as, UDF_FILE_PATH)) { example_cleanup(&as); exit(-1); } // Create a numeric secondary index on test-bin. if (! example_create_integer_index(&as, "test-bin", TEST_INDEX_NAME)) { cleanup(&as); exit(-1); } if (! insert_records(&as)) { cleanup(&as); exit(-1); } if (! example_read_test_records(&as)) { cleanup(&as); exit(-1); } as_error err; // Create an as_query object. as_query query; as_query_init(&query, g_namespace, g_set); // Generate an as_query.where condition. Note that as_query_destroy() takes // care of destroying all the query's member objects if necessary. However // using as_query_where_inita() does avoid internal heap usage. as_query_where_inita(&query, 1); as_query_where(&query, "test-bin", as_integer_range(1, 10)); // Specify the UDF to use on the resulting stream. as_query_apply(&query, UDF_MODULE, "sum_test_bin", NULL); LOG("executing map-reduce query: where test-bin = 1 ... 10"); // Execute the query. This call blocks - callbacks are made in the scope of // this call. if (aerospike_query_foreach(&as, &err, NULL, &query, query_cb, NULL) != AEROSPIKE_OK) { LOG("aerospike_query_foreach() returned %d - %s", err.code, err.message); as_query_destroy(&query); cleanup(&as); exit(-1); } LOG("map-reduce query executed"); // Reuse the as_query object for another query. as_query_destroy(&query); as_query_init(&query, g_namespace, g_set); // Generate an as_query.where condition. as_query_where_inita(&query, 1); as_query_where(&query, "test-bin", as_integer_range(1, 10)); // Specify another UDF to use on the resulting stream. Like the previous UDF // it sums the test-bin values that satisfy the where condition, but does so // in a different, more efficient manner (see query_udf.lua). as_query_apply(&query, UDF_MODULE, "sum_test_bin_2", NULL); LOG("executing aggregate-reduce query: where test-bin = 1 ... 10"); // Execute the query. This call blocks - callbacks are made in the scope of // this call. if (aerospike_query_foreach(&as, &err, NULL, &query, query_cb, NULL) != AEROSPIKE_OK) { LOG("aerospike_query_foreach() returned %d - %s", err.code, err.message); as_query_destroy(&query); cleanup(&as); exit(-1); } LOG("aggregate-reduce query executed"); // Reuse the as_query object for another query. as_query_destroy(&query); as_query_init(&query, g_namespace, g_set); // Generate an as_query.where condition. as_query_where_inita(&query, 1); as_query_where(&query, "test-bin", as_integer_range(1, 10)); // Specify another UDF to use on the resulting stream. Like the previous // UDFs it sums test-bin values that satisfy the where condition, but first // applies a filter to sum only even values (see query_udf.lua). as_query_apply(&query, UDF_MODULE, "sum_test_bin_even", NULL); LOG("executing filter-aggregate-reduce query: where test-bin = 1 ... 10"); // Execute the query. This call blocks - callbacks are made in the scope of // this call. if (aerospike_query_foreach(&as, &err, NULL, &query, query_cb, NULL) != AEROSPIKE_OK) { LOG("aerospike_query_foreach() returned %d - %s", err.code, err.message); as_query_destroy(&query); cleanup(&as); exit(-1); } LOG("filter-aggregate-reduce query executed"); // Reuse the as_query object for another query. as_query_destroy(&query); as_query_init(&query, g_namespace, g_set); // No as_query.where condition in this case, so we include everything. // Specify another UDF to use on the resulting stream. This UDF operates on // the numbers-bin (string) values, and demonstrates a case where the value // returned by the query callback is an as_map (instead of an as_integer). as_query_apply(&query, UDF_MODULE, "count_numbers", NULL); LOG("executing numbers aggregate-reduce query: all records"); // Execute the query. This call blocks - callbacks are made in the scope of // this call. if (aerospike_query_foreach(&as, &err, NULL, &query, query_cb_map, NULL) != AEROSPIKE_OK) { LOG("aerospike_query_foreach() returned %d - %s", err.code, err.message); as_query_destroy(&query); cleanup(&as); exit(-1); } LOG("numbers aggregate-reduce query executed"); as_query_destroy(&query); // Cleanup and disconnect from the database cluster. cleanup(&as); LOG("aggregate query example successfully completed"); return 0; }
/** * \brief Inserts records into the index with given name. * \param index_name the name of index. */ Status insert_records(const string &index_name) { vector<string> names; names.push_back(index_name); return insert_records(names); }
int main(int argc, char* argv[]) { // Parse command line arguments. if (! example_get_opts(argc, argv, EXAMPLE_MULTI_KEY_OPTS)) { exit(-1); } // Connect to the aerospike database cluster. aerospike as; example_connect_to_aerospike(&as); // Ensure the server supports geospatial queries. if (! aerospike_has_geo(&as)) { fprintf(stderr, "server does not support geospatial\n"); exit(0); } // Start clean. example_remove_test_records(&as); example_remove_index(&as, TEST_INDEX_NAME); // Create a numeric secondary index on test-bin. if (! example_create_2dsphere_index(&as, TEST_BIN_NAME, TEST_INDEX_NAME)) { cleanup(&as); exit(-1); } if (! insert_records(&as)) { cleanup(&as); exit(-1); } as_error err; // Create an as_query object. as_query query; as_query_init(&query, g_namespace, g_set); // Our query region: char const * region = "{ " " \"type\": \"Polygon\", " " \"coordinates\": [ " " [[-122.500000, 37.000000],[-121.000000, 37.000000], " " [-121.000000, 38.080000],[-122.500000, 38.080000], " " [-122.500000, 37.000000]] " " ] " " } "; // Generate an as_query.where condition. Note that as_query_destroy() takes // care of destroying all the query's member objects if necessary. However // using as_query_where_inita() does avoid internal heap usage. as_query_where_inita(&query, 1); as_query_where(&query, TEST_BIN_NAME, as_geo_within(region)); LOG("executing query: within <rect>"); // Execute the query. This call blocks - callbacks are made in the scope of // this call. if (aerospike_query_foreach(&as, &err, NULL, &query, query_cb, NULL) != AEROSPIKE_OK) { LOG("aerospike_query_foreach() returned %d - %s", err.code, err.message); as_query_destroy(&query); cleanup(&as); exit(-1); } LOG("query executed"); as_query_destroy(&query); // Cleanup and disconnect from the database cluster. cleanup(&as); LOG("simple query example successfully completed"); return 0; }
int main(int argc, char* argv[]) { // Parse command line arguments. if (! example_get_opts(argc, argv, EXAMPLE_MULTI_KEY_OPTS)) { exit(-1); } // Connect to the aerospike database cluster. aerospike as; example_connect_to_aerospike(&as); // Start clean. example_remove_test_records(&as); example_remove_index(&as, TEST_INDEX_NAME); // Create a numeric secondary index on test-bin. if (! example_create_integer_index(&as, "test-bin", TEST_INDEX_NAME)) { cleanup(&as); exit(-1); } if (! insert_records(&as)) { cleanup(&as); exit(-1); } if (! example_read_test_records(&as)) { cleanup(&as); exit(-1); } as_error err; // Create an as_query object. as_query query; as_query_init(&query, g_namespace, g_set); // Generate an as_query.where condition. Note that as_query_destroy() takes // care of destroying all the query's member objects if necessary. However // using as_query_where_inita() does avoid internal heap usage. as_query_where_inita(&query, 1); as_query_where(&query, "test-bin", as_integer_equals(7)); LOG("executing query: where test-bin = 7"); // Execute the query. This call blocks - callbacks are made in the scope of // this call. if (aerospike_query_foreach(&as, &err, NULL, &query, query_cb, NULL) != AEROSPIKE_OK) { LOG("aerospike_query_foreach() returned %d - %s", err.code, err.message); as_query_destroy(&query); cleanup(&as); exit(-1); } LOG("query executed"); as_query_destroy(&query); // Cleanup and disconnect from the database cluster. cleanup(&as); LOG("simple query example successfully completed"); return 0; }
int main(int argc, char* argv[]) { // Parse command line arguments. if (! example_get_opts(argc, argv, EXAMPLE_MULTI_KEY_OPTS)) { exit(-1); } // Connect to the aerospike database cluster. aerospike as; example_connect_to_aerospike(&as); // Start clean. example_remove_test_records(&as); if (! insert_records(&as)) { cleanup(&as); exit(-1); } as_error err; // Make a batch of all the keys we inserted. as_batch batch; as_batch_inita(&batch, g_n_keys); uint32_t i; for (i = 0; i < g_n_keys; i++) { as_key_init_int64(as_batch_keyat(&batch, i), g_namespace, g_set, (int64_t)i); } // Check existence of these keys - they should all be there. if (aerospike_batch_exists(&as, &err, NULL, &batch, batch_read_cb, NULL) != AEROSPIKE_OK) { LOG("aerospike_batch_exists() returned %d - %s", err.code, err.message); cleanup(&as); exit(-1); } LOG("batch exists call completed"); // Get all of these keys - they should all be there. if (aerospike_batch_get(&as, &err, NULL, &batch, batch_read_cb, NULL) != AEROSPIKE_OK) { LOG("aerospike_batch_get() returned %d - %s", err.code, err.message); cleanup(&as); exit(-1); } LOG("batch get call completed"); // Delete some records in the middle. uint32_t n_to_delete = g_n_keys / 5; if (n_to_delete == 0) { n_to_delete = 1; } uint32_t n_start = g_n_keys / 2; if (n_start + n_to_delete > g_n_keys) { n_start = 0; } uint32_t n_end = n_start + n_to_delete; for (i = n_start; i < n_end; i++) { // No need to destroy a stack as_key object, if we only use // as_key_init_int64(). as_key key; as_key_init_int64(&key, g_namespace, g_set, (int64_t)i); if (aerospike_key_remove(&as, &err, NULL, &key) != AEROSPIKE_OK) { LOG("aerospike_key_remove() returned %d - %s", err.code, err.message); cleanup(&as); exit(-1); } } LOG("deleted records %u ... %u", n_start, n_end - 1); // Check existence of these keys - some should not be found. if (aerospike_batch_exists(&as, &err, NULL, &batch, batch_read_cb, NULL) != AEROSPIKE_OK) { LOG("aerospike_batch_exists() returned %d - %s", err.code, err.message); cleanup(&as); exit(-1); } LOG("second batch exists call completed"); // Get all of these keys - some should not be found. if (aerospike_batch_get(&as, &err, NULL, &batch, batch_read_cb, NULL) != AEROSPIKE_OK) { LOG("aerospike_batch_get() returned %d - %s", err.code, err.message); cleanup(&as); exit(-1); } LOG("second batch get call completed"); // Cleanup and disconnect from the database cluster. cleanup(&as); LOG("batch get example successfully completed"); return 0; }