本文整理汇总了C++中WT_SESSION::join方法的典型用法代码示例。如果您正苦于以下问题:C++ WT_SESSION::join方法的具体用法?C++ WT_SESSION::join怎么用?C++ WT_SESSION::join使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WT_SESSION
的用法示例。
在下文中一共展示了WT_SESSION::join方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: sizeof
int
main(int argc, char *argv[])
{
TEST_OPTS *opts, _opts;
WT_CURSOR *balancecur, *flagcur, *joincur, *postcur;
WT_CURSOR *maincur;
WT_SESSION *session;
int balance, count, flag, key, key2, post, ret;
char balanceuri[256];
char cfg[128];
char flaguri[256];
char joinuri[256];
char posturi[256];
const char *tablename;
opts = &_opts;
memset(opts, 0, sizeof(*opts));
testutil_check(testutil_parse_opts(argc, argv, opts));
testutil_make_work_dir(opts->home);
testutil_progress(opts, "start");
testutil_check(wiredtiger_open(opts->home, NULL,
"create,cache_size=250M", &opts->conn));
testutil_progress(opts, "wiredtiger_open");
testutil_check(
opts->conn->open_session(opts->conn, NULL, NULL, &session));
testutil_progress(opts, "sessions opened");
/*
* Note: repeated primary key 'id' as 'id2'. This makes
* it easier to dump an index and know which record we're
* looking at.
*/
testutil_check(session->create(session, opts->uri,
"key_format=i,value_format=iiii,"
"columns=(id,post,balance,flag,id2)"));
tablename = strchr(opts->uri, ':');
testutil_assert(tablename != NULL);
tablename++;
testutil_check(__wt_snprintf(
posturi, sizeof(posturi), "index:%s:post", tablename));
testutil_check(__wt_snprintf(
balanceuri, sizeof(balanceuri), "index:%s:balance", tablename));
testutil_check(__wt_snprintf(
flaguri, sizeof(flaguri), "index:%s:flag", tablename));
testutil_check(__wt_snprintf(
joinuri, sizeof(joinuri), "join:%s", opts->uri));
testutil_check(session->create(session, posturi, "columns=(post)"));
testutil_check(session->create(session, balanceuri,
"columns=(balance)"));
testutil_check(session->create(session, flaguri, "columns=(flag)"));
testutil_progress(opts, "setup complete");
/*
* Insert a single record with all items we are search for,
* this makes our logic easier.
*/
testutil_check(session->open_cursor(session, opts->uri, NULL, NULL,
&maincur));
maincur->set_key(maincur, N_RECORDS);
maincur->set_value(maincur, 54321, 0, "", 0, N_RECORDS);
testutil_check(maincur->insert(maincur));
testutil_check(maincur->close(maincur));
testutil_check(session->close(session, NULL));
testutil_progress(opts, "populate start");
populate(opts);
testutil_progress(opts, "populate end");
testutil_check(opts->conn->open_session(
opts->conn, NULL, NULL, &session));
testutil_check(session->open_cursor(session,
posturi, NULL, NULL, &postcur));
testutil_check(session->open_cursor(session,
balanceuri, NULL, NULL, &balancecur));
testutil_check(session->open_cursor(session,
flaguri, NULL, NULL, &flagcur));
testutil_check(session->open_cursor(session,
joinuri, NULL, NULL, &joincur));
postcur->set_key(postcur, 54321);
testutil_check(postcur->search(postcur));
testutil_check(session->join(session, joincur, postcur,
"compare=eq"));
balancecur->set_key(balancecur, 0);
testutil_check(balancecur->search(balancecur));
testutil_check(__wt_snprintf(cfg, sizeof(cfg),
"compare=lt,strategy=bloom,count=%d", N_RECORDS / 100));
testutil_check(session->join(session, joincur, balancecur, cfg));
flagcur->set_key(flagcur, 0);
testutil_check(flagcur->search(flagcur));
testutil_check(__wt_snprintf(cfg, sizeof(cfg),
"compare=eq,strategy=bloom,count=%d", N_RECORDS / 100));
testutil_check(session->join(session, joincur, flagcur, cfg));
//.........这里部分代码省略.........
示例2: sizeof
int
main(int argc, char *argv[])
{
POP_RECORD *p;
TEST_OPTS *opts, _opts;
WT_CURSOR *country_cursor, *country_cursor2, *cursor, *join_cursor,
*subjoin_cursor, *year_cursor;
WT_SESSION *session;
const char *country, *tablename;
char countryuri[256], joinuri[256], yearuri[256];
uint64_t recno, population;
uint16_t year;
int count, ret;
opts = &_opts;
memset(opts, 0, sizeof(*opts));
testutil_check(testutil_parse_opts(argc, argv, opts));
testutil_make_work_dir(opts->home);
tablename = strchr(opts->uri, ':');
testutil_assert(tablename != NULL);
tablename++;
snprintf(countryuri, sizeof(countryuri), "index:%s:country", tablename);
snprintf(yearuri, sizeof(yearuri), "index:%s:year", tablename);
snprintf(joinuri, sizeof(joinuri), "join:%s", opts->uri);
testutil_check(wiredtiger_open(opts->home, NULL,
"create,cache_size=200M", &opts->conn));
testutil_check(
opts->conn->open_session(opts->conn, NULL, NULL, &session));
testutil_check(session->create(session, opts->uri,
"key_format=r,"
"value_format=5sHQ,"
"columns=(id,country,year,population)"));
/* Create an index with a simple key. */
testutil_check(session->create(session,
countryuri, "columns=(country)"));
/* Create an immutable index. */
testutil_check(session->create(session,
yearuri, "columns=(year),immutable"));
/* Insert the records into the table. */
testutil_check(session->open_cursor(
session, opts->uri, NULL, "append", &cursor));
count = 1;
for (p = pop_data; p->year != 0; p++) {
cursor->set_key(cursor, count);
cursor->set_value(cursor, p->country, p->year, p->population);
testutil_check(cursor->insert(cursor));
count++;
}
testutil_check(cursor->close(cursor));
/* Open cursors needed by the join. */
testutil_check(session->open_cursor(session,
joinuri, NULL, NULL, &join_cursor));
testutil_check(session->open_cursor(session,
countryuri, NULL, NULL, &country_cursor));
testutil_check(session->open_cursor(session,
yearuri, NULL, NULL, &year_cursor));
/* select values WHERE country == "AU" AND year > 1900 */
country_cursor->set_key(country_cursor, "AU\0\0\0");
testutil_check(country_cursor->search(country_cursor));
testutil_check(session->join(session, join_cursor, country_cursor,
"compare=eq,count=10"));
year_cursor->set_key(year_cursor, (uint16_t)1900);
testutil_check(year_cursor->search(year_cursor));
testutil_check(session->join(session, join_cursor, year_cursor,
"compare=gt,count=10,strategy=bloom"));
count = 0;
/* List the values that are joined */
while ((ret = join_cursor->next(join_cursor)) == 0) {
testutil_check(join_cursor->get_key(join_cursor, &recno));
testutil_check(join_cursor->get_value(join_cursor, &country,
&year, &population));
printf("ID %" PRIu64, recno);
printf(
": country %s, year %" PRIu16 ", population %" PRIu64 "\n",
country, year, population);
count++;
}
testutil_assert(ret == WT_NOTFOUND);
testutil_assert(count == 2);
testutil_check(join_cursor->close(join_cursor));
testutil_check(year_cursor->close(year_cursor));
testutil_check(country_cursor->close(country_cursor));
/* Open cursors needed by the join. */
testutil_check(session->open_cursor(session,
joinuri, NULL, NULL, &join_cursor));
testutil_check(session->open_cursor(session,
joinuri, NULL, NULL, &subjoin_cursor));
testutil_check(session->open_cursor(session,
countryuri, NULL, NULL, &country_cursor));
testutil_check(session->open_cursor(session,
//.........这里部分代码省略.........
示例3: system
int
main(void)
{
POP_RECORD *p;
WT_CONNECTION *conn;
WT_CURSOR *cursor, *cursor2, *join_cursor, *stat_cursor;
WT_SESSION *session;
const char *country;
uint64_t recno, population;
uint16_t year;
int ret;
/*
* Create a clean test directory for this run of the test program if the
* environment variable isn't already set (as is done by make check).
*/
if (getenv("WIREDTIGER_HOME") == NULL) {
home = "WT_HOME";
ret = system("rm -rf WT_HOME && mkdir WT_HOME");
} else
home = NULL;
if ((ret = wiredtiger_open(
home, NULL, "create,statistics=(fast)", &conn)) != 0) {
fprintf(stderr, "Error connecting to %s: %s\n",
home, wiredtiger_strerror(ret));
return (ret);
}
/* Note: error checking omitted for clarity. */
ret = conn->open_session(conn, NULL, NULL, &session);
/*! [Create a table with column groups] */
/*
* Create the population table.
* Keys are record numbers, the format for values is (5-byte string,
* uint16_t, uint64_t).
* See ::wiredtiger_struct_pack for details of the format strings.
*/
ret = session->create(session, "table:poptable",
"key_format=r,"
"value_format=5sHQ,"
"columns=(id,country,year,population),"
"colgroups=(main,population)");
/*
* Create two column groups: a primary column group with the country
* code, year and population (named "main"), and a population column
* group with the population by itself (named "population").
*/
ret = session->create(session,
"colgroup:poptable:main", "columns=(country,year,population)");
ret = session->create(session,
"colgroup:poptable:population", "columns=(population)");
/*! [Create a table with column groups] */
/*! [Create an index] */
/* Create an index with a simple key. */
ret = session->create(session,
"index:poptable:country", "columns=(country)");
/*! [Create an index] */
/*! [Create an index with a composite key] */
/* Create an index with a composite key (country,year). */
ret = session->create(session,
"index:poptable:country_plus_year", "columns=(country,year)");
/*! [Create an index with a composite key] */
/*! [Create an immutable index] */
/* Create an immutable index. */
ret = session->create(session,
"index:poptable:immutable_year", "columns=(year),immutable");
/*! [Create an immutable index] */
/* Insert the records into the table. */
ret = session->open_cursor(
session, "table:poptable", NULL, "append", &cursor);
for (p = pop_data; p->year != 0; p++) {
cursor->set_value(cursor, p->country, p->year, p->population);
ret = cursor->insert(cursor);
}
ret = cursor->close(cursor);
/* Update records in the table. */
ret = session->open_cursor(session,
"table:poptable", NULL, NULL, &cursor);
while ((ret = cursor->next(cursor)) == 0) {
ret = cursor->get_key(cursor, &recno);
ret = cursor->get_value(cursor, &country, &year, &population);
cursor->set_value(cursor, country, year, population + 1);
ret = cursor->update(cursor);
}
ret = cursor->close(cursor);
/* List the records in the table. */
ret = session->open_cursor(session,
"table:poptable", NULL, NULL, &cursor);
while ((ret = cursor->next(cursor)) == 0) {
ret = cursor->get_key(cursor, &recno);
ret = cursor->get_value(cursor, &country, &year, &population);
//.........这里部分代码省略.........