@@ -174,7 +174,7 @@ static void protect_system_table_delupd(thread_db* tdbb, const jrd_rel* relation
174174 bool force_flag = false );
175175static void purge (thread_db*, record_param*);
176176static void replace_record (thread_db*, record_param*, PageStack*, const jrd_tra*);
177- static void refresh_fk_fields (thread_db*, Record*, record_param*, record_param*);
177+ static void refresh_changed_fields (thread_db*, Record*, record_param*, record_param*);
178178static SSHORT set_metadata_id (thread_db*, Record*, USHORT, drq_type_t , const char *);
179179static void set_nbackup_id (thread_db*, Record*, USHORT, drq_type_t , const char *);
180180static void set_owner_name (thread_db*, Record*, USHORT);
@@ -3329,7 +3329,7 @@ bool VIO_modify(thread_db* tdbb, record_param* org_rpb, record_param* new_rpb, j
33293329 fb_assert (!(org_rpb->rpb_runtime_flags & RPB_undo_read));
33303330
33313331 if (undo_read)
3332- refresh_fk_fields (tdbb, old_record, org_rpb, new_rpb);
3332+ refresh_changed_fields (tdbb, old_record, org_rpb, new_rpb);
33333333 }
33343334
33353335 // If we're the system transaction, modify stuff in place. This saves
@@ -6605,20 +6605,20 @@ static void replace_record(thread_db* tdbb,
66056605}
66066606
66076607
6608- static void refresh_fk_fields (thread_db* tdbb, Record* old_rec, record_param* cur_rpb,
6608+ static void refresh_changed_fields (thread_db* tdbb, Record* old_rec, record_param* cur_rpb,
66096609 record_param* new_rpb)
66106610{
66116611/* *************************************
66126612 *
6613- * r e f r e s h _ f k _ f i e l d s
6613+ * r e f r e s h _ c h a n g e d _ f i e l d s
66146614 *
66156615 **************************************
66166616 *
66176617 * Functional description
66186618 * Update new_rpb with foreign key fields values changed by cascade triggers.
66196619 * Consider self-referenced foreign keys only.
6620- * Also, if UpdateOverwriteMode is set to 1, raise error when foreign key fields
6621- * were changed by user triggers.
6620+ * Also, if UpdateOverwriteMode is set to 1, raise error when non self-referenced
6621+ * foreign key fields were changed by user triggers.
66226622 *
66236623 * old_rec - old record before modify
66246624 * cur_rpb - just read record with possibly changed fields
@@ -6667,13 +6667,13 @@ static void refresh_fk_fields(thread_db* tdbb, Record* old_rec, record_param* cu
66676667 if (overwriteMode == 0 )
66686668 return ;
66696669
6670- if (cur_rpb->rpb_record ->getFormat () == old_rec->getFormat ())
6670+ if (cur_rpb->rpb_record ->getFormat ()-> fmt_version == old_rec->getFormat ()-> fmt_version )
66716671 {
66726672 if (memcmp (cur_rpb->rpb_address , old_rec->getData (), cur_rpb->rpb_length ) == 0 )
66736673 return ;
66746674
66756675 fb_assert (overwriteMode == 1 );
6676- ERR_post (Arg::Gds (isc_random) << " UPDATE will overwrite changes made by trigger" );
6676+ ERR_post (Arg::Gds (isc_update_overwrite_trigger)); // UPDATE will overwrite changes made by trigger
66776677 }
66786678 // Else compare field-by-field
66796679 }
@@ -6698,7 +6698,7 @@ static void refresh_fk_fields(thread_db* tdbb, Record* old_rec, record_param* cu
66986698 {
66996699 // Record was modified by trigger.
67006700 fb_assert (overwriteMode == 1 );
6701- ERR_post (Arg::Gds (isc_random) << " UPDATE will overwrite changes made by trigger" );
6701+ ERR_post (Arg::Gds (isc_update_overwrite_trigger)); // UPDATE will overwrite changes made by trigger
67026702 }
67036703 }
67046704 else
0 commit comments