in src/codec.rs [180:212]
fn max_rows_and_reader_round_trip() {
let schema = Arc::new(arrow::datatypes::Schema::new(vec![
arrow::datatypes::Field::new("a", DataType::Int32, false),
arrow::datatypes::Field::new("b", DataType::Int32, false),
]));
let ctx = SessionContext::new();
let part = Partitioning::UnknownPartitioning(2);
let exec = Arc::new(MaxRowsExec::new(
Arc::new(DFRayStageReaderExec::try_new(part, schema, 1).unwrap()),
10,
));
let codec = RayCodec {};
// serialize execution plan to proto
let proto: protobuf::PhysicalPlanNode =
protobuf::PhysicalPlanNode::try_from_physical_plan(exec.clone(), &codec)
.expect("to proto");
// deserialize proto back to execution plan
let runtime = ctx.runtime_env();
let result_exec_plan: Arc<dyn ExecutionPlan> = proto
.try_into_physical_plan(&ctx, runtime.as_ref(), &codec)
.expect("from proto");
let input = displayable(exec.as_ref()).indent(true).to_string();
let round_trip = {
let plan: &dyn ExecutionPlan = result_exec_plan.as_ref();
DisplayableExecutionPlan::new(plan)
}
.indent(true)
.to_string();
assert_eq!(input, round_trip);
}