summaryrefslogtreecommitdiff
path: root/src/third_party/wiredtiger/test/csuite/wt2447_join_main_table/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/third_party/wiredtiger/test/csuite/wt2447_join_main_table/main.c')
-rw-r--r--src/third_party/wiredtiger/test/csuite/wt2447_join_main_table/main.c244
1 files changed, 114 insertions, 130 deletions
diff --git a/src/third_party/wiredtiger/test/csuite/wt2447_join_main_table/main.c b/src/third_party/wiredtiger/test/csuite/wt2447_join_main_table/main.c
index 89c186501f5..f1b01e4e977 100644
--- a/src/third_party/wiredtiger/test/csuite/wt2447_join_main_table/main.c
+++ b/src/third_party/wiredtiger/test/csuite/wt2447_join_main_table/main.c
@@ -49,142 +49,126 @@
* table.
*/
-#define N_RECORDS 10000
+#define N_RECORDS 10000
static void
-get_stat_total(WT_SESSION *session, WT_CURSOR *jcursor, const char *descmatch,
- uint64_t *pval)
+get_stat_total(WT_SESSION *session, WT_CURSOR *jcursor, const char *descmatch, uint64_t *pval)
{
- WT_CURSOR *statcursor;
- WT_DECL_RET;
- uint64_t val;
- char *desc, *valstr;
- bool match;
-
- match = false;
- *pval = 0;
- testutil_check(session->open_cursor(session, "statistics:join", jcursor,
- NULL, &statcursor));
-
- while ((ret = statcursor->next(statcursor)) == 0) {
- testutil_assert(statcursor->get_value(
- statcursor, &desc, &valstr, &val) == 0);
-
- printf("statistics: %s: %s: %" PRIu64 "\n", desc, valstr, val);
-
- if (strstr(desc, descmatch) != NULL) {
- *pval += val;
- match = true;
- }
- }
- testutil_assert(ret == WT_NOTFOUND);
- testutil_check(statcursor->close(statcursor));
- testutil_assert(match);
+ WT_CURSOR *statcursor;
+ WT_DECL_RET;
+ uint64_t val;
+ char *desc, *valstr;
+ bool match;
+
+ match = false;
+ *pval = 0;
+ testutil_check(session->open_cursor(session, "statistics:join", jcursor, NULL, &statcursor));
+
+ while ((ret = statcursor->next(statcursor)) == 0) {
+ testutil_assert(statcursor->get_value(statcursor, &desc, &valstr, &val) == 0);
+
+ printf("statistics: %s: %s: %" PRIu64 "\n", desc, valstr, val);
+
+ if (strstr(desc, descmatch) != NULL) {
+ *pval += val;
+ match = true;
+ }
+ }
+ testutil_assert(ret == WT_NOTFOUND);
+ testutil_check(statcursor->close(statcursor));
+ testutil_assert(match);
}
int
main(int argc, char *argv[])
{
- TEST_OPTS *opts, _opts;
- WT_CURSOR *cursor1, *cursor2, *jcursor;
- WT_ITEM d;
- WT_SESSION *session;
- uint64_t maincount;
- int half, i, j;
- char bloom_cfg[128], index1uri[256], index2uri[256], joinuri[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);
-
- tablename = strchr(opts->uri, ':');
- testutil_assert(tablename != NULL);
- tablename++;
- testutil_check(__wt_snprintf(
- index1uri, sizeof(index1uri), "index:%s:index1", tablename));
- testutil_check(__wt_snprintf(
- index2uri, sizeof(index2uri), "index:%s:index2", tablename));
- testutil_check(__wt_snprintf(
- joinuri, sizeof(joinuri), "join:%s", opts->uri));
-
- testutil_check(wiredtiger_open(opts->home, NULL,
- "statistics=(all),create", &opts->conn));
- testutil_check(
- opts->conn->open_session(opts->conn, NULL, NULL, &session));
-
- testutil_check(session->create(session, opts->uri,
- "key_format=i,value_format=iiu,columns=(k,v1,v2,d)"));
- testutil_check(session->create(session, index1uri, "columns=(v1)"));
- testutil_check(session->create(session, index2uri, "columns=(v2)"));
-
- testutil_check(session->open_cursor(session, opts->uri, NULL, NULL,
- &cursor1));
-
- d.size = 4100;
- d.data = dmalloc(d.size);
- memset((char *)d.data, 7, d.size);
-
- for (i = 0; i < N_RECORDS; ++i)
- {
- cursor1->set_key(cursor1, i);
- cursor1->set_value(cursor1, i, i, &d);
- testutil_check(cursor1->insert(cursor1));
- }
-
- free((void*)d.data);
-
- testutil_check(opts->conn->close(opts->conn, NULL));
- testutil_check(wiredtiger_open(opts->home, NULL,
- "statistics=(all),create,cache_size=1GB", &opts->conn));
- testutil_check(opts->conn->open_session(opts->conn, NULL, NULL,
- &session));
-
- testutil_check(session->open_cursor(session, index1uri, NULL, NULL,
- &cursor1));
- testutil_check(session->open_cursor(session, index2uri, NULL, NULL,
- &cursor2));
-
- half = N_RECORDS / 2;
- cursor1->set_key(cursor1, half);
- testutil_check(cursor1->search(cursor1));
-
- cursor2->set_key(cursor2, half + 1);
- testutil_check(cursor2->search(cursor2));
-
- testutil_check(__wt_snprintf(bloom_cfg, sizeof(bloom_cfg),
- "compare=lt,strategy=bloom,count=%d", half));
-
- testutil_check(session->open_cursor(session, joinuri, NULL, NULL,
- &jcursor));
- testutil_check(session->join(session, jcursor, cursor1, "compare=ge"));
- testutil_check(session->join(session, jcursor, cursor2, bloom_cfg));
-
- /* Expect one value returned */
- testutil_assert(jcursor->next(jcursor) == 0);
- i = 0;
- testutil_assert(jcursor->get_key(jcursor, &i) == 0);
- testutil_assert(i == (int)half);
- i = j = 0;
- memset(&d, 0, sizeof(d));
- testutil_assert(jcursor->get_value(jcursor, &i, &j, &d) == 0);
- testutil_assert(i == (int)half);
- testutil_assert(j == (int)half);
- testutil_assert(d.size == 4100);
- for (i = 0; i < 4100; i++)
- testutil_assert(((char *)d.data)[i] == 7);
-
- testutil_assert(jcursor->next(jcursor) == WT_NOTFOUND);
-
- /*
- * Make sure there have been 2 accesses to the main table,
- * explained in the discussion above.
- */
- get_stat_total(session, jcursor, "accesses to the main table",
- &maincount);
- testutil_assert(maincount == 2);
-
- testutil_cleanup(opts);
- return (EXIT_SUCCESS);
+ TEST_OPTS *opts, _opts;
+ WT_CURSOR *cursor1, *cursor2, *jcursor;
+ WT_ITEM d;
+ WT_SESSION *session;
+ uint64_t maincount;
+ int half, i, j;
+ char bloom_cfg[128], index1uri[256], index2uri[256], joinuri[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);
+
+ tablename = strchr(opts->uri, ':');
+ testutil_assert(tablename != NULL);
+ tablename++;
+ testutil_check(__wt_snprintf(index1uri, sizeof(index1uri), "index:%s:index1", tablename));
+ testutil_check(__wt_snprintf(index2uri, sizeof(index2uri), "index:%s:index2", tablename));
+ testutil_check(__wt_snprintf(joinuri, sizeof(joinuri), "join:%s", opts->uri));
+
+ testutil_check(wiredtiger_open(opts->home, NULL, "statistics=(all),create", &opts->conn));
+ testutil_check(opts->conn->open_session(opts->conn, NULL, NULL, &session));
+
+ testutil_check(
+ session->create(session, opts->uri, "key_format=i,value_format=iiu,columns=(k,v1,v2,d)"));
+ testutil_check(session->create(session, index1uri, "columns=(v1)"));
+ testutil_check(session->create(session, index2uri, "columns=(v2)"));
+
+ testutil_check(session->open_cursor(session, opts->uri, NULL, NULL, &cursor1));
+
+ d.size = 4100;
+ d.data = dmalloc(d.size);
+ memset((char *)d.data, 7, d.size);
+
+ for (i = 0; i < N_RECORDS; ++i) {
+ cursor1->set_key(cursor1, i);
+ cursor1->set_value(cursor1, i, i, &d);
+ testutil_check(cursor1->insert(cursor1));
+ }
+
+ free((void *)d.data);
+
+ testutil_check(opts->conn->close(opts->conn, NULL));
+ testutil_check(
+ wiredtiger_open(opts->home, NULL, "statistics=(all),create,cache_size=1GB", &opts->conn));
+ testutil_check(opts->conn->open_session(opts->conn, NULL, NULL, &session));
+
+ testutil_check(session->open_cursor(session, index1uri, NULL, NULL, &cursor1));
+ testutil_check(session->open_cursor(session, index2uri, NULL, NULL, &cursor2));
+
+ half = N_RECORDS / 2;
+ cursor1->set_key(cursor1, half);
+ testutil_check(cursor1->search(cursor1));
+
+ cursor2->set_key(cursor2, half + 1);
+ testutil_check(cursor2->search(cursor2));
+
+ testutil_check(
+ __wt_snprintf(bloom_cfg, sizeof(bloom_cfg), "compare=lt,strategy=bloom,count=%d", half));
+
+ testutil_check(session->open_cursor(session, joinuri, NULL, NULL, &jcursor));
+ testutil_check(session->join(session, jcursor, cursor1, "compare=ge"));
+ testutil_check(session->join(session, jcursor, cursor2, bloom_cfg));
+
+ /* Expect one value returned */
+ testutil_assert(jcursor->next(jcursor) == 0);
+ i = 0;
+ testutil_assert(jcursor->get_key(jcursor, &i) == 0);
+ testutil_assert(i == (int)half);
+ i = j = 0;
+ memset(&d, 0, sizeof(d));
+ testutil_assert(jcursor->get_value(jcursor, &i, &j, &d) == 0);
+ testutil_assert(i == (int)half);
+ testutil_assert(j == (int)half);
+ testutil_assert(d.size == 4100);
+ for (i = 0; i < 4100; i++)
+ testutil_assert(((char *)d.data)[i] == 7);
+
+ testutil_assert(jcursor->next(jcursor) == WT_NOTFOUND);
+
+ /*
+ * Make sure there have been 2 accesses to the main table, explained in the discussion above.
+ */
+ get_stat_total(session, jcursor, "accesses to the main table", &maincount);
+ testutil_assert(maincount == 2);
+
+ testutil_cleanup(opts);
+ return (EXIT_SUCCESS);
}