pub struct JsonbObjectKeys { /* private fields */ }Expand description
A scalar UDF that extracts the keys from a JSONB object.
Accepts both Binary and Dictionary<Int32, Binary> inputs.
Returns List<Utf8> containing the object keys, or null if input is not an object.
A Dictionary<Int32, Binary> input takes a fast path that extracts each unique blob once
(take-expanded to row count), since JSONB values (especially properties) are often
repeated; the returned list is never dictionary-encoded — unnest() and SELECT DISTINCT
need a plain list to work directly, without an arrow_cast workaround.
Implementations§
Source§impl JsonbObjectKeys
impl JsonbObjectKeys
pub fn new() -> JsonbObjectKeys
Trait Implementations§
Source§impl Debug for JsonbObjectKeys
impl Debug for JsonbObjectKeys
Source§impl Default for JsonbObjectKeys
impl Default for JsonbObjectKeys
Source§fn default() -> JsonbObjectKeys
fn default() -> JsonbObjectKeys
impl Eq for JsonbObjectKeys
Source§impl Hash for JsonbObjectKeys
impl Hash for JsonbObjectKeys
Source§impl PartialEq for JsonbObjectKeys
impl PartialEq for JsonbObjectKeys
Source§impl ScalarUDFImpl for JsonbObjectKeys
impl ScalarUDFImpl for JsonbObjectKeys
Source§fn signature(&self) -> &Signature
fn signature(&self) -> &Signature
Signature] describing the argument types for which this
function has an implementation, and the function’s Volatility. Read moreSource§fn return_type(&self, _args: &[DataType]) -> Result<DataType, DataFusionError>
fn return_type(&self, _args: &[DataType]) -> Result<DataType, DataFusionError>
DataType] returned by this function, given the types of the
arguments. Read moreSource§fn invoke_with_args(
&self,
args: ScalarFunctionArgs,
) -> Result<ColumnarValue, DataFusionError>
fn invoke_with_args( &self, args: ScalarFunctionArgs, ) -> Result<ColumnarValue, DataFusionError>
§fn display_name(&self, args: &[Expr]) -> Result<String, DataFusionError>
fn display_name(&self, args: &[Expr]) -> Result<String, DataFusionError>
This method is unused and will be removed in a future release
§fn schema_name(&self, args: &[Expr]) -> Result<String, DataFusionError>
fn schema_name(&self, args: &[Expr]) -> Result<String, DataFusionError>
§fn with_updated_config(&self, _config: &ConfigOptions) -> Option<ScalarUDF>
fn with_updated_config(&self, _config: &ConfigOptions) -> Option<ScalarUDF>
§fn return_field_from_args(
&self,
args: ReturnFieldArgs<'_>,
) -> Result<Arc<Field>, DataFusionError>
fn return_field_from_args( &self, args: ReturnFieldArgs<'_>, ) -> Result<Arc<Field>, DataFusionError>
§fn is_nullable(&self, _args: &[Expr], _schema: &dyn ExprSchema) -> bool
fn is_nullable(&self, _args: &[Expr], _schema: &dyn ExprSchema) -> bool
Use return_field_from_args instead. if you use is_nullable that returns non-nullable with return_type, you would need to switch to return_field_from_args, you might have error
§fn is_strict(&self) -> bool
fn is_strict(&self) -> bool
§fn simplify(
&self,
args: Vec<Expr>,
_info: &SimplifyContext,
) -> Result<ExprSimplifyResult, DataFusionError>
fn simplify( &self, args: Vec<Expr>, _info: &SimplifyContext, ) -> Result<ExprSimplifyResult, DataFusionError>
§fn preimage(
&self,
_args: &[Expr],
_lit_expr: &Expr,
_info: &SimplifyContext,
) -> Result<PreimageResult, DataFusionError>
fn preimage( &self, _args: &[Expr], _lit_expr: &Expr, _info: &SimplifyContext, ) -> Result<PreimageResult, DataFusionError>
§fn short_circuits(&self) -> bool
fn short_circuits(&self) -> bool
exprs subexpressions may not be evaluated
and thus any side effects (like divide by zero) may not be encountered. Read more§fn conditional_arguments<'a>(
&self,
args: &'a [Expr],
) -> Option<(Vec<&'a Expr>, Vec<&'a Expr>)>
fn conditional_arguments<'a>( &self, args: &'a [Expr], ) -> Option<(Vec<&'a Expr>, Vec<&'a Expr>)>
§fn evaluate_bounds(
&self,
_input: &[&Interval],
) -> Result<Interval, DataFusionError>
fn evaluate_bounds( &self, _input: &[&Interval], ) -> Result<Interval, DataFusionError>
§fn propagate_constraints(
&self,
_interval: &Interval,
_inputs: &[&Interval],
) -> Result<Option<Vec<Interval>>, DataFusionError>
fn propagate_constraints( &self, _interval: &Interval, _inputs: &[&Interval], ) -> Result<Option<Vec<Interval>>, DataFusionError>
Interval]s for this
function. Read more§fn output_ordering(
&self,
inputs: &[ExprProperties],
) -> Result<SortProperties, DataFusionError>
fn output_ordering( &self, inputs: &[ExprProperties], ) -> Result<SortProperties, DataFusionError>
SortProperties] of this function based on its children’s properties.§fn preserves_lex_ordering(
&self,
_inputs: &[ExprProperties],
) -> Result<bool, DataFusionError>
fn preserves_lex_ordering( &self, _inputs: &[ExprProperties], ) -> Result<bool, DataFusionError>
§fn strictly_order_preserving(
&self,
_inputs: &[ExprProperties],
) -> Result<bool, DataFusionError>
fn strictly_order_preserving( &self, _inputs: &[ExprProperties], ) -> Result<bool, DataFusionError>
Ordered inputs, i.e. a.cmp(b) == f(a).cmp(f(b)). Read more§fn coerce_types(
&self,
_arg_types: &[DataType],
) -> Result<Vec<DataType>, DataFusionError>
fn coerce_types( &self, _arg_types: &[DataType], ) -> Result<Vec<DataType>, DataFusionError>
§fn struct_field_mapping(
&self,
_literal_args: &[Option<ScalarValue>],
) -> Option<StructFieldMapping>
fn struct_field_mapping( &self, _literal_args: &[Option<ScalarValue>], ) -> Option<StructFieldMapping>
§fn documentation(&self) -> Option<&Documentation>
fn documentation(&self) -> Option<&Documentation>
impl StructuralPartialEq for JsonbObjectKeys
Auto Trait Implementations§
impl !RefUnwindSafe for JsonbObjectKeys
impl !UnwindSafe for JsonbObjectKeys
impl Freeze for JsonbObjectKeys
impl Send for JsonbObjectKeys
impl Sync for JsonbObjectKeys
impl Unpin for JsonbObjectKeys
impl UnsafeUnpin for JsonbObjectKeys
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Requestimpl<T> Key for T
§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].