# HG changeset patch # User František Kučera # Date 1650206369 -7200 # Node ID d2ba14aa4e2071f0382111381eb12589edf3b317 # Parent c0a1a008982c8ee301283558d07ff7faaef0930d initialize record context on first attribute of each record diff -r c0a1a008982c -r d2ba14aa4e20 src/SerializeHandler.h --- a/src/SerializeHandler.h Sun Apr 17 01:31:28 2022 +0200 +++ b/src/SerializeHandler.h Sun Apr 17 16:39:29 2022 +0200 @@ -87,9 +87,6 @@ relationContext.name = name; relationContext.readerMetadata = attributes; - recordContext = RecordContext(); - recordContext.writer.reset(relpipe::writer::Factory::create(recordContext.buffer)); - for (relpipe::reader::handlers::AttributeMetadata readerMetadata : attributes) { relationContext.writerMetadata.push_back({readerMetadata.getAttributeName(), writer->toTypeId(readerMetadata.getTypeName())}); } @@ -97,6 +94,8 @@ void attribute(const relpipe::common::type::StringX& value) override { if (recordContext.attributeIndex == 0) { + recordContext = RecordContext(); + recordContext.writer.reset(relpipe::writer::Factory::create(recordContext.buffer)); recordContext.writer->startRelation(relationContext.name, relationContext.writerMetadata, true); } @@ -105,8 +104,7 @@ if (recordContext.attributeIndex % relationContext.readerMetadata.size() == 0) { writer->writeAttribute(toHex(recordContext.buffer.str())); - recordContext = RecordContext(); - recordContext.writer.reset(relpipe::writer::Factory::create(recordContext.buffer)); + recordContext.attributeIndex = 0; } }