@@ -869,12 +869,11 @@ BulkInsertNode* BulkInsertNode::pass1(thread_db* tdbb, CompilerScratch* csb)
869869 tail.csb_flags |= csb_store;
870870
871871 jrd_rel* const relation = tail.csb_relation (tdbb);
872- if (relation)
873- {
874- pass1Update (tdbb, csb, relation,
875- relation->rel_triggers [TRIGGER_PRE_STORE ], // unused inside pass1Update
876- stream, stream, SCL_insert, nullptr , 0 , 0 );
877- }
872+ fb_assert (relation);
873+
874+ pass1Update (tdbb, csb, relation,
875+ relation->rel_triggers [TRIGGER_PRE_STORE ], // unused inside pass1Update
876+ stream, stream, SCL_insert, nullptr , 0 , 0 );
878877
879878 return this ;
880879}
@@ -961,12 +960,9 @@ void BulkInsertNode::fromCursor(thread_db* tdbb, Request* request) const
961960 record->setTransactionNumber (transaction->tra_number );
962961
963962 assignValues (tdbb, request, relation, record, toDescs.begin ());
964- cleanupRpb (tdbb, rpb);
965963
966964 bulk->putRecord (tdbb, rpb, transaction);
967965 REPL_store (tdbb, rpb, transaction);
968-
969- JRD_reschedule (tdbb);
970966 }
971967
972968 transaction->finiBulkInsert (tdbb, true );
@@ -993,21 +989,19 @@ void BulkInsertNode::fromMessage(thread_db* tdbb, Request* request) const
993989 record->nullify ();
994990 record->setTransactionNumber (transaction->tra_number );
995991
996- if (!( impure->flags & INIT_DONE ) )
992+ if (!impure->descs )
997993 {
998994 RLCK_reserve_relation (tdbb, transaction, relation->getPermanent (), true );
999995
1000996 auto compound = nodeAs<CompoundStmtNode>(statement);
1001997 const auto count = compound->statements .getCount ();
1002998
1003- impure->flags = INIT_DONE ;
1004999 impure->descs = FB_NEW_POOL (*request->req_pool ) Array<dsc>(*request->req_pool , count);
10051000
10061001 prepareTarget (tdbb, request, impure->descs ->getBuffer (count));
10071002 }
10081003 auto bulk = transaction->getBulkInsert (tdbb, relation, true );
10091004 assignValues (tdbb, request, relation, record, impure->descs ->begin ());
1010- cleanupRpb (tdbb, rpb);
10111005
10121006 bulk->putRecord (tdbb, rpb, transaction);
10131007 REPL_store (tdbb, rpb, transaction);
@@ -1072,7 +1066,7 @@ void BulkInsertNode::assignValues(thread_db* tdbb, Request* request, jrd_rel* re
10721066 ERR_post (Arg::Gds (isc_not_valid) << Arg::Str (name) << Arg::Str (NULL_STRING_MARK ));
10731067 }
10741068
1075- record->setNull (toField->fieldId );
1069+ fb_assert ( record->isNull (toField->fieldId ) );
10761070 to_desc->dsc_flags |= DSC_null;
10771071 }
10781072 else
0 commit comments