MCPcopy Create free account
hub / github.com/apache/arrow / ExtractOneFieldValue

Function ExtractOneFieldValue

cpp/src/arrow/compute/expression.cc:925–950  ·  view source on GitHub ↗

\brief Extract an equality from an expression. Recognizes expressions of the form: equal(a, 2) is_null(a)

Source from the content-addressed store, hash-verified

923/// equal(a, 2)
924/// is_null(a)
925std::optional<std::pair<FieldRef, Datum>> ExtractOneFieldValue(
926 const Expression& guarantee) {
927 auto call = guarantee.call();
928 if (!call) return std::nullopt;
929
930 // search for an equality conditions between a field and a literal
931 if (call->function_name == "equal") {
932 auto ref = call->arguments[0].field_ref();
933 if (!ref) return std::nullopt;
934
935 auto lit = call->arguments[1].literal();
936 if (!lit) return std::nullopt;
937
938 return std::make_pair(*ref, *lit);
939 }
940
941 // ... or a known null field
942 if (call->function_name == "is_null") {
943 auto ref = call->arguments[0].field_ref();
944 if (!ref) return std::nullopt;
945
946 return std::make_pair(*ref, Datum(std::make_shared<NullScalar>()));
947 }
948
949 return std::nullopt;
950}
951
952// Conjunction members which are represented in known_values are erased from
953// conjunction_members

Callers 1

ExtractKnownFieldValuesFunction · 0.85

Calls 4

callMethod · 0.80
field_refMethod · 0.80
literalMethod · 0.80
DatumClass · 0.70

Tested by

no test coverage detected