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