Skip to content

Commit 628fba2

Browse files
authored
Merge branch 'main' into perf/array_resize
2 parents 3b049f7 + 374806c commit 628fba2

123 files changed

Lines changed: 10827 additions & 2561 deletions

File tree

Some content is hidden

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

.github/workflows/audit.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ jobs:
4242
steps:
4343
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
4444
- name: Install cargo-audit
45-
uses: taiki-e/install-action@6ef672efc2b5aabc787a9e94baf4989aa02a97df # v2.70.3
45+
uses: taiki-e/install-action@94cb46f8d6e437890146ffbd78a778b78e623fb2 # v2.74.0
4646
with:
4747
tool: cargo-audit
4848
- name: Run audit check

.github/workflows/rust.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -430,7 +430,7 @@ jobs:
430430
sudo apt-get update -qq
431431
sudo apt-get install -y -qq clang
432432
- name: Setup wasm-pack
433-
uses: taiki-e/install-action@6ef672efc2b5aabc787a9e94baf4989aa02a97df # v2.70.3
433+
uses: taiki-e/install-action@94cb46f8d6e437890146ffbd78a778b78e623fb2 # v2.74.0
434434
with:
435435
tool: wasm-pack
436436
- name: Run tests with headless mode
@@ -770,7 +770,7 @@ jobs:
770770
- name: Setup Rust toolchain
771771
uses: ./.github/actions/setup-builder
772772
- name: Install cargo-msrv
773-
uses: taiki-e/install-action@6ef672efc2b5aabc787a9e94baf4989aa02a97df # v2.70.3
773+
uses: taiki-e/install-action@94cb46f8d6e437890146ffbd78a778b78e623fb2 # v2.74.0
774774
with:
775775
tool: cargo-msrv
776776

Cargo.lock

Lines changed: 35 additions & 36 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ glob = "0.3.0"
162162
half = { version = "2.7.0", default-features = false }
163163
hashbrown = { version = "0.16.1" }
164164
hex = { version = "0.4.3" }
165-
indexmap = "2.13.0"
165+
indexmap = "2.13.1"
166166
insta = { version = "1.47.2", features = ["glob", "filters"] }
167167
itertools = "0.14"
168168
itoa = "1.0"
@@ -192,7 +192,7 @@ strum = "0.28.0"
192192
strum_macros = "0.28.0"
193193
tempfile = "3"
194194
testcontainers-modules = { version = "0.15" }
195-
tokio = { version = "1.48", features = ["macros", "rt", "sync"] }
195+
tokio = { version = "1.51", features = ["macros", "rt", "sync"] }
196196
tokio-stream = "0.1"
197197
tokio-util = "0.7"
198198
url = "2.5.7"

datafusion/common/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ hashbrown = { workspace = true }
7575
hex = { workspace = true, optional = true }
7676
indexmap = { workspace = true }
7777
itertools = { workspace = true }
78-
libc = "0.2.180"
78+
libc = "0.2.184"
7979
log = { workspace = true }
8080
object_store = { workspace = true, optional = true }
8181
parquet = { workspace = true, optional = true, default-features = true }

datafusion/common/src/config.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -557,6 +557,19 @@ config_namespace! {
557557
/// batches and merged.
558558
pub sort_in_place_threshold_bytes: usize, default = 1024 * 1024
559559

560+
/// Maximum buffer capacity (in bytes) per partition for BufferExec
561+
/// inserted during sort pushdown optimization.
562+
///
563+
/// When PushdownSort eliminates a SortExec under SortPreservingMergeExec,
564+
/// a BufferExec is inserted to replace SortExec's buffering role. This
565+
/// prevents I/O stalls by allowing the scan to run ahead of the merge.
566+
///
567+
/// This uses strictly less memory than the SortExec it replaces (which
568+
/// buffers the entire partition). The buffer respects the global memory
569+
/// pool limit. Setting this to a large value is safe — actual memory
570+
/// usage is bounded by partition size and global memory limits.
571+
pub sort_pushdown_buffer_capacity: usize, default = 1024 * 1024 * 1024
572+
560573
/// Maximum size in bytes for individual spill files before rotating to a new file.
561574
///
562575
/// When operators spill data to disk (e.g., RepartitionExec), they write

datafusion/core/benches/sql_planner.rs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,8 @@ fn register_clickbench_hits_table(rt: &Runtime) -> SessionContext {
130130
format!("{BENCHMARKS_PATH_2}{CLICKBENCH_DATA_PATH}")
131131
};
132132

133-
let sql = format!("CREATE EXTERNAL TABLE hits STORED AS PARQUET LOCATION '{path}'");
133+
let sql =
134+
format!("CREATE EXTERNAL TABLE hits_raw STORED AS PARQUET LOCATION '{path}'");
134135

135136
// ClickBench partitioned dataset was written by an ancient version of pyarrow that
136137
// that wrote strings with the wrong logical type. To read it correctly, we must
@@ -139,6 +140,17 @@ fn register_clickbench_hits_table(rt: &Runtime) -> SessionContext {
139140
.unwrap();
140141
rt.block_on(ctx.sql(&sql)).unwrap();
141142

143+
// ClickBench stores EventDate as UInt16 (days since 1970-01-01). Create a view
144+
// that exposes it as SQL DATE so that queries comparing it with date literals
145+
// (e.g. "EventDate >= '2013-07-01'") work correctly during planning.
146+
rt.block_on(ctx.sql(
147+
"CREATE VIEW hits AS \
148+
SELECT * EXCEPT (\"EventDate\"), \
149+
CAST(CAST(\"EventDate\" AS INTEGER) AS DATE) AS \"EventDate\" \
150+
FROM hits_raw",
151+
))
152+
.unwrap();
153+
142154
let count =
143155
rt.block_on(async { ctx.table("hits").await.unwrap().count().await.unwrap() });
144156
assert!(count > 0);

0 commit comments

Comments
 (0)