I have this piece of code (based on structure from 11.batch.cpp) and doing `batch->execute` crashes the remote server, version 4.0.0.2496. I know it will end up in error, because I didn't fix the `project1` for my structure, but client should not crash server no matter what, I think.
att = prov->attachDatabase(&status, "192.168.66.48:test.fdb", 0, NULL); tra = att->startTransaction(&status, 0, NULL); FB_MESSAGE(Msg1, ThrowStatusWrapper, (FB_VARCHAR(5), id) (FB_VARCHAR(10), name) ) project1(&status, master); project1.clear(); IMessageMetadata* meta = project1.getMetadata(); unsigned mesAlign = meta->getAlignment(&status); unsigned mesLength = meta->getMessageLength(&status); unsigned char* streamStart = align(streamBuf, mesAlign); pb = utl->getXpbBuilder(&status, IXpbBuilder::BATCH, NULL, 0); pb->insertInt(&status, IBatch::TAG_RECORD_COUNTS, 1); const char* sqlStmt1 = "insert into batch(i) values(?)"; /*auto stmt = att->prepare(&status, tra, 0, sqlStmt1, SAMPLES_DIALECT, 0); auto batch = stmt->createBatch(&status, meta, pb->getBufferLength(&status), pb->getBuffer(&status));*/ batch = att->createBatch(&status, tra, 0, sqlStmt1, SAMPLES_DIALECT, meta, pb->getBufferLength(&status), pb->getBuffer(&status)); project1->id.set("BAT11"); project1->name.set("SNGL_REC1"); batch->add(&status, 1, project1.getData()); project1->id.set("BAT12"); project1->name.set("SNGL_REC2"); batch->add(&status, 1, project1.getData()); cs = batch->execute(&status, tra); print_cs(status, cs, utl); batch->close(&status); batch = NULL; -- Mgr. Jiří Činčura https://www.tabsoverspaces.com/ Firebird-Devel mailing list, web interface at https://lists.sourceforge.net/lists/listinfo/firebird-devel