Skip to content

Commit 8ec5011

Browse files
committed
Corrections per @dyemanov suggestions
1 parent 3f4ee1c commit 8ec5011

2 files changed

Lines changed: 7 additions & 17 deletions

File tree

src/dsql/StmtNodes.cpp

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -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

src/dsql/StmtNodes.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -207,13 +207,9 @@ class BulkInsertNode : public TypedNode<StmtNode, StmtNode::TYPE_BULK_INSERT>
207207
NestConst<Cursor> cursor = nullptr; // source cursor
208208

209209
private:
210-
// Impure flags
211-
static constexpr int INIT_DONE = 0x01;
212-
213210
struct Impure
214211
{
215212
Firebird::Array<dsc>* descs;
216-
int flags;
217213
};
218214

219215
void fromCursor(thread_db* tdbb, Request* request) const;

0 commit comments

Comments
 (0)