/* * kvs_cursor_remove -- * WT_CURSOR::remove method. */ static int kvs_cursor_remove(WT_CURSOR *wt_cursor) { CURSOR *cursor; WT_SESSION *session; int ret; cursor = (CURSOR *)wt_cursor; session = cursor->session; ret = 0; /* * WiredTiger's "remove" of a bitfield is really an update with a value * of a single byte of zero. */ if (cursor->config_bitfield) { wt_cursor->value.size = 1; wt_cursor->value.data = "\0"; return (kvs_cursor_update(wt_cursor)); } if ((ret = copyin_key(wt_cursor)) != 0) return (ret); if ((ret = kvs_del(cursor->data_source->kvs, &cursor->record)) == 0) return (0); if (ret == KVS_E_KEY_NOT_FOUND) return (WT_NOTFOUND); ERET(session, WT_ERROR, "kvs_del: %s", kvs_strerror(ret)); }
static int kvs_cursor_remove(WT_CURSOR *wtcursor) { CURSOR_SOURCE *cursor; DBC *dbc; DBT *key, *value; WT_EXTENSION_API *wt_api; WT_SESSION *session; int ret = 0; session = wtcursor->session; cursor = (CURSOR_SOURCE *)wtcursor; wt_api = cursor->wt_api; dbc = cursor->dbc; key = &cursor->key; value = &cursor->value; /* * WiredTiger's "remove" of a bitfield is really an update with a value * of a single byte of zero. */ if (cursor->config_bitfield) { wtcursor->value.size = 1; wtcursor->value.data = "\0"; return (kvs_cursor_update(wtcursor)); } if ((ret = copyin_key(wtcursor)) != 0) return (ret); if ((ret = dbc->get(dbc, key, value, DB_SET)) != 0) { if (ret == DB_NOTFOUND || ret == DB_KEYEMPTY) return (WT_NOTFOUND); ERET(wt_api, session, WT_ERROR, "DbCursor.get: %s", db_strerror(ret)); } if ((ret = dbc->del(dbc, 0)) != 0) ERET(wt_api, session, WT_ERROR, "DbCursor.del: %s", db_strerror(ret)); return (0); }