MCPcopy Create free account
hub / github.com/apache/paimon-rust / build_leaf_predicate_datum

Function build_leaf_predicate_datum

bindings/c/src/table.rs:658–717  ·  view source on GitHub ↗

Helper to build a leaf predicate that takes a datum, via PredicateBuilder.

(
    table: *const paimon_table,
    column: *const std::ffi::c_char,
    datum: &paimon_datum,
    build_fn: impl FnOnce(&PredicateBuilder, &str, Datum) -> paimon::Result<Predicate>,
)

Source from the content-addressed store, hash-verified

656
657/// Helper to build a leaf predicate that takes a datum, via PredicateBuilder.
658unsafe fn build_leaf_predicate_datum(
659 table: *const paimon_table,
660 column: *const std::ffi::c_char,
661 datum: &paimon_datum,
662 build_fn: impl FnOnce(&PredicateBuilder, &str, Datum) -> paimon::Result<Predicate>,
663) -> paimon_result_predicate {
664 if let Err(e) = check_non_null(table, "table") {
665 return paimon_result_predicate {
666 predicate: std::ptr::null_mut(),
667 error: e,
668 };
669 }
670 let col_name = match validate_cstr(column, "column") {
671 Ok(s) => s,
672 Err(e) => {
673 return paimon_result_predicate {
674 predicate: std::ptr::null_mut(),
675 error: e,
676 }
677 }
678 };
679
680 let d = match datum_from_c(datum) {
681 Ok(d) => d,
682 Err(e) => {
683 return paimon_result_predicate {
684 predicate: std::ptr::null_mut(),
685 error: e,
686 }
687 }
688 };
689
690 let table_ref = &*((*table).inner as *const Table);
691 let fields = table_ref.schema().fields();
692
693 let d = match coerce_integer_datum(d, fields, &col_name) {
694 Ok(d) => d,
695 Err(e) => {
696 return paimon_result_predicate {
697 predicate: std::ptr::null_mut(),
698 error: e,
699 }
700 }
701 };
702
703 let pb = PredicateBuilder::new(fields);
704 match build_fn(&pb, &col_name, d) {
705 Ok(pred) => {
706 let inner = Box::into_raw(Box::new(pred)) as *mut c_void;
707 paimon_result_predicate {
708 predicate: Box::into_raw(Box::new(paimon_predicate { inner })),
709 error: std::ptr::null_mut(),
710 }
711 }
712 Err(e) => paimon_result_predicate {
713 predicate: std::ptr::null_mut(),
714 error: paimon_error::from_paimon(e),
715 },

Calls 6

check_non_nullFunction · 0.85
validate_cstrFunction · 0.85
datum_from_cFunction · 0.85
coerce_integer_datumFunction · 0.85
fieldsMethod · 0.45
schemaMethod · 0.45

Tested by

no test coverage detected