diff -r c64e1588f428 -r bccda5688d71 src/AttributeFinder.h --- a/src/AttributeFinder.h Sat Jan 11 18:13:30 2020 +0100 +++ b/src/AttributeFinder.h Sat Jan 11 19:10:01 2020 +0100 @@ -43,7 +43,7 @@ * @param writer * @param field */ - virtual void writeFieldOfExistingFile(RelationalWriter* writer, const RequestedField& field) = 0; + virtual void writeFieldOfExistingFile(RelationalWriter* writer, const string_t& relationName, const RequestedField& field) = 0; /** * Writes empty attribute(s) in case of non-existent file or an error. @@ -51,9 +51,9 @@ * @param writer * @param field */ - virtual void writeEmptyField(RelationalWriter* writer, const RequestedField& field) { + virtual void writeEmptyField(RelationalWriter* writer, const string_t& relationName, const RequestedField& field) { // TODO: better handling of null values (when null values are supported by the format specification) - for (AttributeMetadata m : toMetadata(writer, field)) { + for (AttributeMetadata m : toMetadata(writer, relationName, field)) { switch (m.typeId) { case TypeId::BOOLEAN: writer->writeAttribute(L"false"); @@ -76,10 +76,11 @@ * Single requested fields might generate multiple attributes in the relation. * But usually it is 1:1. * @param writer can be used for TypeId coversion from string_t + * @param relationName default one or set by the user * @param field requested field from the user (usually from CLI arguments) * @return attribute metadata to be used in the RelationalWriter.startRelation() */ - virtual vector toMetadata(RelationalWriter* writer, const RequestedField& field) = 0; + virtual vector toMetadata(RelationalWriter* writer, const string_t& relationName, const RequestedField& field) = 0; /** * Writing of the record for current file is starting. @@ -93,9 +94,9 @@ currentFileExists = exists; } - virtual void writeField(RelationalWriter* writer, const RequestedField& field) { - if (currentFileExists) writeFieldOfExistingFile(writer, field); - else writeEmptyField(writer, field); + virtual void writeField(RelationalWriter* writer, const string_t& relationName, const RequestedField& field) { + if (currentFileExists) writeFieldOfExistingFile(writer, relationName, field); + else writeEmptyField(writer, relationName, field); } /**