| 29 | namespace { |
| 30 | |
| 31 | Result<RowTableImpl> MakeRowTableFromColumn(const std::shared_ptr<Array>& column, |
| 32 | int64_t num_rows, int row_alignment, |
| 33 | int string_alignment) { |
| 34 | DCHECK_GE(column->length(), num_rows); |
| 35 | MemoryPool* pool = default_memory_pool(); |
| 36 | |
| 37 | std::vector<KeyColumnArray> column_arrays; |
| 38 | std::vector<Datum> values{column}; |
| 39 | ExecBatch batch(std::move(values), num_rows); |
| 40 | RETURN_NOT_OK(ColumnArraysFromExecBatch(batch, &column_arrays)); |
| 41 | |
| 42 | std::vector<KeyColumnMetadata> column_metadatas; |
| 43 | RETURN_NOT_OK(ColumnMetadatasFromExecBatch(batch, &column_metadatas)); |
| 44 | RowTableMetadata table_metadata; |
| 45 | table_metadata.FromColumnMetadataVector(column_metadatas, row_alignment, |
| 46 | string_alignment); |
| 47 | |
| 48 | RowTableImpl row_table; |
| 49 | RETURN_NOT_OK(row_table.Init(pool, table_metadata)); |
| 50 | |
| 51 | RowTableEncoder row_encoder; |
| 52 | row_encoder.Init(column_metadatas, row_alignment, string_alignment); |
| 53 | row_encoder.PrepareEncodeSelected(0, num_rows, column_arrays); |
| 54 | |
| 55 | std::vector<uint16_t> row_ids(num_rows); |
| 56 | std::iota(row_ids.begin(), row_ids.end(), 0); |
| 57 | |
| 58 | RETURN_NOT_OK(row_encoder.EncodeSelected(&row_table, static_cast<uint32_t>(num_rows), |
| 59 | row_ids.data())); |
| 60 | |
| 61 | return row_table; |
| 62 | } |
| 63 | |
| 64 | } // namespace |
| 65 |
no test coverage detected