datafusion_ffi/
insert_op.rs1use abi_stable::StableAbi;
19use datafusion_expr::logical_plan::dml::InsertOp;
20
21#[repr(C)]
23#[derive(StableAbi)]
24pub enum FFI_InsertOp {
25 Append,
26 Overwrite,
27 Replace,
28}
29
30impl From<FFI_InsertOp> for InsertOp {
31 fn from(value: FFI_InsertOp) -> Self {
32 match value {
33 FFI_InsertOp::Append => InsertOp::Append,
34 FFI_InsertOp::Overwrite => InsertOp::Overwrite,
35 FFI_InsertOp::Replace => InsertOp::Replace,
36 }
37 }
38}
39
40impl From<InsertOp> for FFI_InsertOp {
41 fn from(value: InsertOp) -> Self {
42 match value {
43 InsertOp::Append => FFI_InsertOp::Append,
44 InsertOp::Overwrite => FFI_InsertOp::Overwrite,
45 InsertOp::Replace => FFI_InsertOp::Replace,
46 }
47 }
48}
49
50#[cfg(test)]
51mod tests {
52 use datafusion::logical_expr::dml::InsertOp;
53
54 use super::FFI_InsertOp;
55
56 fn test_round_trip_insert_op(insert_op: InsertOp) {
57 let ffi_insert_op: FFI_InsertOp = insert_op.into();
58 let round_trip: InsertOp = ffi_insert_op.into();
59
60 assert_eq!(insert_op, round_trip);
61 }
62
63 #[test]
66 fn test_all_round_trip_insert_ops() {
67 test_round_trip_insert_op(InsertOp::Append);
68 test_round_trip_insert_op(InsertOp::Overwrite);
69 test_round_trip_insert_op(InsertOp::Replace);
70 }
71}