| 125 | |
| 126 | template<std::floating_point T> |
| 127 | void CompressChunkTest::testCompressChunk(const std::vector<T>& bufferToCompress, |
| 128 | check_func_t checkFunc) { |
| 129 | auto* mm = getMemoryManager(*database); |
| 130 | auto* storageManager = getStorageManager(*database); |
| 131 | auto* dataFH = storageManager->getDataFH(); |
| 132 | |
| 133 | const auto dataType = std::is_same_v<float, T> ? LogicalType::FLOAT() : LogicalType::DOUBLE(); |
| 134 | const auto alg = std::make_shared<FloatCompression<T>>(); |
| 135 | |
| 136 | const auto preScanMetadata = getFloatMetadata(bufferToCompress, alg); |
| 137 | auto chunkMetadata = |
| 138 | compressBuffer(bufferToCompress, alg, preScanMetadata.get(), dataFH, dataType); |
| 139 | |
| 140 | auto columnReader = ColumnReadWriterFactory::createColumnReadWriter(dataType.getPhysicalType(), |
| 141 | dataFH, &storageManager->getShadowFile()); |
| 142 | |
| 143 | conn->query("BEGIN TRANSACTION;"); |
| 144 | |
| 145 | SegmentState state; |
| 146 | state.metadata = chunkMetadata; |
| 147 | state.numValuesPerPage = state.metadata.compMeta.numValues(LBUG_PAGE_SIZE, dataType); |
| 148 | if (chunkMetadata.compMeta.compression == CompressionType::ALP) { |
| 149 | state.alpExceptionChunk = std::make_unique<InMemoryExceptionChunk<T>>(state, dataFH, mm, |
| 150 | &storageManager->getShadowFile()); |
| 151 | } |
| 152 | |
| 153 | checkFunc(columnReader.get(), state, dataType); |
| 154 | } |
| 155 | |
| 156 | template<std::floating_point T> |
| 157 | void CompressChunkTest::testUpdateChunk(std::vector<T>& bufferToCompress, check_func_t updateFunc) { |
nothing calls this directly
no test coverage detected