int PerconaFTEngine::Get(Context& ctx, const KeyObject& key, ValueObject& value) { DB* db = GetFTDB(ctx, key.GetNameSpace(), false); if (NULL == db) { return ERR_ENTRY_NOT_EXIST; } PerconaFTLocalContext& local_ctx = g_local_ctx.GetValue(); Slice ks = local_ctx.GetSlice(key); DBT key_slice = to_dbt(ks); DB_TXN* txn = local_ctx.transc.Peek(); int r = 0; DBT val_slice; memset(&val_slice, 0, sizeof(DBT)); val_slice.flags = DB_DBT_MALLOC; //CHECK_EXPR(r = m_env->txn_begin(m_env, NULL, &txn, 0)); CHECK_EXPR(r = db->get(db, txn, &key_slice, &val_slice, 0)); if (0 == r) { Buffer valBuffer((char*) (val_slice.data), 0, val_slice.size); value.Decode(valBuffer, true); } //txn->commit(txn, 0); return ENGINE_ERR(r); }