Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
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
32 changes: 22 additions & 10 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ on:
push:
branches:
- main
- 'target-patch-*'

env:
CARGO_TERM_COLOR: always
Expand Down Expand Up @@ -41,6 +42,17 @@ jobs:
- uses: ./.github/actions/setup
- run: cargo test --features integration

# Runs the whole lib unit suite with `grpc` off, the proof that the abstraction builds and runs
# without gRPC. `lfs: true` because some planner unit tests load parquet testdata.
unit-test-no-grpc:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
lfs: true
- uses: ./.github/actions/setup
- run: cargo test --no-default-features --lib

tpch-correctness-test:
runs-on: ubuntu-latest
strategy:
Expand All @@ -50,7 +62,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup
- run: cargo test --features tpch --test tpch_correctness_test
- run: cargo test -p datafusion-distributed-benchmarks --features tpch --test tpch_correctness_test
env:
ADAPTIVE: ${{ matrix.planning_mode == 'adaptive' }}

Expand All @@ -59,7 +71,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup
- run: cargo test --features tpch --test tpch_plans_test
- run: cargo test -p datafusion-distributed-benchmarks --features tpch --test tpch_plans_test

tpcds-correctness-test:
runs-on: ubuntu-latest
Expand All @@ -73,9 +85,9 @@ jobs:
- uses: ./.github/actions/setup
- uses: actions/cache@v4
with:
path: testdata/tpcds/main.zip
path: benchmarks/testdata/tpcds/main.zip
key: "main.zip"
- run: cargo test --features tpcds --test tpcds_correctness_test shard${{ matrix.shard }}
- run: cargo test -p datafusion-distributed-benchmarks --features tpcds --test tpcds_correctness_test shard${{ matrix.shard }}
env:
ADAPTIVE: ${{ matrix.planning_mode == 'adaptive' }}

Expand All @@ -86,9 +98,9 @@ jobs:
- uses: ./.github/actions/setup
- uses: actions/cache@v4
with:
path: testdata/tpcds/main.zip
path: benchmarks/testdata/tpcds/main.zip
key: "main.zip"
- run: cargo test --features tpcds --test tpcds_plans_test
- run: cargo test -p datafusion-distributed-benchmarks --features tpcds --test tpcds_plans_test

clickbench-correctness-test:
runs-on: ubuntu-latest
Expand All @@ -101,9 +113,9 @@ jobs:
- uses: ./.github/actions/setup
- uses: actions/cache@v4
with:
path: testdata/clickbench/
path: benchmarks/testdata/clickbench/
key: "data"
- run: cargo test --features clickbench --test clickbench_correctness_test
- run: cargo test -p datafusion-distributed-benchmarks --features clickbench --test clickbench_correctness_test
env:
ADAPTIVE: ${{ matrix.planning_mode == 'adaptive' }}

Expand All @@ -114,9 +126,9 @@ jobs:
- uses: ./.github/actions/setup
- uses: actions/cache@v4
with:
path: testdata/clickbench/
path: benchmarks/testdata/clickbench/
key: "data"
- run: cargo test --features clickbench --test clickbench_plans_test
- run: cargo test -p datafusion-distributed-benchmarks --features clickbench --test clickbench_plans_test

format-check:
runs-on: ubuntu-latest
Expand Down
55 changes: 0 additions & 55 deletions .github/workflows/docs.yml

This file was deleted.

29 changes: 29 additions & 0 deletions .github/workflows/sync-promote-branch.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# workflows/sync-promote-branch.yml
#
# Promote Target Patch Branch to Main
# Promote a resolved target-patch-* branch to main after manual approval and CI validation.

name: Promote Target Patch Branch to Main

on:
workflow_dispatch:
inputs:
branch_name:
description: "Branch name to promote (must match target-patch-*)"
required: true
type: string

concurrency:
group: promote-branch
cancel-in-progress: false

jobs:
call-promote:
uses: paradedb/actions/.github/workflows/reusable-promote.yml@v5
with:
branch_name: ${{ inputs.branch_name }}
approvers: "philippemnoel,rebasedming,stuhood,mdashti"
github_app_client_id: ${{ vars.PARADEDB_GITHUB_APP_CLIENT_ID }}
secrets:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_GITHUB_CHANNEL_WEBHOOK_URL }}
PARADEDB_GITHUB_APP_PRIVATE_KEY: ${{ secrets.PARADEDB_GITHUB_APP_PRIVATE_KEY }}
25 changes: 25 additions & 0 deletions .github/workflows/sync-upstream-rebase.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# workflows/sync-upstream-rebase.yml
#
# Upstream Rebase
# Periodically rebase the target patches onto the latest upstream commits and promote the result to main.

name: Upstream Rebase

