update datafusion to 41.0.0 (#959)

<!-- The PR description should answer 2 important questions: -->

### What

Updates datafusion dependency to `41`.

### How

Fixes for breaking changes.

V3_GIT_ORIGIN_REV_ID: cc957f6c7ff9b3c004cc5e0cbb48387c1f963b7a
This commit is contained in:
Vamshi Surabhi 2024-08-12 16:05:50 -07:00 committed by hasura-bot
parent 173ec9a1e5
commit 6051c2f359
7 changed files with 135 additions and 90 deletions

175
v3/Cargo.lock generated
View File

@ -162,9 +162,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711"
[[package]]
name = "arrow"
version = "52.1.0"
version = "52.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6127ea5e585a12ec9f742232442828ebaf264dfa5eefdd71282376c599562b77"
checksum = "05048a8932648b63f21c37d88b552ccc8a65afb6dfe9fc9f30ce79174c2e7a85"
dependencies = [
"arrow-arith",
"arrow-array",
@ -183,9 +183,9 @@ dependencies = [
[[package]]
name = "arrow-arith"
version = "52.1.0"
version = "52.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7add7f39210b7d726e2a8efc0083e7bf06e8f2d15bdb4896b564dce4410fbf5d"
checksum = "1d8a57966e43bfe9a3277984a14c24ec617ad874e4c0e1d2a1b083a39cfbf22c"
dependencies = [
"arrow-array",
"arrow-buffer",
@ -198,9 +198,9 @@ dependencies = [
[[package]]
name = "arrow-array"
version = "52.1.0"
version = "52.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "81c16ec702d3898c2f5cfdc148443c6cd7dbe5bac28399859eb0a3d38f072827"
checksum = "16f4a9468c882dc66862cef4e1fd8423d47e67972377d85d80e022786427768c"
dependencies = [
"ahash",
"arrow-buffer",
@ -215,9 +215,9 @@ dependencies = [
[[package]]
name = "arrow-buffer"
version = "52.1.0"
version = "52.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cae6970bab043c4fbc10aee1660ceb5b306d0c42c8cc5f6ae564efcd9759b663"
checksum = "c975484888fc95ec4a632cdc98be39c085b1bb518531b0c80c5d462063e5daa1"
dependencies = [
"bytes",
"half",
@ -226,9 +226,9 @@ dependencies = [
[[package]]
name = "arrow-cast"
version = "52.1.0"
version = "52.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1c7ef44f26ef4f8edc392a048324ed5d757ad09135eff6d5509e6450d39e0398"
checksum = "da26719e76b81d8bc3faad1d4dbdc1bcc10d14704e63dc17fc9f3e7e1e567c8e"
dependencies = [
"arrow-array",
"arrow-buffer",
@ -247,9 +247,9 @@ dependencies = [
[[package]]
name = "arrow-csv"
version = "52.1.0"
version = "52.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5f843490bd258c5182b66e888161bb6f198f49f3792f7c7f98198b924ae0f564"
checksum = "c13c36dc5ddf8c128df19bab27898eea64bf9da2b555ec1cd17a8ff57fba9ec2"
dependencies = [
"arrow-array",
"arrow-buffer",
@ -266,9 +266,9 @@ dependencies = [
[[package]]
name = "arrow-data"
version = "52.1.0"
version = "52.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a769666ffac256dd301006faca1ca553d0ae7cffcf4cd07095f73f95eb226514"
checksum = "dd9d6f18c65ef7a2573ab498c374d8ae364b4a4edf67105357491c031f716ca5"
dependencies = [
"arrow-buffer",
"arrow-schema",
@ -278,9 +278,9 @@ dependencies = [
[[package]]
name = "arrow-ipc"
version = "52.1.0"
version = "52.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dbf9c3fb57390a1af0b7bb3b5558c1ee1f63905f3eccf49ae7676a8d1e6e5a72"
checksum = "e786e1cdd952205d9a8afc69397b317cfbb6e0095e445c69cda7e8da5c1eeb0f"
dependencies = [
"arrow-array",
"arrow-buffer",
@ -293,9 +293,9 @@ dependencies = [
[[package]]
name = "arrow-json"
version = "52.1.0"
version = "52.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "654e7f3724176b66ddfacba31af397c48e106fbe4d281c8144e7d237df5acfd7"
checksum = "fb22284c5a2a01d73cebfd88a33511a3234ab45d66086b2ca2d1228c3498e445"
dependencies = [
"arrow-array",
"arrow-buffer",
@ -313,9 +313,9 @@ dependencies = [
[[package]]
name = "arrow-ord"
version = "52.1.0"
version = "52.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e8008370e624e8e3c68174faaf793540287106cfda8ad1da862fdc53d8e096b4"
checksum = "42745f86b1ab99ef96d1c0bcf49180848a64fe2c7a7a0d945bc64fa2b21ba9bc"
dependencies = [
"arrow-array",
"arrow-buffer",
@ -328,9 +328,9 @@ dependencies = [
[[package]]
name = "arrow-row"
version = "52.1.0"
version = "52.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ca5e3a6b7fda8d9fe03f3b18a2d946354ea7f3c8e4076dbdb502ad50d9d44824"
checksum = "4cd09a518c602a55bd406bcc291a967b284cfa7a63edfbf8b897ea4748aad23c"
dependencies = [
"ahash",
"arrow-array",
@ -338,23 +338,22 @@ dependencies = [
"arrow-data",
"arrow-schema",
"half",
"hashbrown 0.14.5",
]
[[package]]
name = "arrow-schema"
version = "52.1.0"
version = "52.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dab1c12b40e29d9f3b699e0203c2a73ba558444c05e388a4377208f8f9c97eee"
checksum = "9e972cd1ff4a4ccd22f86d3e53e835c2ed92e0eea6a3e8eadb72b4f1ac802cf8"
dependencies = [
"serde",
]
[[package]]
name = "arrow-select"
version = "52.1.0"
version = "52.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e80159088ffe8c48965cb9b1a7c968b2729f29f37363df7eca177fc3281fe7c3"
checksum = "600bae05d43483d216fb3494f8c32fdbefd8aa4e1de237e790dbb3d9f44690a3"
dependencies = [
"ahash",
"arrow-array",
@ -366,9 +365,9 @@ dependencies = [
[[package]]
name = "arrow-string"
version = "52.1.0"
version = "52.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0fd04a6ea7de183648edbcb7a6dd925bbd04c210895f6384c780e27a9b54afcd"
checksum = "f0dc1985b67cb45f6606a248ac2b4a288849f196bab8c657ea5589f47cdd55e6"
dependencies = [
"arrow-array",
"arrow-buffer",
@ -1238,11 +1237,12 @@ dependencies = [
[[package]]
name = "dashmap"
version = "5.5.3"
version = "6.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856"
checksum = "804c8821570c3f8b70230c2ba75ffa5c0f9a4189b9a432b6656c536712acae28"
dependencies = [
"cfg-if",
"crossbeam-utils",
"hashbrown 0.14.5",
"lock_api",
"once_cell",
@ -1251,9 +1251,9 @@ dependencies = [
[[package]]
name = "datafusion"
version = "40.0.0"
version = "41.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ab9d55a9cd2634818953809f75ebe5248b00dd43c3227efb2a51a2d5feaad54e"
checksum = "e4fd4a99fc70d40ef7e52b243b4a399c3f8d353a40d5ecb200deee05e49c61bb"
dependencies = [
"ahash",
"arrow",
@ -1266,16 +1266,18 @@ dependencies = [
"bzip2",
"chrono",
"dashmap",
"datafusion-catalog",
"datafusion-common",
"datafusion-common-runtime",
"datafusion-execution",
"datafusion-expr",
"datafusion-functions",
"datafusion-functions-aggregate",
"datafusion-functions-array",
"datafusion-functions-nested",
"datafusion-optimizer",
"datafusion-physical-expr",
"datafusion-physical-expr-common",
"datafusion-physical-optimizer",
"datafusion-physical-plan",
"datafusion-sql",
"flate2",
@ -1304,10 +1306,24 @@ dependencies = [
]
[[package]]
name = "datafusion-common"
version = "40.0.0"
name = "datafusion-catalog"
version = "41.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "def66b642959e7f96f5d2da22e1f43d3bd35598f821e5ce351a0553e0f1b7367"
checksum = "e13b3cfbd84c6003594ae1972314e3df303a27ce8ce755fcea3240c90f4c0529"
dependencies = [
"arrow-schema",
"async-trait",
"datafusion-common",
"datafusion-execution",
"datafusion-expr",
"datafusion-physical-plan",
]
[[package]]
name = "datafusion-common"
version = "41.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "44fdbc877e3e40dcf88cc8f283d9f5c8851f0a3aa07fee657b1b75ac1ad49b9c"
dependencies = [
"ahash",
"arrow",
@ -1327,18 +1343,18 @@ dependencies = [
[[package]]
name = "datafusion-common-runtime"
version = "40.0.0"
version = "41.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f104bb9cb44c06c9badf8a0d7e0855e5f7fa5e395b887d7f835e8a9457dc1352"
checksum = "8a7496d1f664179f6ce3a5cbef6566056ccaf3ea4aa72cc455f80e62c1dd86b1"
dependencies = [
"tokio",
]
[[package]]
name = "datafusion-execution"
version = "40.0.0"
version = "41.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2ac0fd8b5d80bbca3fc3b6f40da4e9f6907354824ec3b18bbd83fee8cf5c3c3e"
checksum = "799e70968c815b611116951e3dd876aef04bf217da31b72eec01ee6a959336a1"
dependencies = [
"arrow",
"chrono",
@ -1357,9 +1373,9 @@ dependencies = [
[[package]]
name = "datafusion-expr"
version = "40.0.0"
version = "41.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2103d2cc16fb11ef1fa993a6cac57ed5cb028601db4b97566c90e5fa77aa1e68"
checksum = "1c1841c409d9518c17971d15c9bae62e629eb937e6fb6c68cd32e9186f8b30d2"
dependencies = [
"ahash",
"arrow",
@ -1376,11 +1392,12 @@ dependencies = [
[[package]]
name = "datafusion-functions"
version = "40.0.0"
version = "41.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a369332afd0ef5bd565f6db2139fb9f1dfdd0afa75a7f70f000b74208d76994f"
checksum = "a8e481cf34d2a444bd8fa09b65945f0ce83dc92df8665b761505b3d9f351bebb"
dependencies = [
"arrow",
"arrow-buffer",
"base64 0.22.1",
"blake2",
"blake3",
@ -1402,9 +1419,9 @@ dependencies = [
[[package]]
name = "datafusion-functions-aggregate"
version = "40.0.0"
version = "41.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "92718db1aff70c47e5abf9fc975768530097059e5db7c7b78cd64b5e9a11fc77"
checksum = "2b4ece19f73c02727e5e8654d79cd5652de371352c1df3c4ac3e419ecd6943fb"
dependencies = [
"ahash",
"arrow",
@ -1419,10 +1436,10 @@ dependencies = [
]
[[package]]
name = "datafusion-functions-array"
version = "40.0.0"
name = "datafusion-functions-nested"
version = "41.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "30bb80f46ff3dcf4bb4510209c2ba9b8ce1b716ac8b7bf70c6bf7dca6260c831"
checksum = "a1474552cc824e8c9c88177d454db5781d4b66757d4aca75719306b8343a5e8d"
dependencies = [
"arrow",
"arrow-array",
@ -1437,13 +1454,14 @@ dependencies = [
"itertools 0.12.1",
"log",
"paste",
"rand",
]
[[package]]
name = "datafusion-optimizer"
version = "40.0.0"
version = "41.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "82f34692011bec4fdd6fc18c264bf8037b8625d801e6dd8f5111af15cb6d71d3"
checksum = "791ff56f55608bc542d1ea7a68a64bdc86a9413f5a381d06a39fd49c2a3ab906"
dependencies = [
"arrow",
"async-trait",
@ -1461,9 +1479,9 @@ dependencies = [
[[package]]
name = "datafusion-physical-expr"
version = "40.0.0"
version = "41.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "45538630defedb553771434a437f7ca8f04b9b3e834344aafacecb27dc65d5e5"
checksum = "9a223962b3041304a3e20ed07a21d5de3d88d7e4e71ca192135db6d24e3365a4"
dependencies = [
"ahash",
"arrow",
@ -1491,9 +1509,9 @@ dependencies = [
[[package]]
name = "datafusion-physical-expr-common"
version = "40.0.0"
version = "41.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9d8a72b0ca908e074aaeca52c14ddf5c28d22361e9cb6bc79bb733cd6661b536"
checksum = "db5e7d8532a1601cd916881db87a70b0a599900d23f3db2897d389032da53bc6"
dependencies = [
"ahash",
"arrow",
@ -1504,10 +1522,22 @@ dependencies = [
]
[[package]]
name = "datafusion-physical-plan"
version = "40.0.0"
name = "datafusion-physical-optimizer"
version = "41.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b504eae6107a342775e22e323e9103f7f42db593ec6103b28605b7b7b1405c4a"
checksum = "fdb9c78f308e050f5004671039786a925c3fee83b90004e9fcfd328d7febdcc0"
dependencies = [
"datafusion-common",
"datafusion-execution",
"datafusion-physical-expr",
"datafusion-physical-plan",
]
[[package]]
name = "datafusion-physical-plan"
version = "41.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8d1116949432eb2d30f6362707e2846d942e491052a206f2ddcb42d08aea1ffe"
dependencies = [
"ahash",
"arrow",
@ -1539,9 +1569,9 @@ dependencies = [
[[package]]
name = "datafusion-sql"
version = "40.0.0"
version = "41.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e5db33f323f41b95ae201318ba654a9bf11113e58a51a1dff977b1a836d3d889"
checksum = "b45d0180711165fe94015d7c4123eb3e1cf5fb60b1506453200b8d1ce666bef0"
dependencies = [
"arrow",
"arrow-array",
@ -2528,6 +2558,15 @@ dependencies = [
"either",
]
[[package]]
name = "itertools"
version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186"
dependencies = [
"either",
]
[[package]]
name = "itoa"
version = "1.0.11"
@ -3077,16 +3116,16 @@ dependencies = [
[[package]]
name = "object_store"
version = "0.10.1"
version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fbebfd32c213ba1907fa7a9c9138015a8de2b43e30c5aa45b18f7deb46786ad6"
checksum = "e6da452820c715ce78221e8202ccc599b4a52f3e1eb3eedb487b680c81a8e3f3"
dependencies = [
"async-trait",
"bytes",
"chrono",
"futures",
"humantime",
"itertools 0.12.1",
"itertools 0.13.0",
"parking_lot",
"percent-encoding",
"snafu",
@ -3386,9 +3425,9 @@ dependencies = [
[[package]]
name = "parquet"
version = "52.1.0"
version = "52.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0f22ba0d95db56dde8685e3fadcb915cdaadda31ab8abbe3ff7f0ad1ef333267"
checksum = "e977b9066b4d3b03555c22bdc442f3fadebd96a39111249113087d0edb2691cd"
dependencies = [
"ahash",
"arrow-array",
@ -4417,9 +4456,9 @@ dependencies = [
[[package]]
name = "sqlparser"
version = "0.47.0"
version = "0.49.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "295e9930cd7a97e58ca2a070541a3ca502b17f5d1fa7157376d0fabd85324f25"
checksum = "a4a404d0e14905361b918cb8afdb73605e25c1d5029312bd9785142dcb3aa49e"
dependencies = [
"log",
"sqlparser_derive",

View File

@ -15,7 +15,7 @@ tracing-util = { path = "../utils/tracing-util" }
ndc-models = { workspace = true }
indexmap = { workspace = true }
datafusion = { version = "40.0.0", features = ["serde"] }
datafusion = { version = "41", features = ["serde"] }
async-trait = "0.1.81"
futures = "0.3.30"
serde = { workspace = true, features = ["rc"] }

View File

@ -1,6 +1,5 @@
use std::{any::Any, sync::Arc};
use ::datafusion::execution::{context::SessionState, runtime_env::RuntimeEnv};
use hasura_authn_core::Session;
use indexmap::IndexMap;
use metadata_resolve::{self as resolved};
@ -8,7 +7,8 @@ use serde::{Deserialize, Serialize};
mod datafusion {
pub(super) use datafusion::{
catalog::{schema::SchemaProvider, CatalogProvider},
catalog::{CatalogProvider, SchemaProvider},
execution::{session_state::SessionStateBuilder, SessionStateDefaults},
prelude::{SessionConfig, SessionContext},
scalar::ScalarValue,
};
@ -135,13 +135,19 @@ impl Catalog {
session: session.clone(),
http_context: http_context.clone(),
});
let session_state =
SessionState::new_with_config_rt(session_config, Arc::new(RuntimeEnv::default()))
.with_query_planner(query_planner)
.add_optimizer_rule(Arc::new(super::execute::optimizer::ReplaceTableScan {}))
.add_optimizer_rule(Arc::new(
super::execute::optimizer::OpenDdPushDownProjection {},
));
let session_state = datafusion::SessionStateBuilder::new()
.with_config(session_config)
.with_query_planner(query_planner)
.with_optimizer_rule(Arc::new(super::execute::optimizer::ReplaceTableScan {}))
.with_optimizer_rule(Arc::new(
super::execute::optimizer::OpenDdPushDownProjection {},
))
.with_expr_planners(datafusion::SessionStateDefaults::default_expr_planners())
.with_scalar_functions(datafusion::SessionStateDefaults::default_scalar_functions())
.with_aggregate_functions(
datafusion::SessionStateDefaults::default_aggregate_functions(),
)
.build();
let session_context = datafusion::SessionContext::new_with_state(session_state);
session_context.register_catalog(
"default",

View File

@ -10,7 +10,7 @@ use metadata_resolve::{self as resolved, ModelRelationshipTarget};
use table_metadata::{TableMetadata, TableMetadataRow, TABLE_METADATA};
mod datafusion {
pub(super) use datafusion::{
catalog::schema::SchemaProvider, datasource::TableProvider, error::Result,
catalog::SchemaProvider, datasource::TableProvider, error::Result,
};
}
use open_dds::relationships::RelationshipType;
@ -153,7 +153,10 @@ impl datafusion::SchemaProvider for IntrospectionSchemaProvider {
#[cfg(test)]
mod tests {
use ::datafusion::catalog::{CatalogProvider, MemoryCatalogProvider, SchemaProvider};
use ::datafusion::{
catalog::{CatalogProvider, SchemaProvider},
catalog_common::MemoryCatalogProvider,
};
use super::*;
use ::datafusion::prelude::*;

View File

@ -10,9 +10,9 @@ mod datafusion {
array::{ArrayRef, BooleanArray, Int64Array, RecordBatch, StringArray},
datatypes::{DataType, Field, SchemaBuilder, SchemaRef},
},
catalog::Session,
datasource::{TableProvider, TableType},
error::Result,
execution::context::SessionState,
logical_expr::Expr,
physical_plan::{values::ValuesExec, ExecutionPlan},
};
@ -139,7 +139,7 @@ impl datafusion::TableProvider for MemTable {
}
async fn scan(
&self,
_state: &datafusion::SessionState,
_state: &dyn datafusion::Session,
projection: Option<&Vec<usize>>,
// filters and limit can be used here to inject some push-down operations if needed
_filters: &[datafusion::Expr],

View File

@ -19,14 +19,11 @@ use crate::plan::ModelQuery;
mod datafusion {
pub(super) use datafusion::{
arrow::datatypes::{DataType, Field, Schema, SchemaBuilder, SchemaRef, TimeUnit},
catalog::Session,
common::{DFSchema, DFSchemaRef},
datasource::function::TableFunctionImpl,
datasource::{TableProvider, TableType},
datasource::{function::TableFunctionImpl, TableProvider, TableType},
error::Result,
execution::context::SessionState,
logical_expr::Expr,
logical_expr::Extension,
logical_expr::LogicalPlan,
logical_expr::{Expr, Extension, LogicalPlan},
physical_plan::ExecutionPlan,
};
}
@ -222,7 +219,7 @@ impl datafusion::TableProvider for Table {
async fn scan(
&self,
state: &datafusion::SessionState,
state: &dyn datafusion::Session,
projection: Option<&Vec<usize>>,
// filters and limit can be used here to inject some push-down operations if needed
_filters: &[datafusion::Expr],

View File

@ -6,7 +6,7 @@ use serde::{Deserialize, Serialize};
mod datafusion {
pub(super) use datafusion::error::Result;
pub(super) use datafusion::{catalog::schema::SchemaProvider, datasource::TableProvider};
pub(super) use datafusion::{catalog::SchemaProvider, datasource::TableProvider};
}
use crate::catalog;