--- a/src/GuileHandler.h Sun Feb 03 21:53:10 2019 +0100
+++ b/src/GuileHandler.h Tue Feb 05 00:06:44 2019 +0100
@@ -190,13 +190,6 @@
for (DefinitionRecipe definition : currentRelationConfiguration->definitions) undefineGuileVariable(definition.name);
}
for (auto attribute : currentReaderMetadata) undefineGuileVariable(attribute.getAttributeName());
- currentReaderMetadata = attributes;
- // TODO: move to a reusable method (or use same metadata on both reader and writer side?)
- // TODO: allow structural changes during transformation
- currentWriterMetadata.clear();
- for (AttributeMetadata readerMetadata : attributes) {
- currentWriterMetadata.push_back({readerMetadata.getAttributeName(), relationalWriter->toTypeId(readerMetadata.getTypeName())});
- }
currentRelationConfiguration = nullptr;
for (int i = 0; i < configuration.relationConfigurations.size(); i++) {
@@ -207,6 +200,15 @@
}
}
+ currentReaderMetadata = attributes;
+ // TODO: move to a reusable method (or use same metadata on both reader and writer side?)
+ currentWriterMetadata.clear();
+ if (currentRelationConfiguration && currentRelationConfiguration->writerMetadata.size()) {
+ currentWriterMetadata = currentRelationConfiguration->writerMetadata;
+ } else {
+ for (AttributeMetadata readerMetadata : attributes) currentWriterMetadata.push_back({readerMetadata.getAttributeName(), relationalWriter->toTypeId(readerMetadata.getTypeName())});
+ }
+
relationalWriter->startRelation(name, currentWriterMetadata, true);
if (currentRelationConfiguration) {