Skip to content

Commit 96d50e7

Browse files
committed
visitors as a separate crate
1 parent 18ab0d4 commit 96d50e7

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+144
-134
lines changed

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ members = [
1414
"crates/core-metastore",
1515
"crates/core-utils",
1616
"crates/api-sessions",
17+
"crates/visitors",
1718
]
1819
resolver = "2"
1920
package.license-file = "LICENSE"

crates/core-executor/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ core-utils = { path = "../core-utils" }
99
core-metastore = { path = "../core-metastore" }
1010
df-builtins = { path = "../df-builtins" }
1111
df-catalog = { path = "../df-catalog" }
12-
12+
visitors = { path = "../visitors" }
1313
async-trait = { workspace = true }
1414
aws-config = { workspace = true }
1515
aws-credential-types = { workspace = true }

crates/core-executor/src/datafusion/mod.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,5 @@ pub mod error;
55
pub mod physical_optimizer;
66
pub mod planner;
77
pub mod type_planner;
8-
pub mod visitors;
98

109
pub use df_builtins as functions;

crates/core-executor/src/query.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,12 @@ use super::datafusion::planner::ExtendedSqlToRel;
5353
use super::error::{self as ex_error, ExecutionError, ExecutionResult, RefreshCatalogListSnafu};
5454
use super::session::UserSession;
5555
use super::utils::{NormalizedIdent, is_logical_plan_effectively_empty};
56-
use crate::datafusion::visitors::{copy_into_identifiers, functions_rewriter, json_element};
5756
use df_catalog::catalog::CachingCatalog;
5857
use df_catalog::catalogs::slatedb::schema::{
5958
SLATEDB_CATALOG, SLATEDB_SCHEMA, SlateDBViewSchemaProvider,
6059
};
6160
use tracing_attributes::instrument;
61+
use visitors::{copy_into_identifiers, functions_rewriter, json_element};
6262

