equal
deleted
inserted
replaced
46 std::ostream &output; |
46 std::ostream &output; |
47 types::BooleanDataTypeWriter booleanWriter; |
47 types::BooleanDataTypeWriter booleanWriter; |
48 types::IntegerDataTypeWriter integerWriter; |
48 types::IntegerDataTypeWriter integerWriter; |
49 types::StringDataTypeWriter stringWriter; |
49 types::StringDataTypeWriter stringWriter; |
50 std::vector<DataTypeWriterBase*> writers = {&booleanWriter, &integerWriter, &stringWriter}; |
50 std::vector<DataTypeWriterBase*> writers = {&booleanWriter, &integerWriter, &stringWriter}; |
51 BufferingMode bufferingMode = BufferingMode::ENVIRONMENT; |
51 BufferingMode bufferingMode; |
52 BufferingMode bufferingModeEnvDefault = BufferingMode::AUTO; |
52 BufferingMode bufferingModeEnvDefault; |
53 |
53 |
54 /** |
54 /** |
55 * count of columns in the current table |
55 * count of columns in the current table |
56 */ |
56 */ |
57 integer_t columnCount; |
57 integer_t columnCount; |
101 |
101 |
102 public: |
102 public: |
103 |
103 |
104 StreamRelationalWriter(std::ostream &output) : |
104 StreamRelationalWriter(std::ostream &output) : |
105 output(output) { |
105 output(output) { |
|
106 setBufferingMode(BufferingMode::ENVIRONMENT, BufferingMode::AUTO); |
106 } |
107 } |
107 |
108 |
108 TypeId toTypeId(const string_t typeCode) override { |
109 TypeId toTypeId(const string_t typeCode) override { |
109 for (DataTypeWriterBase* writer : writers) if (writer->supports(typeCode)) return writer->getTypeId(); |
110 for (DataTypeWriterBase* writer : writers) if (writer->supports(typeCode)) return writer->getTypeId(); |
110 throw RelpipeWriterException(L"Unsupported data type: " + typeCode); |
111 throw RelpipeWriterException(L"Unsupported data type: " + typeCode); |
112 |
113 |
113 void startRelation(string_t name, std::vector<AttributeMetadata> attributes, boolean_t writeHeader) override { |
114 void startRelation(string_t name, std::vector<AttributeMetadata> attributes, boolean_t writeHeader) override { |
114 string_t tableName = name; |
115 string_t tableName = name; |
115 columnCount = attributes.size(); |
116 columnCount = attributes.size(); |
116 currentColumn = 0; |
117 currentColumn = 0; |
117 |
|
118 updateBufferingMode(); |
|
119 |
118 |
120 // Write table name and column count: |
119 // Write table name and column count: |
121 if (writeHeader) { |
120 if (writeHeader) { |
122 integerWriter.writeValue(output, DATA_PART_START); |
121 integerWriter.writeValue(output, DATA_PART_START); |
123 stringWriter.writeValue(output, tableName); |
122 stringWriter.writeValue(output, tableName); |
170 } |
169 } |
171 |
170 |
172 void setBufferingMode(BufferingMode mode, BufferingMode envDefault) override { |
171 void setBufferingMode(BufferingMode mode, BufferingMode envDefault) override { |
173 bufferingMode = mode; |
172 bufferingMode = mode; |
174 bufferingModeEnvDefault = envDefault; |
173 bufferingModeEnvDefault = envDefault; |
|
174 updateBufferingMode(); |
175 } |
175 } |
176 |
176 |
177 }; |
177 }; |
178 |
178 |
179 } |
179 } |