| 308 | use crate::writer::SegmentWriter; |
| 309 | |
| 310 | fn write_test_segment(rows: usize) -> Vec<u8> { |
| 311 | let schema = ColumnarSchema::new(vec![ |
| 312 | ColumnDef::required("id", ColumnType::Int64).with_primary_key(), |
| 313 | ColumnDef::required("name", ColumnType::String), |
| 314 | ColumnDef::nullable("score", ColumnType::Float64), |
| 315 | ]) |
| 316 | .expect("valid"); |
| 317 | |
| 318 | let mut mt = ColumnarMemtable::new(&schema); |
| 319 | for i in 0..rows { |
| 320 | mt.append_row(&[ |
| 321 | Value::Integer(i as i64), |
| 322 | Value::String(format!("user_{i}")), |
| 323 | if i % 5 == 0 { |
| 324 | Value::Null |
| 325 | } else { |
| 326 | Value::Float(i as f64 * 0.5) |
| 327 | }, |
| 328 | ]) |
| 329 | .expect("append"); |
| 330 | } |
| 331 | |
| 332 | let (schema, columns, row_count) = mt.drain(); |
| 333 | SegmentWriter::plain() |
| 334 | .write_segment(&schema, &columns, row_count, None) |
| 335 | .expect("write") |
| 336 | } |
| 337 | |
| 338 | // ── ResolvedColumnCodec reader tests ────────────────────────────────────── |
| 339 | |