on:
schedule:
- cron: "0 14,16,18,20,22 * * 1-5" # Mon-Fri 6am-2pm PST (UTC weekdays)
- cron: "0 0,2 * * 2-6" # Mon-Fri 4pm-6pm PST (next UTC day)
workflow_dispatch: # Allow manual triggering

concurrency:
group: upstream-rebase
cancel-in-progress: false

jobs:
call-rebase:
uses: paradedb/actions/.github/workflows/reusable-rebase.yml@v5
with:
github_app_client_id: ${{ vars.PARADEDB_GITHUB_APP_CLIENT_ID }}
secrets:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_GITHUB_CHANNEL_WEBHOOK_URL }}
PARADEDB_GITHUB_APP_PRIVATE_KEY: ${{ secrets.PARADEDB_GITHUB_APP_PRIVATE_KEY }}
27 changes: 26 additions & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

47 changes: 41 additions & 6 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ datafusion = { workspace = true, features = [
] }
datafusion-proto = { workspace = true }
async-trait = "0.1.89"
async-stream = "0.3"
log = "0.4"
tokio = { version = "1.48", features = ["full"] }
http = "1.3.1"
itertools = "0.14.0"
Expand All @@ -45,7 +47,7 @@ sysinfo = { version = "0.30", optional = true }
sketches-ddsketch = { version = "0.3", features = ["use_serde"] }
num-traits = "0.2"
bincode = "1"
tonic-prost = "0.14.2"
tonic-prost = { version = "0.14.2", optional = true }

# grpc-specific features
arrow-flight = { version = "58", optional = true }
Expand All @@ -68,21 +70,17 @@ grpc = [
"arrow-select",
"arrow-ipc",
"tonic",
"tonic-prost",
"tower"
]

integration = ["insta", "parquet", "arrow", "hyper-util", "grpc"]

system-metrics = ["sysinfo"]

tpch = ["integration"]
tpcds = ["integration"]
clickbench = ["integration"]
slow-tests = []
sysinfo = ["dep:sysinfo"]

[dev-dependencies]
datafusion-distributed-benchmarks = { path = "benchmarks" }
structopt = "0.3"
insta = { version = "1.46.0", features = ["filters"] }
parquet = "58"
Expand All @@ -92,6 +90,43 @@ hyper-util = "0.1.16"
pretty_assertions = "1.4"
test-case = "3.3.1"

# Every example drives the gRPC transport, so a no-grpc build skips them.
[[example]]
name = "custom_distributed_partial_reduction_tree"
required-features = ["integration"]

[[example]]
name = "custom_execution_plan"
required-features = ["integration"]

[[example]]
name = "custom_worker_url_routing"
required-features = ["integration"]

[[example]]
name = "work_unit_feed"
required-features = ["integration"]

[[example]]
name = "in_memory_cluster"
required-features = ["grpc"]

[[example]]
name = "localhost_run"
required-features = ["grpc"]

[[example]]
name = "localhost_versioned_run"
required-features = ["grpc"]

[[example]]
name = "localhost_worker"
required-features = ["grpc"]

[[example]]
name = "localhost_versioned_worker"
required-features = ["grpc"]

[workspace.lints.clippy]
disallowed_types = "deny"
disallowed-methods = "deny"
11 changes: 11 additions & 0 deletions benchmarks/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,20 @@ aws-sdk-ec2 = "1"
openssl = { version = "0.10", features = ["vendored"] } # Keep this. Necessary for the remote benchmarks worker.
mimalloc = "0.1"

[features]
# Gates for the dataset test suites under `tests/`. They live here rather than in the library
# because, as a dev-dependency of the library, this crate re-enables `grpc` on every test build
# through feature unification, which made the no-grpc config untestable.
tpch = []
tpcds = []
clickbench = []
slow-tests = []

[dev-dependencies]
criterion = "0.5"
sysinfo = "0.30"
pretty_assertions = "1.4"
test-case = "3.3.1"

[build-dependencies]
built = { version = "0.8", features = ["git2", "chrono"] }
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#[cfg(all(feature = "integration", feature = "clickbench", test))]
#[cfg(all(feature = "clickbench", test))]
mod tests {
use datafusion::arrow::array::RecordBatch;
use datafusion::common::plan_err;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#[cfg(all(feature = "integration", feature = "clickbench", test))]
#[cfg(all(feature = "clickbench", test))]
mod tests {
use datafusion::error::Result;
use datafusion_distributed::test_utils::in_memory_channel_resolver::start_in_memory_context;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#[cfg(all(feature = "integration", feature = "tpch", test))]
#[cfg(all(feature = "tpch", test))]
mod tests {
use datafusion::common::instant::Instant;
use datafusion::error::Result;
Expand Down
Loading
Loading