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.c38
1 files changed, 29 insertions, 9 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 480d49e1344..67ce0c081c0 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
@@ -86,16 +86,29 @@ main(int argc, char *argv[])
WT_CURSOR *cursor1, *cursor2, *jcursor;
WT_ITEM d;
WT_SESSION *session;
- uint64_t maincount;
+ uint64_t maincount, i64;
int half, i, j;
- char bloom_cfg[128], index1uri[256], index2uri[256], joinuri[256];
+ char bloom_cfg[128], index1uri[256], index2uri[256], joinuri[256], table_cfg[128];
const char *tablename;
opts = &_opts;
memset(opts, 0, sizeof(*opts));
+ /* 0 isn't a valid table_type; use rows by default */
+ opts->table_type = TABLE_ROW;
testutil_check(testutil_parse_opts(argc, argv, opts));
testutil_make_work_dir(opts->home);
+ switch (opts->table_type) {
+ case TABLE_COL:
+ printf("Table type: columns\n");
+ break;
+ case TABLE_FIX:
+ testutil_die(ENOTSUP, "Fixed-length column store not supported");
+ case TABLE_ROW:
+ printf("Table type: rows\n");
+ break;
+ }
+
tablename = strchr(opts->uri, ':');
testutil_assert(tablename != NULL);
tablename++;
@@ -106,8 +119,10 @@ main(int argc, char *argv[])
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(__wt_snprintf(table_cfg, sizeof(table_cfg),
+ "key_format=%s,value_format=iiu,columns=(k,v1,v2,d)",
+ opts->table_type == TABLE_ROW ? "i" : "r"));
+ testutil_check(session->create(session, opts->uri, table_cfg));
testutil_check(session->create(session, index1uri, "columns=(v1)"));
testutil_check(session->create(session, index2uri, "columns=(v2)"));
@@ -117,7 +132,7 @@ main(int argc, char *argv[])
d.data = dmalloc(d.size);
memset((char *)d.data, 7, d.size);
- for (i = 0; i < N_RECORDS; ++i) {
+ for (i = 1; i < N_RECORDS + 1; ++i) {
cursor1->set_key(cursor1, i);
cursor1->set_value(cursor1, i, i, &d);
testutil_check(cursor1->insert(cursor1));
@@ -150,13 +165,18 @@ main(int argc, char *argv[])
/* 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);
+ if (opts->table_type == TABLE_ROW)
+ testutil_assert(jcursor->get_key(jcursor, &i) == 0);
+ else {
+ testutil_assert(jcursor->get_key(jcursor, &i64) == 0);
+ i = (int)i64;
+ }
+ testutil_assert(i == 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(i == half);
+ testutil_assert(j == half);
testutil_assert(d.size == 4100);
for (i = 0; i < 4100; i++)
testutil_assert(((char *)d.data)[i] == 7);