Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
af2e475
feat: datafusion table provider next
roeap Oct 14, 2025
7130d3c
Merge branch 'main' into feat/table-provider
rtyler Oct 24, 2025
e1c3957
chore: reduce wheel size (#3878)
abhiaagarwal Oct 25, 2025
d8b402e
fix: use the default features of aws-config
rtyler Oct 26, 2025
4b62d46
perf(snapshot): use std::mem:take to reduce memory allocation and com…
fvaleye Oct 28, 2025
8215a89
perf(snapshot): use std::mem:take to reduce memory allocation and com…
fvaleye Oct 28, 2025
a3d1f36
create an dumb solution for generate symlink
JustinRush80 Oct 22, 2025
710ae6e
add more docs to make the generate command
JustinRush80 Oct 23, 2025
de6b873
feat: bring the manifest generation into DeltaOps and wire into Python
rtyler Oct 25, 2025
bbaa5ec
feat: implement partition-capable generation of symlink_format_manife…
rtyler Oct 28, 2025
ecf5f38
feat(typed-builder): migrate builder to use TypedBuilder in aws crate
fvaleye Oct 28, 2025
9297c00
feat(typed-builder): migrate builder to use TypedBuilder in catalog-u…
fvaleye Oct 28, 2025
e0f2392
chore: remove deprecated warnings on pub(crate) and a few others
rtyler Oct 31, 2025
a75667a
chore: grab-bag of compiler warning removals
rtyler Oct 31, 2025
8a111fb
Decimal fix
DrakeLin Nov 4, 2025
7664ad3
feat: add GCS auto-registration via ctor hooks (#3923)
ethan-tyler Nov 8, 2025
4fd12f9
chore: bump the patch version to release fixes
rtyler Nov 6, 2025
bbbcb49
chore(cargo): unify cargo profiles with dev, ci and release for Pytho…
fvaleye Nov 7, 2025
b4c37f6
chore(ci): adapt the integration workflow for the CI
fvaleye Nov 7, 2025
e187b34
fix: handle Urls with dots in them correctly in DeltaTableBuilder::fr…
rtyler Nov 11, 2025
ae2b3c5
chore: add some opportunistic testing of PartitionsExt
rtyler Nov 8, 2025
e0f013b
chore(deps): update ctor requirement from 0.2 to 0.6
dependabot[bot] Nov 11, 2025
216e15d
chore: remove proofs/ which are no longer used
rtyler Nov 12, 2025
c274fe0
chore(deps): update convert_case requirement from 0.8.0 to 0.9.0
dependabot[bot] Nov 12, 2025
848dc1e
chore: adding more test coverage to the Gcp crate
rtyler Nov 12, 2025
b5c31c3
Fix: Handle empty tables in get_add_actions()
Nov 6, 2025
df38351
test: fix test_get_add_actions_on_empty_table assertions
Nov 9, 2025
a94d449
chore: add a regression test into the Rust crate
rtyler Nov 15, 2025
1a29c70
chore: removing references to using `partition_filters` for partition…
zyd14 Nov 17, 2025
a3ecbd1
chore: merge mian
roeap Dec 2, 2025
d64c428
chore: kernel api changes
roeap Dec 4, 2025
7be3095
chore: improve scalra to df conversion and cleanup
roeap Dec 7, 2025
076791d
Merge branch 'main' into feat/table-provider
roeap Dec 14, 2025
b0eeae6
merge main into 'feat/table-provider'
roeap Dec 14, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ documentation = "https://docs.rs/deltalake"
repository = "https://github.com/delta-io/delta.rs"

[workspace.dependencies]
delta_kernel = { version = "0.18.0", features = [
delta_kernel = { version = "0.18.2", features = [
"arrow-57",
"default-engine-rustls",
"internal-api",
Expand Down Expand Up @@ -127,15 +127,15 @@ debug = true
# CI profile - optimized for Continuous Integration
# Usage: cargo build --profile=ci
[profile.ci]
inherits = "dev"
debug = false
incremental = false
inherits = "dev"
debug = false
incremental = false

[profile.ci.package."*"]
opt-level = 3
debug = false
debug-assertions = false
strip = "debuginfo"
opt-level = 3
debug = false
debug-assertions = false
strip = "debuginfo"
incremental = false

# Python wheel release profile - for PyPI distribution
Expand Down
57 changes: 57 additions & 0 deletions crates/core/examples/df_scan.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
use std::sync::Arc;

use arrow_cast::pretty::print_batches;
use datafusion::datasource::TableProvider;
use datafusion::physical_plan::collect_partitioned;
use datafusion::prelude::SessionContext;
use deltalake_core::delta_datafusion::engine::DataFusionEngine;
use deltalake_core::kernel::Snapshot;
use deltalake_core::DeltaTableError;
use url::Url;

static CASES: &[&str] = &[
"./dat/v0.0.3/reader_tests/generated/all_primitive_types/delta/", // 0
"./dat/v0.0.3/reader_tests/generated/basic_append/delta/", // 1
"./dat/v0.0.3/reader_tests/generated/basic_partitioned/delta/", // 2
"./dat/v0.0.3/reader_tests/generated/cdf/delta/", // 3
"./dat/v0.0.3/reader_tests/generated/check_constraints/delta/", // 4
"./dat/v0.0.3/reader_tests/generated/column_mapping/delta/", // 5
"./dat/v0.0.3/reader_tests/generated/deletion_vectors/delta/", // 6
"./dat/v0.0.3/reader_tests/generated/generated_columns/delta/", // 7
"./dat/v0.0.3/reader_tests/generated/iceberg_compat_v1/delta/", // 8
"./dat/v0.0.3/reader_tests/generated/multi_partitioned/delta/", // 9
"./dat/v0.0.3/reader_tests/generated/multi_partitioned_2/delta/", // 10
"./dat/v0.0.3/reader_tests/generated/nested_types/delta/", // 11
"./dat/v0.0.3/reader_tests/generated/no_replay/delta/", // 12
"./dat/v0.0.3/reader_tests/generated/no_stats/delta/", // 13
"./dat/v0.0.3/reader_tests/generated/partitioned_with_null/delta/", // 14
"./dat/v0.0.3/reader_tests/generated/stats_as_struct/delta/", // 15
"./dat/v0.0.3/reader_tests/generated/timestamp_ntz/delta/", // 16
"./dat/v0.0.3/reader_tests/generated/with_checkpoint/delta/", // 17
"./dat/v0.0.3/reader_tests/generated/with_schema_change/delta/", // 18
];

#[tokio::main(flavor = "multi_thread", worker_threads = 4)]
async fn main() -> Result<(), DeltaTableError> {
let session = Arc::new(SessionContext::new());
let engine = DataFusionEngine::new_from_session(&session.state());

let path = std::fs::canonicalize(CASES[5]).unwrap();
let table_url = Url::from_directory_path(path).unwrap();
let snapshot =
Snapshot::try_new_with_engine(engine.clone(), table_url, Default::default(), None).await?;

let state = session.state_ref().read().clone();

let plan = snapshot.scan(&state, None, &[], None).await?;

let batches: Vec<_> = collect_partitioned(plan, session.task_ctx())
.await?
.into_iter()
.flatten()
.collect();

print_batches(&batches).unwrap();

Ok(())
}
4 changes: 2 additions & 2 deletions crates/core/src/data_catalog/storage/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -117,12 +117,12 @@ impl SchemaProvider for ListingSchemaProvider {
let Some(location) = self.tables.get(name).map(|t| t.clone()) else {
return Ok(None);
};
let provider = open_table_with_storage_options(
let table = open_table_with_storage_options(
ensure_table_uri(location)?,
self.storage_options.raw.clone(),
)
.await?;
Ok(Some(Arc::new(provider) as Arc<dyn TableProvider>))
Ok(Some(Arc::new(table) as Arc<dyn TableProvider>))
}

fn register_table(
Expand Down
5 changes: 5 additions & 0 deletions crates/core/src/delta_datafusion/engine/expressions/mod.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
pub(crate) use self::to_df::*;
pub(crate) use self::to_kernel::*;

mod to_df;
mod to_kernel;
Loading