/* * __curds_update -- * WT_CURSOR.update method for the data-source cursor type. */ static int __curds_update(WT_CURSOR *cursor) { WT_CURSOR *source; WT_DECL_RET; WT_SESSION_IMPL *session; source = ((WT_CURSOR_DATA_SOURCE *)cursor)->source; CURSOR_UPDATE_API_CALL(cursor, session, update); WT_STAT_CONN_INCR(session, cursor_update); WT_STAT_DATA_INCR(session, cursor_update); WT_STAT_DATA_INCRV(session, cursor_update_bytes, cursor->value.size); WT_ERR(__curds_txn_enter(session, true)); WT_ERR(__curds_key_set(cursor)); WT_ERR(__curds_value_set(cursor)); ret = __curds_cursor_resolve(cursor, source->update(source)); err: __curds_txn_leave(session); CURSOR_UPDATE_API_END(session, ret); return (ret); }
/* * __curds_insert -- * WT_CURSOR.insert method for the data-source cursor type. */ static int __curds_insert(WT_CURSOR *cursor) { WT_CURSOR *source; WT_DECL_RET; WT_SESSION_IMPL *session; source = ((WT_CURSOR_DATA_SOURCE *)cursor)->source; CURSOR_UPDATE_API_CALL(cursor, session, insert); WT_ERR(__curds_txn_enter(session, true)); WT_STAT_CONN_INCR(session, cursor_insert); WT_STAT_DATA_INCR(session, cursor_insert); WT_STAT_DATA_INCRV(session, cursor_insert_bytes, cursor->key.size + cursor->value.size); if (!F_ISSET(cursor, WT_CURSTD_APPEND)) WT_ERR(__curds_key_set(cursor)); WT_ERR(__curds_value_set(cursor)); ret = __curds_cursor_resolve(cursor, source->insert(source)); err: __curds_txn_leave(session); CURSOR_UPDATE_API_END(session, ret); return (ret); }
/* * __curds_update -- * WT_CURSOR.update method for the data-source cursor type. */ static int __curds_update(WT_CURSOR *cursor) { WT_DECL_RET; WT_SESSION_IMPL *session; CURSOR_UPDATE_API_CALL(cursor, session, update, NULL); WT_ERR(__curds_key_set(cursor)); WT_ERR(__curds_value_set(cursor)); WT_ERR(cursor->data_source->update(cursor->data_source)); err: CURSOR_UPDATE_API_END(session, ret); return (ret); }
/* * __curds_insert -- * WT_CURSOR.insert method for the data-source cursor type. */ static int __curds_insert(WT_CURSOR *cursor) { WT_DECL_RET; WT_SESSION_IMPL *session; CURSOR_UPDATE_API_CALL(cursor, session, insert, NULL); /* If not appending, we require a key. */ if (!F_ISSET(cursor, WT_CURSTD_APPEND)) WT_ERR(__curds_key_set(cursor)); WT_ERR(__curds_value_set(cursor)); WT_ERR(cursor->data_source->insert(cursor->data_source)); /* If appending, we allocated a key. */ if (F_ISSET(cursor, WT_CURSTD_APPEND)) __curds_key_get(cursor); err: CURSOR_UPDATE_API_END(session, ret); return (ret); }