245 {
246 const auto& obj = itr_cache.get( iterator );
247
248 const auto& table_obj = itr_cache.get_table( obj.t_id );
249 SYS_ASSERT( table_obj.code ==
context.receiver, table_access_violation,
"db access violation" );
250
251
252
254
256
257 std::string event_id;
258 if (
context.control.get_deep_mind_logger() !=
nullptr) {
259 event_id =
RAM_EVENT_ID(
"${code}:${scope}:${table}:${index_name}",
260 ("code", table_obj.code)
261 ("scope", table_obj.scope)
262 ("table", table_obj.table)
263 (
"index_name",
name(obj.primary_key))
264 );
265 }
266
267 if( obj.payer != payer ) {
268 if (
auto dm_logger =
context.control.get_deep_mind_logger())
269 {
270 dm_logger->on_ram_trace(std::string(event_id), "secondary_index", "remove", "secondary_index_remove");
271 }
272 context.update_db_usage( obj.payer, -(billing_size) );
273 if (
auto dm_logger =
context.control.get_deep_mind_logger())
274 {
275 dm_logger->on_ram_trace(std::move(event_id), "secondary_index", "add", "secondary_index_update_add_new_payer");
276 }
277 context.update_db_usage( payer, +(billing_size) );
278 }
279
280 context.db.modify( obj, [&](
auto& o ) {
281 secondary_key_helper_t::set(o.secondary_key, secondary);
282 o.payer = payer;
283 });
284 }