6363
#[derive(Default, Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
6464
pub struct QueryContext {

crates/core-executor/src/session.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,14 @@ use df_catalog::catalog_list::{DEFAULT_CATALOG, EmbucketCatalogList};
2929
// TODO: We need to fix this after geodatafusion is updated to datafusion 47
3030
//use geodatafusion::udf::native::register_native as register_geo_native;
3131
use crate::datafusion::physical_optimizer::physical_optimizer_rules;
32+
use df_builtins::table::register_udtfs;
3233
use iceberg_rust::object_store::ObjectStoreBuilder;
3334
use iceberg_s3tables_catalog::S3TablesCatalog;
3435
use snafu::ResultExt;
3536
use std::any::Any;
3637
use std::collections::HashMap;
3738
use std::env;
3839
use std::sync::Arc;
39-
use df_builtins::table::register_udtfs;
4040

4141
pub struct UserSession {
4242
pub metastore: Arc<dyn Metastore>,

crates/df-builtins/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ edition = "2024"
55
license-file.workspace = true
66

77
[dependencies]
8+
visitors = { path = "../visitors" }
89
chrono = { workspace = true }
910
datafusion = { workspace = true }
1011
datafusion-common = { workspace = true }

crates/df-builtins/src/aggregate/object_agg.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,18 @@ use std::any::Any;
44
use std::collections::HashSet;
55
use std::sync::Arc;
66

7-
use datafusion::arrow::array::as_list_array;
8-
use datafusion::arrow::datatypes::{DataType, Field, Fields};
97
use datafusion::arrow::array::StringArray;
10-
use datafusion::arrow::array::{new_empty_array, Array};
8+
use datafusion::arrow::array::as_list_array;
9+
use datafusion::arrow::array::{Array, new_empty_array};
1110
use datafusion::arrow::array::{ArrayRef, StructArray};
11+
use datafusion::arrow::datatypes::{DataType, Field, Fields};
1212
use datafusion::common::ScalarValue;
1313

1414
use datafusion_common::utils::SingleRowListArrayBuilder;
15-
use datafusion_common::{exec_err, internal_err, DataFusionError, Result};
15+
use datafusion_common::{DataFusionError, Result, exec_err, internal_err};
16+
use datafusion_expr::Volatility;
1617
use datafusion_expr::function::{AccumulatorArgs, StateFieldsArgs};
1718
use datafusion_expr::utils::format_state_name;
18-
use datafusion_expr::Volatility;
1919
use datafusion_expr::{Accumulator, AggregateUDFImpl, Signature};
2020

2121
#[derive(Debug, Clone)]
@@ -252,9 +252,9 @@ mod tests {
252252
use super::*;
253253
use datafusion::arrow::datatypes::{Field, Schema};
254254
use datafusion::physical_expr::LexOrdering;
255-
use datafusion_common::{internal_err, Result};
256-
use datafusion_physical_plan::expressions::Column;
255+
use datafusion_common::{Result, internal_err};
257256
use datafusion_physical_plan::Accumulator;
257+
use datafusion_physical_plan::expressions::Column;
258258
use serde_json::json;
259259
use serde_json::{Map as JsonMap, Value as JsonValue};
260260
use std::sync::Arc;

crates/df-builtins/src/variant/array_cat.rs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
use super::super::macros::make_udf_function;
2-
use datafusion::arrow::datatypes::DataType;
3-
use datafusion::arrow::array::cast::AsArray;
42
use datafusion::arrow::array::Array;
3+
use datafusion::arrow::array::cast::AsArray;
4+
use datafusion::arrow::datatypes::DataType;
55
use datafusion_common::{Result as DFResult, ScalarValue};
66
use datafusion_expr::{
77
ColumnarValue, ScalarFunctionArgs, ScalarUDFImpl, Signature, TypeSignature, Volatility,
88
};
9-
use serde_json::{from_str, to_string, Value};
9+
use serde_json::{Value, from_str, to_string};
1010
use std::sync::Arc;
1111

1212
#[derive(Debug, Clone)]
@@ -184,10 +184,10 @@ make_udf_function!(ArrayCatUDF);
184184
#[allow(clippy::unwrap_used)]
185185
mod tests {
186186
use super::*;
187+
use crate::variant::array_construct::ArrayConstructUDF;
187188
use datafusion::assert_batches_eq;
188189
use datafusion::prelude::SessionContext;
189190
use datafusion_expr::ScalarUDF;
190-
use crate::variant::array_construct::ArrayConstructUDF;
191191

192192
#[tokio::test]
193193
async fn test_array_cat() -> DFResult<()> {
@@ -197,7 +197,6 @@ mod tests {
197197
ctx.register_udf(ScalarUDF::from(ArrayConstructUDF::new()));
198198
ctx.register_udf(ScalarUDF::from(ArrayCatUDF::new()));
199199

200-
201200
// Test concatenating two arrays
202201
let sql = "SELECT array_cat(array_construct(1, 2), array_construct(3, 4)) as concatenated";
203202
let result = ctx.sql(sql).await?.collect().await?;

crates/df-builtins/src/variant/array_compact.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
use super::super::macros::make_udf_function;
2-
use datafusion::arrow::datatypes::DataType;
3-
use datafusion::arrow::array::cast::AsArray;
42
use datafusion::arrow::array::Array;
3+
use datafusion::arrow::array::cast::AsArray;
4+
use datafusion::arrow::datatypes::DataType;
55
use datafusion_common::{Result as DFResult, ScalarValue};
66
use datafusion_expr::{
77
ColumnarValue, ScalarFunctionArgs, ScalarUDFImpl, Signature, TypeSignature, Volatility,
88
};
9-
use serde_json::{to_string, Value};
9+
use serde_json::{Value, to_string};
1010
use std::sync::Arc;
1111

1212
#[derive(Debug, Clone)]
@@ -126,10 +126,10 @@ make_udf_function!(ArrayCompactUDF);
126126
#[allow(clippy::unwrap_used)]
127127
mod tests {
128128
use super::*;
129+
use crate::variant::array_construct::ArrayConstructUDF;
129130
use datafusion::assert_batches_eq;
130131
use datafusion::prelude::SessionContext;
131132
use datafusion_expr::ScalarUDF;
132-
use crate::variant::array_construct::ArrayConstructUDF;
133133

134134
#[tokio::test]
135135
async fn test_array_compact() -> DFResult<()> {

crates/df-builtins/src/variant/array_construct.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,10 +112,10 @@ make_udf_function!(ArrayConstructUDF);
112112
#[allow(clippy::unwrap_used)]
113113
mod tests {
114114
use super::*;
115+
use crate::variant::array_cat::ArrayCatUDF;
115116
use datafusion::assert_batches_eq;
116117
use datafusion::prelude::SessionContext;
117118
use datafusion_expr::ScalarUDF;
118-
use crate::variant::array_cat::ArrayCatUDF;
119119

120120
#[tokio::test]
121121
async fn test_array_construct() -> DFResult<()> {

crates/df-builtins/src/variant/array_contains.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
use super::super::macros::make_udf_function;
22
use super::json::{encode_array, encode_scalar};
3-
use datafusion::arrow::datatypes::DataType;
43
use datafusion::arrow::array::cast::AsArray;
4+
use datafusion::arrow::datatypes::DataType;
55
use datafusion_common::{Result as DFResult, ScalarValue};
66
use datafusion_expr::{
77
ColumnarValue, ScalarFunctionArgs, ScalarUDFImpl, Signature, TypeSignature, Volatility,
88
};
9-
use serde_json::{from_slice, Value};
9+
use serde_json::{Value, from_slice};
1010
use std::sync::Arc;
1111

1212
#[derive(Debug, Clone)]
@@ -140,10 +140,10 @@ make_udf_function!(ArrayContainsUDF);
140140
#[allow(clippy::unwrap_used)]
141141
mod tests {
142142
use super::*;
143+
use crate::variant::array_construct::ArrayConstructUDF;
143144
use datafusion::assert_batches_eq;
144145
use datafusion::prelude::SessionContext;
145146
use datafusion_expr::ScalarUDF;
146-
use crate::variant::array_construct::ArrayConstructUDF;
147147

148148
#[tokio::test]
149149
async fn test_array_contains() -> DFResult<()> {

crates/df-builtins/src/variant/array_distinct.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
use super::super::macros::make_udf_function;
2-
use datafusion::arrow::datatypes::DataType;
3-
use datafusion::arrow::array::cast::AsArray;
42
use datafusion::arrow::array::Array;
3+
use datafusion::arrow::array::cast::AsArray;
4+
use datafusion::arrow::datatypes::DataType;
55
use datafusion_common::types::{logical_binary, logical_string};
6-
use datafusion_common::{types::NativeType, Result as DFResult, ScalarValue};
6+
use datafusion_common::{Result as DFResult, ScalarValue, types::NativeType};
77
use datafusion_expr::{
88
Coercion, ColumnarValue, ScalarFunctionArgs, ScalarUDFImpl, Signature, TypeSignature,
99
TypeSignatureClass, Volatility,
1010
};
11-
use serde_json::{from_slice, to_string, Value};
11+
use serde_json::{Value, from_slice, to_string};
1212
use std::sync::Arc;
1313

1414
#[derive(Debug, Clone)]
@@ -130,10 +130,10 @@ make_udf_function!(ArrayDistinctUDF);
130130
#[allow(clippy::unwrap_used)]
131131
mod tests {
132132
use super::*;
133+
use crate::variant::array_construct::ArrayConstructUDF;
133134
use datafusion::assert_batches_eq;
134135
use datafusion::prelude::SessionContext;
135136
use datafusion_expr::ScalarUDF;
136-
use crate::variant::array_construct::ArrayConstructUDF;
137137

138138
#[tokio::test]
139139
async fn test_array_distinct() -> DFResult<()> {

crates/df-builtins/src/variant/array_except.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
use super::super::macros::make_udf_function;
2-
use datafusion::arrow::datatypes::DataType;
32
use datafusion::arrow::array::cast::AsArray;
3+
use datafusion::arrow::datatypes::DataType;
44
use datafusion_common::{Result as DFResult, ScalarValue};
55
use datafusion_expr::{
66
ColumnarValue, ScalarFunctionArgs, ScalarUDFImpl, Signature, TypeSignature, Volatility,
77
};
8-
use serde_json::{from_slice, Value};
8+
use serde_json::{Value, from_slice};
99
use std::sync::Arc;
1010

1111
#[derive(Debug, Clone)]
@@ -168,10 +168,10 @@ make_udf_function!(ArrayExceptUDF);
168168
#[allow(clippy::unwrap_used)]
169169
mod tests {
170170
use super::*;
171+
use crate::variant::array_construct::ArrayConstructUDF;
171172
use datafusion::assert_batches_eq;
172173
use datafusion::prelude::SessionContext;
173174
use datafusion_expr::ScalarUDF;
174-
use crate::variant::array_construct::ArrayConstructUDF;
175175

176176
#[tokio::test]
177177
async fn test_array_except() -> DFResult<()> {

crates/df-builtins/src/variant/array_flatten.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use crate::macros::make_udf_function;
12
use datafusion::arrow::array::as_string_array;
23
use datafusion::arrow::datatypes::DataType;
34
use datafusion::error::Result as DFResult;
@@ -8,7 +9,6 @@ use datafusion_expr::{ScalarFunctionArgs, ScalarUDFImpl};
89
use serde_json::{Map, Value};
910
use std::any::Any;
1011
use std::sync::Arc;
11-
use crate::macros::make_udf_function;
1212

1313
// array_flatten SQL function
1414
// Transforms a nested ARRAY (an ARRAY of ARRAYs) into a single, flat ARRAY by combining all inner ARRAYs into one continuous sequence.

crates/df-builtins/src/variant/array_insert.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
use super::super::macros::make_udf_function;
2-
use datafusion::arrow::datatypes::DataType;
3-
use datafusion::arrow::array::cast::AsArray;
42
use datafusion::arrow::array::Array;
3+
use datafusion::arrow::array::cast::AsArray;
4+
use datafusion::arrow::datatypes::DataType;
55
use datafusion_common::{Result as DFResult, ScalarValue};
66
use datafusion_expr::{
77
ColumnarValue, ScalarFunctionArgs, ScalarUDFImpl, Signature, TypeSignature, Volatility,
88
};
9-
use serde_json::{to_string, Value};
9+
use serde_json::{Value, to_string};
1010
use std::sync::Arc;
1111

1212
#[derive(Debug, Clone)]
@@ -175,10 +175,10 @@ make_udf_function!(ArrayInsertUDF);
175175
#[allow(clippy::unwrap_used)]
176176
mod tests {
177177
use super::*;
178+
use crate::variant::array_construct::ArrayConstructUDF;
178179
use datafusion::assert_batches_eq;
179180
use datafusion::prelude::SessionContext;
180181
use datafusion_expr::ScalarUDF;
181-
use crate::variant::array_construct::ArrayConstructUDF;
182182

183183
#[tokio::test]
184184
async fn test_array_insert() -> DFResult<()> {

crates/df-builtins/src/variant/array_intersection.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
use super::super::macros::make_udf_function;
2-
use datafusion::arrow::datatypes::DataType;
32
use datafusion::arrow::array::cast::AsArray;
3+
use datafusion::arrow::datatypes::DataType;
44
use datafusion_common::{Result as DFResult, ScalarValue};
55
use datafusion_expr::{
66
ColumnarValue, ScalarFunctionArgs, ScalarUDFImpl, Signature, TypeSignature, Volatility,
77
};
8-
use serde_json::{from_slice, Value};
8+
use serde_json::{Value, from_slice};
99
use std::sync::Arc;
1010

1111
#[derive(Debug, Clone)]
@@ -168,10 +168,10 @@ make_udf_function!(ArrayIntersectionUDF);
168168
#[allow(clippy::unwrap_used)]
169169
mod tests {
170170
use super::*;
171+
use crate::variant::array_construct::ArrayConstructUDF;
171172
use datafusion::assert_batches_eq;
172173
use datafusion::prelude::SessionContext;
173174
use datafusion_expr::ScalarUDF;
174-
use crate::variant::array_construct::ArrayConstructUDF;
175175

176176
#[tokio::test]
177177
async fn test_array_intersection() -> DFResult<()> {

crates/df-builtins/src/variant/array_max.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
use super::super::macros::make_udf_function;
2-
use datafusion::arrow::datatypes::DataType;
3-
use datafusion::arrow::array::cast::AsArray;
42
use datafusion::arrow::array::Array;
5-
use datafusion_common::types::{logical_binary, logical_string, NativeType};
3+
use datafusion::arrow::array::cast::AsArray;
4+
use datafusion::arrow::datatypes::DataType;
5+
use datafusion_common::types::{NativeType, logical_binary, logical_string};
66
use datafusion_common::{Result as DFResult, ScalarValue};
77
use datafusion_expr::{
88
Coercion, ColumnarValue, ScalarFunctionArgs, ScalarUDFImpl, Signature, TypeSignature,
99
TypeSignatureClass, Volatility,
1010
};
11-
use serde_json::{from_slice, Value};
11+
use serde_json::{Value, from_slice};
1212
use std::sync::Arc;
1313

1414
#[derive(Debug, Clone)]
@@ -171,10 +171,10 @@ make_udf_function!(ArrayMaxUDF);
171171
#[allow(clippy::unwrap_used)]
172172
mod tests {
173173
use super::*;
174+
use crate::variant::array_construct::ArrayConstructUDF;
174175
use datafusion::assert_batches_eq;
175176
use datafusion::prelude::SessionContext;
176177
use datafusion_expr::ScalarUDF;
177-
use crate::variant::array_construct::ArrayConstructUDF;
178178

179179
#[tokio::test]
180180
async fn test_array_max() -> DFResult<()> {

crates/df-builtins/src/variant/array_min.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
use super::super::macros::make_udf_function;
2-
use datafusion::arrow::datatypes::DataType;
3-
use datafusion::arrow::array::cast::AsArray;
42
use datafusion::arrow::array::Array;
5-
use datafusion_common::types::{logical_binary, logical_string, NativeType};
3+
use datafusion::arrow::array::cast::AsArray;
4+
use datafusion::arrow::datatypes::DataType;
5+
use datafusion_common::types::{NativeType, logical_binary, logical_string};
66
use datafusion_common::{Result as DFResult, ScalarValue};
77
use datafusion_expr::{
88
Coercion, ColumnarValue, ScalarFunctionArgs, ScalarUDFImpl, Signature, TypeSignature,
99
TypeSignatureClass, Volatility,
1010
};
11-
use serde_json::{from_slice, Value};
11+
use serde_json::{Value, from_slice};
1212
use std::sync::Arc;
1313

1414
#[derive(Debug, Clone)]
@@ -171,10 +171,10 @@ make_udf_function!(ArrayMinUDF);
171171
#[allow(clippy::unwrap_used)]
172172
mod tests {
173173
use super::*;
174+
use crate::variant::array_construct::ArrayConstructUDF;
174175
use datafusion::assert_batches_eq;
175176
use datafusion::prelude::SessionContext;
176177
use datafusion_expr::ScalarUDF;
177-
use crate::variant::array_construct::ArrayConstructUDF;
178178

179179
#[tokio::test]
180180
async fn test_array_min() -> DFResult<()> {

0 commit comments

Comments
 (0)