Skip to content

Commit 41d37d4

Browse files
authored
feat: add mount api and ci task for register all udfs (#44)
* feat: add mount api and ci task for register all udfs * feat: add finer register functions
1 parent d2a4a23 commit 41d37d4

File tree

10 files changed

+106
-0
lines changed

10 files changed

+106
-0
lines changed

rust/geodatafusion/src/lib.rs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,24 @@
99
pub(crate) mod data_types;
1010
pub(crate) mod error;
1111
pub mod udf;
12+
13+
/// Register all UDFs defined in geodatafusion
14+
pub fn register(session_context: &datafusion::prelude::SessionContext) {
15+
crate::udf::geo::measurement::register(session_context);
16+
17+
crate::udf::geo::processing::register(session_context);
18+
19+
crate::udf::geo::relationships::register(session_context);
20+
21+
crate::udf::geo::validation::register(session_context);
22+
23+
crate::udf::geohash::register(session_context);
24+
25+
crate::udf::native::accessors::register(session_context);
26+
27+
crate::udf::native::bounding_box::register(session_context);
28+
29+
crate::udf::native::constructors::register(session_context);
30+
31+
crate::udf::native::io::register(session_context);
32+
}

rust/geodatafusion/src/udf/geo/measurement/mod.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,9 @@ mod length;
55
pub use area::Area;
66
pub use distance::Distance;
77
pub use length::Length;
8+
9+
pub fn register(session_context: &datafusion::prelude::SessionContext) {
10+
session_context.register_udf(Area::default().into());
11+
session_context.register_udf(Distance::default().into());
12+
session_context.register_udf(Length::default().into());
13+
}

rust/geodatafusion/src/udf/geo/processing/mod.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,13 @@ pub use convex_hull::ConvexHull;
99
pub use oriented_envelope::OrientedEnvelope;
1010
pub use point_on_surface::PointOnSurface;
1111
pub use simplify::{Simplify, SimplifyPreserveTopology, SimplifyVW};
12+
13+
pub fn register(session_context: &datafusion::prelude::SessionContext) {
14+
session_context.register_udf(Centroid::default().into());
15+
session_context.register_udf(ConvexHull::default().into());
16+
session_context.register_udf(OrientedEnvelope::default().into());
17+
session_context.register_udf(PointOnSurface::default().into());
18+
session_context.register_udf(Simplify::default().into());
19+
session_context.register_udf(SimplifyPreserveTopology::default().into());
20+
session_context.register_udf(SimplifyVW::default().into());
21+
}

rust/geodatafusion/src/udf/geo/relationships/mod.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,16 @@ mod topological;
33
pub use topological::{
44
Contains, CoveredBy, Covers, Crosses, Disjoint, Equals, Intersects, Overlaps, Touches, Within,
55
};
6+
7+
pub fn register(session_context: &datafusion::prelude::SessionContext) {
8+
session_context.register_udf(Contains::default().into());
9+
session_context.register_udf(CoveredBy::default().into());
10+
session_context.register_udf(Covers::default().into());
11+
session_context.register_udf(Crosses::default().into());
12+
session_context.register_udf(Disjoint::default().into());
13+
session_context.register_udf(Equals::default().into());
14+
session_context.register_udf(Intersects::default().into());
15+
session_context.register_udf(Overlaps::default().into());
16+
session_context.register_udf(Touches::default().into());
17+
session_context.register_udf(Within::default().into());
18+
}

rust/geodatafusion/src/udf/geo/validation/mod.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,8 @@ mod is_valid_reason;
33

44
pub use is_valid::IsValid;
55
pub use is_valid_reason::IsValidReason;
6+
7+
pub fn register(session_context: &datafusion::prelude::SessionContext) {
8+
session_context.register_udf(IsValid::default().into());
9+
session_context.register_udf(IsValidReason::default().into());
10+
}

rust/geodatafusion/src/udf/geohash/mod.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,9 @@ mod point_from_geohash;
66
pub use box2d_from_geohash::Box2DFromGeoHash;
77
pub use geohash::GeoHash;
88
pub use point_from_geohash::PointFromGeoHash;
9+
10+
pub fn register(session_context: &datafusion::prelude::SessionContext) {
11+
session_context.register_udf(GeoHash::default().into());
12+
session_context.register_udf(Box2DFromGeoHash::default().into());
13+
session_context.register_udf(PointFromGeoHash::default().into());
14+
}

rust/geodatafusion/src/udf/native/accessors/mod.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,18 @@ pub use line_string::{EndPoint, StartPoint};
1111
pub use npoints::NPoints;
1212
pub use num_interior_rings::NumInteriorRings;
1313
pub use point::{M, X, Y, Z};
14+
15+
pub fn register(session_context: &datafusion::prelude::SessionContext) {
16+
session_context.register_udf(CoordDim::default().into());
17+
session_context.register_udf(NDims::default().into());
18+
session_context.register_udf(GeometryType::default().into());
19+
session_context.register_udf(ST_GeometryType::default().into());
20+
session_context.register_udf(EndPoint::default().into());
21+
session_context.register_udf(StartPoint::default().into());
22+
session_context.register_udf(NPoints::default().into());
23+
session_context.register_udf(NumInteriorRings::default().into());
24+
session_context.register_udf(M::default().into());
25+
session_context.register_udf(X::default().into());
26+
session_context.register_udf(Y::default().into());
27+
session_context.register_udf(Z::default().into());
28+
}

rust/geodatafusion/src/udf/native/bounding_box/mod.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,17 @@ pub use r#box::{Box2D, Box3D};
99
pub use extent::Extent;
1010
pub use extrema::{XMax, XMin, YMax, YMin, ZMax, ZMin};
1111
pub use make_box::{MakeBox2D, MakeBox3D};
12+
13+
pub fn register(session_context: &datafusion::prelude::SessionContext) {
14+
session_context.register_udf(Box2D::default().into());
15+
session_context.register_udf(Box3D::default().into());
16+
session_context.register_udaf(Extent::default().into());
17+
session_context.register_udf(XMax::default().into());
18+
session_context.register_udf(XMin::default().into());
19+
session_context.register_udf(YMax::default().into());
20+
session_context.register_udf(YMin::default().into());
21+
session_context.register_udf(ZMax::default().into());
22+
session_context.register_udf(ZMin::default().into());
23+
session_context.register_udf(MakeBox2D::default().into());
24+
session_context.register_udf(MakeBox3D::default().into());
25+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
11
mod point;
22

33
pub use point::{MakePoint, MakePointM, Point, PointM, PointZ, PointZM};
4+
5+
pub fn register(session_context: &datafusion::prelude::SessionContext) {
6+
session_context.register_udf(MakePoint::default().into());
7+
session_context.register_udf(MakePointM::default().into());
8+
session_context.register_udf(Point::default().into());
9+
session_context.register_udf(PointM::default().into());
10+
session_context.register_udf(PointZ::default().into());
11+
session_context.register_udf(PointZM::default().into());
12+
}

rust/geodatafusion/src/udf/native/io/mod.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,10 @@ mod wkt;
55

66
pub use wkb::{AsBinary, GeomFromWKB};
77
pub use wkt::{AsText, GeomFromText};
8+
9+
pub fn register(session_context: &datafusion::prelude::SessionContext) {
10+
session_context.register_udf(AsBinary::default().into());
11+
session_context.register_udf(GeomFromWKB::default().into());
12+
session_context.register_udf(AsText::default().into());
13+
session_context.register_udf(GeomFromText::default().into());
14+
}

0 commit comments

Comments
 (0)