@@ -636,7 +636,7 @@ bool IndexCreateTask::handler(WorkItem& _item)
636636 if (!checkResult.asBool ())
637637 continue ;
638638
639- result = key.compose (record);
639+ result = key.composeIKey (record);
640640
641641 if (result == idx_e_ok)
642642 {
@@ -1147,7 +1147,7 @@ void IDX_garbage_collect(thread_db* tdbb, record_param* rpb, RecordStack& going,
11471147 if (!condition.check (rec1).asBool ())
11481148 continue ;
11491149
1150- if (const auto result = key1.compose (rec1))
1150+ if (const auto result = key1.composeIKey (rec1))
11511151 {
11521152 if (result == idx_e_conversion)
11531153 continue ;
@@ -1163,7 +1163,7 @@ void IDX_garbage_collect(thread_db* tdbb, record_param* rpb, RecordStack& going,
11631163 {
11641164 Record* const rec2 = stack2.object ();
11651165
1166- if (const auto result = key2.compose (rec2))
1166+ if (const auto result = key2.composeIKey (rec2))
11671167 {
11681168 if (result == idx_e_conversion)
11691169 continue ;
@@ -1186,7 +1186,7 @@ void IDX_garbage_collect(thread_db* tdbb, record_param* rpb, RecordStack& going,
11861186 {
11871187 Record* const rec3 = stack3.object ();
11881188
1189- if (const auto result = key2.compose (rec3))
1189+ if (const auto result = key2.composeIKey (rec3))
11901190 {
11911191 if (result == idx_e_conversion)
11921192 continue ;
@@ -1275,13 +1275,16 @@ void IDX_modify(thread_db* tdbb,
12751275 AutoIndexExpression expression;
12761276 IndexKey newKey (tdbb, new_rpb->rpb_relation , &idx, expression), orgKey (newKey);
12771277
1278- if ( (error_code = newKey.compose (new_rpb->rpb_record )) )
1278+ if ( (error_code = newKey.composeIKey (new_rpb->rpb_record , true )) )
12791279 {
1280+ if (error_code == idx_e_skip)
1281+ continue ;
1282+
12801283 CCH_RELEASE (tdbb, &window);
12811284 context.raise (tdbb, error_code, new_rpb->rpb_record );
12821285 }
12831286
1284- if ( (error_code = orgKey.compose (org_rpb->rpb_record )) )
1287+ if ( (error_code = orgKey.composeIKey (org_rpb->rpb_record )) )
12851288 {
12861289 CCH_RELEASE (tdbb, &window);
12871290 context.raise (tdbb, error_code, org_rpb->rpb_record );
@@ -1374,13 +1377,16 @@ void IDX_modify_check_constraints(thread_db* tdbb,
13741377 AutoIndexExpression expression;
13751378 IndexKey newKey (tdbb, new_rpb->rpb_relation , &idx, expression), orgKey (newKey);
13761379
1377- if ( (error_code = newKey.compose (new_rpb->rpb_record )) )
1380+ if ( (error_code = newKey.composeIKey (new_rpb->rpb_record , true )) )
13781381 {
1382+ if (error_code == idx_e_skip)
1383+ continue ;
1384+
13791385 CCH_RELEASE (tdbb, &window);
13801386 context.raise (tdbb, error_code, new_rpb->rpb_record );
13811387 }
13821388
1383- if ( (error_code = orgKey.compose (org_rpb->rpb_record )) )
1389+ if ( (error_code = orgKey.composeIKey (org_rpb->rpb_record )) )
13841390 {
13851391 CCH_RELEASE (tdbb, &window);
13861392 context.raise (tdbb, error_code, org_rpb->rpb_record );
@@ -1536,8 +1542,11 @@ void IDX_store(thread_db* tdbb, record_param* rpb, jrd_tra* transaction)
15361542 AutoIndexExpression expression;
15371543 IndexKey key (tdbb, rpb->rpb_relation , &idx, expression);
15381544
1539- if ( (error_code = key.compose (rpb->rpb_record )) )
1545+ if ( (error_code = key.composeIKey (rpb->rpb_record , true )) )
15401546 {
1547+ if (error_code == idx_e_skip)
1548+ continue ;
1549+
15411550 CCH_RELEASE (tdbb, &window);
15421551 context.raise (tdbb, error_code, rpb->rpb_record );
15431552 }
@@ -1900,7 +1909,7 @@ static idx_e check_partner_index(thread_db* tdbb,
19001909 (tmpIndex.idx_flags & idx_unique) ? INTL_KEY_UNIQUE : INTL_KEY_SORT ;
19011910
19021911 IndexKey key (tdbb, relation, &tmpIndex, keyType, segment);
1903- auto result = key.compose (record);
1912+ auto result = key.composeIKey (record);
19041913
19051914 CCH_RELEASE (tdbb, &window);
19061915
0 commit comments