| 140 | } |
| 141 | |
| 142 | void IndexBuilder::insert(const ColumnChunkData& chunk, |
| 143 | const std::vector<ColumnChunkData*>& warningData, offset_t nodeOffset, offset_t numNodes, |
| 144 | NodeBatchInsertErrorHandler& errorHandler) { |
| 145 | TypeUtils::visit( |
| 146 | chunk.getDataType().getPhysicalType(), |
| 147 | [&]<HashablePrimitive T>(T) { |
| 148 | for (auto i = 0u; i < numNodes; i++) { |
| 149 | if (checkNonNullConstraint(chunk, warningData, nodeOffset, i, errorHandler)) { |
| 150 | auto value = chunk.getValue<T>(i); |
| 151 | localBuffers.insert(value, nodeOffset + i, |
| 152 | getWarningDataFromChunks(warningData, i), errorHandler); |
| 153 | } |
| 154 | } |
| 155 | }, |
| 156 | [&](string_t) { |
| 157 | auto& stringColumnChunk = dynamic_cast_checked<const StringChunkData&>(chunk); |
| 158 | for (auto i = 0u; i < numNodes; i++) { |
| 159 | if (checkNonNullConstraint(chunk, warningData, nodeOffset, i, errorHandler)) { |
| 160 | auto value = stringColumnChunk.getValue<std::string>(i); |
| 161 | localBuffers.insert(std::move(value), nodeOffset + i, |
| 162 | getWarningDataFromChunks(warningData, i), errorHandler); |
| 163 | } |
| 164 | } |
| 165 | }, |
| 166 | [&](auto) { |
| 167 | throw CopyException(ExceptionMessage::invalidPKType(chunk.getDataType().toString())); |
| 168 | }); |
| 169 | } |
| 170 | |
| 171 | void IndexBuilder::finishedProducing(NodeBatchInsertErrorHandler& errorHandler) { |
| 172 | localBuffers.flush(errorHandler); |
no test coverage detected