Skip to main content

laminar_sql/datafusion/json_extensions/
mod.rs

1//! LaminarDB JSON transformation UDFs.
2//!
3//! Object operations own merge, cleanup, and key selection. Shape operations own flattening,
4//! reconstruction, column extraction, and schema inference.
5
6mod object_ops;
7mod shape_ops;
8
9pub use object_ops::{
10    JsonbDeepMerge, JsonbExcept, JsonbMerge, JsonbPick, JsonbRenameKeys, JsonbStripNulls,
11};
12pub use shape_ops::{JsonInferSchema, JsonToColumns, JsonbFlatten, JsonbUnflatten};
13
14/// Registers all JSON extension UDFs with the given session context.
15pub fn register_json_extensions(ctx: &datafusion::prelude::SessionContext) {
16    use datafusion_expr::ScalarUDF;
17
18    ctx.register_udf(ScalarUDF::new_from_impl(JsonbMerge::new()));
19    ctx.register_udf(ScalarUDF::new_from_impl(JsonbDeepMerge::new()));
20    ctx.register_udf(ScalarUDF::new_from_impl(JsonbStripNulls::new()));
21    ctx.register_udf(ScalarUDF::new_from_impl(JsonbRenameKeys::new()));
22    ctx.register_udf(ScalarUDF::new_from_impl(JsonbPick::new()));
23    ctx.register_udf(ScalarUDF::new_from_impl(JsonbExcept::new()));
24    ctx.register_udf(ScalarUDF::new_from_impl(JsonbFlatten::new()));
25    ctx.register_udf(ScalarUDF::new_from_impl(JsonbUnflatten::new()));
26    ctx.register_udf(ScalarUDF::new_from_impl(JsonToColumns::new()));
27    ctx.register_udf(ScalarUDF::new_from_impl(JsonInferSchema::new()));
28}
29
30#[cfg(test)]
31mod tests;