1use std::sync::Arc;
5
6use vortex_array::arrow::ArrowSessionExt;
7use vortex_array::dtype::session::DTypeSessionExt;
8use vortex_array::scalar_fn::session::ScalarFnSessionExt;
9use vortex_session::VortexSession;
10
11use crate::extension::Point;
12use crate::extension::Polygon;
13use crate::extension::WellKnownBinary;
14use crate::scalar_fn::distance::GeoDistance;
15
16pub mod extension;
17pub mod scalar_fn;
18#[cfg(test)]
19mod test_harness;
20#[cfg(test)]
21mod tests;
22
23pub fn initialize(session: &VortexSession) {
25 session.dtypes().register(WellKnownBinary);
27 session.arrow().register_exporter(Arc::new(WellKnownBinary));
28 session.arrow().register_importer(Arc::new(WellKnownBinary));
29 session.dtypes().register(Point);
30 session.arrow().register_exporter(Arc::new(Point));
31 session.arrow().register_importer(Arc::new(Point));
32 session.dtypes().register(Polygon);
33 session.arrow().register_exporter(Arc::new(Polygon));
34 session.arrow().register_importer(Arc::new(Polygon));
35
36 session.scalar_fns().register(GeoDistance);
38}