@@ -424,29 +424,31 @@ void update_payload(gaia_ptr_t& obj, size_t data_size, const void* data)
424424 return ;
425425 }
426426
427- auto new_data = reinterpret_cast <const uint8_t *>(data);
428- auto old_data = reinterpret_cast <const uint8_t *>(old_this->data ());
429-
430- field_position_list_t changed_fields = compute_payload_diff (obj.type (), old_data, new_data);
431-
432427 const type_metadata_t & metadata = type_registry_t::instance ().get (obj.type ());
433- if (metadata.has_value_linked_relationship ())
428+ if (client_t::has_commit_trigger () || metadata.has_value_linked_relationship ())
434429 {
435- auto_connect (
436- obj.id (),
437- obj.type (),
438- type_id_mapping_t::instance ().get_table_id (obj.type ()),
439- obj.references (),
440- new_data,
441- changed_fields);
442- }
430+ auto new_data = reinterpret_cast <const uint8_t *>(data);
431+ auto old_data = reinterpret_cast <const uint8_t *>(old_this->data ());
432+ field_position_list_t changed_fields = compute_payload_diff (obj.type (), old_data, new_data);
443433
444- obj.finalize_update (old_offset);
434+ if (metadata.has_value_linked_relationship ())
435+ {
436+ auto_connect (
437+ obj.id (),
438+ obj.type (),
439+ type_id_mapping_t::instance ().get_table_id (obj.type ()),
440+ obj.references (),
441+ new_data,
442+ changed_fields);
443+ }
445444
446- if (client_t::is_valid_event (obj.type ()))
447- {
448- client_t::log_event (triggers::event_type_t ::row_update, obj.type (), obj.id (), changed_fields);
445+ if (client_t::has_commit_trigger () && client_t::is_valid_event (obj.type ()))
446+ {
447+ client_t::log_event (triggers::event_type_t ::row_update, obj.type (), obj.id (), changed_fields);
448+ }
449449 }
450+
451+ obj.finalize_update (old_offset);
450452}
451453
452454void remove (gaia_ptr_t & object, bool force)
0 commit comments