| // Licensed to the Apache Software Foundation (ASF) under one | |
| // or more contributor license agreements. See the NOTICE file | |
| // distributed with this work for additional information | |
| // regarding copyright ownership. The ASF licenses this file | |
| // to you under the Apache License, Version 2.0 (the | |
| // "License"); you may not use this file except in compliance | |
| // with the License. You may obtain a copy of the License at | |
| // | |
| // http://www.apache.org/licenses/LICENSE-2.0 | |
| // | |
| // Unless required by applicable law or agreed to in writing, | |
| // software distributed under the License is distributed on an | |
| // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
| // KIND, either express or implied. See the License for the | |
| // specific language governing permissions and limitations | |
| // under the License. | |
| use pyo3::prelude::*; | |
| use crate::aggregate_udf::MySumUDF; | |
| use crate::catalog_provider::{FixedSchemaProvider, MyCatalogProvider, MyCatalogProviderList}; | |
| use crate::config::MyConfig; | |
| use crate::extension::{MyDataExtension, MyFunctionExtension, MyRuleExtension}; | |
| use crate::logical_extension_codec::MyLogicalExtensionCodec; | |
| use crate::name_only_codec::{NameOnlyFunction, NameOnlyUdfCodec}; | |
| use crate::physical_extension_codec::MyPhysicalExtensionCodec; | |
| use crate::physical_optimizer::MyPhysicalOptimizerRule; | |
| use crate::scalar_udf::IsNullUDF; | |
| use crate::table_function::MyTableFunction; | |
| use crate::table_provider::MyTableProvider; | |
| use crate::table_provider_factory::MyTableProviderFactory; | |
| use crate::window_udf::MyRankUDF; | |
| pub(crate) mod aggregate_udf; | |
| pub(crate) mod catalog_provider; | |
| pub(crate) mod config; | |
| pub(crate) mod extension; | |
| pub(crate) mod logical_extension_codec; | |
| pub(crate) mod name_only_codec; | |
| pub(crate) mod physical_extension_codec; | |
| pub(crate) mod physical_optimizer; | |
| pub(crate) mod required_udf; | |
| pub(crate) mod scalar_udf; | |
| pub(crate) mod table_function; | |
| pub(crate) mod table_provider; | |
| pub(crate) mod table_provider_factory; | |
| pub(crate) mod window_udf; | |
| #[pymodule] | |
| fn datafusion_ffi_example(m: &Bound<'_, PyModule>) -> PyResult<()> { | |
| pyo3_log::init(); | |
| m.add_class::<MyTableProvider>()?; | |
| m.add_class::<MyTableProviderFactory>()?; | |
| m.add_class::<MyTableFunction>()?; | |
| m.add_class::<MyCatalogProvider>()?; | |
| m.add_class::<MyCatalogProviderList>()?; | |
| m.add_class::<FixedSchemaProvider>()?; | |
| m.add_class::<IsNullUDF>()?; | |
| m.add_class::<MySumUDF>()?; | |
| m.add_class::<MyRankUDF>()?; | |
| m.add_class::<MyConfig>()?; | |
| m.add_class::<MyLogicalExtensionCodec>()?; | |
| m.add_class::<NameOnlyUdfCodec>()?; | |
| m.add_class::<NameOnlyFunction>()?; | |
| m.add_class::<MyPhysicalExtensionCodec>()?; | |
| m.add_class::<MyPhysicalOptimizerRule>()?; | |
| m.add_class::<MyFunctionExtension>()?; | |
| m.add_class::<MyRuleExtension>()?; | |
| m.add_class::<MyDataExtension>()?; | |
| Ok(()) | |
| } |