Skip to content

Commit e8c94de

Browse files
committed
test: cover multipartition MemTable overwrite
1 parent 6a6f047 commit e8c94de

1 file changed

Lines changed: 41 additions & 0 deletions

File tree

datafusion/core/src/datasource/memory_test.rs

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -520,6 +520,47 @@ mod tests {
520520
Ok(())
521521
}
522522

523+
#[tokio::test]
524+
async fn test_insert_overwrite_replaces_multiple_partitions() -> Result<()> {
525+
let schema = Arc::new(Schema::new(vec![Field::new("a", DataType::Int32, false)]));
526+
let batch = |values| {
527+
RecordBatch::try_new(
528+
Arc::clone(&schema),
529+
vec![Arc::new(Int32Array::from(values))],
530+
)
531+
};
532+
533+
let resulting_data = experiment_with_insert_op(
534+
Arc::clone(&schema),
535+
vec![vec![batch(vec![1])?], vec![batch(vec![2])?]],
536+
vec![vec![
537+
batch(vec![10])?,
538+
batch(vec![20])?,
539+
batch(vec![30])?,
540+
batch(vec![40])?,
541+
]],
542+
InsertOp::Overwrite,
543+
)
544+
.await?;
545+
546+
assert_eq!(resulting_data.len(), 2);
547+
for (partition, expected) in resulting_data.iter().zip([[10, 30], [20, 40]]) {
548+
let actual = partition
549+
.iter()
550+
.flat_map(|batch| {
551+
batch
552+
.column(0)
553+
.as_primitive::<Int32Type>()
554+
.values()
555+
.iter()
556+
.copied()
557+
})
558+
.collect::<Vec<_>>();
559+
assert_eq!(actual, expected);
560+
}
561+
Ok(())
562+
}
563+
523564
#[tokio::test]
524565
async fn test_insert_overwrite_with_empty_input_clears_table() -> Result<()> {
525566
let schema = Arc::new(Schema::new(vec![Field::new("a", DataType::Int32, false)]));

0 commit comments

Comments
 (0)