void load(const char *name) { WT_CURSOR *cursor; WT_ITEM *key, _key, *value, _value; WT_SESSION *session; size_t len; uint64_t keyno; char keybuf[64], valuebuf[64]; file_create(name); testutil_check(conn->open_session(conn, NULL, NULL, &session)); testutil_check( session->open_cursor(session, name, NULL, "bulk", &cursor)); key = &_key; value = &_value; for (keyno = 1; keyno <= nkeys; ++keyno) { if (ftype == ROW) { testutil_check(__wt_snprintf_len_set( keybuf, sizeof(keybuf), &len, "%017" PRIu64, keyno)); key->data = keybuf; key->size = (uint32_t)len; cursor->set_key(cursor, key); } else cursor->set_key(cursor, keyno); if (ftype == FIX) cursor->set_value(cursor, 0x01); else { testutil_check(__wt_snprintf_len_set( valuebuf, sizeof(valuebuf), &len, "%37" PRIu64, keyno)); value->data = valuebuf; value->size = (uint32_t)len; cursor->set_value(cursor, value); } testutil_check(cursor->insert(cursor)); } testutil_check(session->close(session, NULL)); }
void load(SHARED_CONFIG *cfg, const char *name) { WT_CONNECTION *conn; WT_CURSOR *cursor; WT_ITEM *value, _value; WT_SESSION *session; size_t len; uint64_t keyno; char keybuf[64], valuebuf[64]; conn = cfg->conn; file_create(cfg, name); testutil_check(conn->open_session(conn, NULL, NULL, &session)); testutil_check( session->open_cursor(session, name, NULL, "bulk", &cursor)); value = &_value; for (keyno = 1; keyno <= cfg->nkeys; ++keyno) { if (cfg->ftype == ROW) { testutil_check(__wt_snprintf( keybuf, sizeof(keybuf), "%016" PRIu64, keyno)); cursor->set_key(cursor, keybuf); } else cursor->set_key(cursor, (uint32_t)keyno); value->data = valuebuf; if (cfg->ftype == FIX) cursor->set_value(cursor, 0x01); else { testutil_check(__wt_snprintf_len_set( valuebuf, sizeof(valuebuf), &len, "%37" PRIu64, keyno)); value->size = (uint32_t)len; cursor->set_value(cursor, value); } testutil_check(cursor->insert(cursor)); } /* Setup the starting key range for the workload phase. */ cfg->key_range = cfg->nkeys; testutil_check(cursor->close(cursor)); testutil_check(session->checkpoint(session, NULL)); testutil_check(session->close(session, NULL)); }
/* * __json_unpack_put -- * Calculate the size of a packed byte string as formatted for JSON. */ static int __json_unpack_put(WT_SESSION_IMPL *session, void *voidpv, u_char *buf, size_t bufsz, WT_CONFIG_ITEM *name, size_t *retsizep) { WT_PACK_VALUE *pv; size_t s, n; const u_char *p, *end; pv = (WT_PACK_VALUE *)voidpv; WT_RET(__wt_snprintf_len_set( (char *)buf, bufsz, &s, "\"%.*s\" : ", (int)name->len, name->str)); if (s <= bufsz) { bufsz -= s; buf += s; } else bufsz = 0; switch (pv->type) { case 'x': return (0); case 's': case 'S': /* Account for '"' quote in front and back. */ s += 2; p = (const u_char *)pv->u.s; if (bufsz > 0) { *buf++ = '"'; bufsz--; } if (pv->type == 's' || pv->havesize) { end = p + pv->size; for (; p < end; p++) { n = __wt_json_unpack_char( *p, buf, bufsz, false); if (n > bufsz) bufsz = 0; else { bufsz -= n; buf += n; } s += n; } } else for (; *p; p++) { n = __wt_json_unpack_char( *p, buf, bufsz, false); if (n > bufsz) bufsz = 0; else { bufsz -= n; buf += n; } s += n; } if (bufsz > 0) *buf++ = '"'; *retsizep += s; return (0); case 'U': case 'u': s += 2; p = (const u_char *)pv->u.item.data; end = p + pv->u.item.size; if (bufsz > 0) { *buf++ = '"'; bufsz--; } for (; p < end; p++) { n = __wt_json_unpack_char(*p, buf, bufsz, true); if (n > bufsz) bufsz = 0; else { bufsz -= n; buf += n; } s += n; } if (bufsz > 0) *buf++ = '"'; *retsizep += s; return (0); case 'b': case 'h': case 'i': case 'l': case 'q': WT_RET(__wt_snprintf_len_incr( (char *)buf, bufsz, &s, "%" PRId64, pv->u.i)); *retsizep += s; return (0); case 'B': case 't': case 'H': case 'I': case 'L': case 'Q': case 'r': case 'R': WT_RET(__wt_snprintf_len_incr( (char *)buf, bufsz, &s, "%" PRId64, pv->u.u)); *retsizep += s; return (0); } WT_RET_MSG(session, EINVAL, "unknown pack-value type: %c", (int)pv->type); }