Skip to content

Commit 331dd86

Browse files
committed
Merge develop into ngates/id
Signed-off-by: Nicholas Gates <nick@nickgates.com>
2 parents 2232ae5 + 44c511d commit 331dd86

1,381 files changed

Lines changed: 91426 additions & 40690 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/AGENTS.md‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ Nightly is required for:
55
- `-Z` flags: sanitizers (`-Zsanitizer=address`), miri (`-Zmiri-*`), publish (`-Zpublish-timeout`)
66
- `cargo-fuzz` (requires nightly)
77
- `public-api` xtask (nightly rustdoc JSON)
8-
- `--cfg vortex_nightly` (enables `portable_simd` feature gate)
98

109
Everything else (build, clippy, tests, docs, benchmarks, packaging) should use stable.
1110

‎.github/actions/setup-prebuild/action.yml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,12 @@ runs:
3030
shell: bash
3131
run: |
3232
mkdir -p ~/.config/sccache
33-
echo 'server_startup_timeout_ms = 15000' > ~/.config/sccache/config
33+
echo 'server_startup_timeout_ms = 60000' > ~/.config/sccache/config
3434
3535
- name: Pre-start sccache server
3636
if: github.repository == 'vortex-data/vortex' && inputs.enable-sccache == 'true'
3737
shell: bash
38-
run: sccache --start-server &
38+
run: sccache --start-server
3939

4040
# Fallback path: full setup for forks
4141
- name: Full Rust setup

‎.github/actions/setup-rust/action.yml‎

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ runs:
6969
shell: bash
7070
run: |
7171
mkdir -p ~/.config/sccache
72-
echo 'server_startup_timeout_ms = 15000' > ~/.config/sccache/config
72+
echo 'server_startup_timeout_ms = 60000' > ~/.config/sccache/config
7373
7474
- name: Rust Compile Cache
7575
if: inputs.enable-sccache == 'true'
@@ -78,15 +78,12 @@ runs:
7878
- name: Pre-start sccache server
7979
if: inputs.enable-sccache == 'true'
8080
shell: bash
81-
run: sccache --start-server &
81+
run: sccache --start-server
8282

8383
- name: Install Protoc (for lance-encoding build step)
8484
if: runner.os != 'Windows'
8585
uses: ./.github/actions/setup-protoc
8686

87-
- name: Install Ninja (for DuckDB build system)
88-
uses: seanmiddleditch/gha-setup-ninja@v6
89-
9087
- name: Install Sweep
9188
shell: bash
9289
if: ${{ inputs.timestamp == 'true' && github.ref_name == 'develop' }}

‎.github/scripts/close_fixed_fuzzer_issues.py‎

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,6 @@ def build_fuzz_target(target: str) -> bool:
162162
"""Build the fuzz target once. Returns True on success."""
163163
print(f"\nBuilding fuzz target: {target}")
164164
env = os.environ.copy()
165-
env["RUSTFLAGS"] = "--cfg vortex_nightly"
166165
result = run(
167166
["cargo", "+nightly", "fuzz", "build", "--dev", "--sanitizer=none", target],
168167
env=env,
@@ -173,7 +172,6 @@ def build_fuzz_target(target: str) -> bool:
173172
def retest_crash(target: str, crash_path: str, timeout_secs: int = 120) -> str:
174173
"""Run the fuzz target with the crash file. Returns 'fixed', 'reproduces', or 'timeout'."""
175174
env = os.environ.copy()
176-
env["RUSTFLAGS"] = "--cfg vortex_nightly"
177175
try:
178176
result = run(
179177
[

‎.github/scripts/fuzz_report/cli.py‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -363,8 +363,9 @@ def cmd_report(args: argparse.Namespace) -> int:
363363
print(f"Commented on #{existing_issue}", file=sys.stderr)
364364
_write_github_output("issue_number", str(existing_issue))
365365
else:
366-
fuzz_target = variables.get("FUZZ_TARGET", "unknown")
367-
title = f"Fuzzing Crash: {crash_info.error_variant} in {fuzz_target}"
366+
# Use FUZZ_NAME for the title (descriptive name), fall back to FUZZ_TARGET
367+
fuzz_name = variables.get("FUZZ_NAME") or variables.get("FUZZ_TARGET", "unknown")
368+
title = f"Fuzzing Crash: {crash_info.error_variant} in {fuzz_name}"
368369

369370
body = render_template(str(TEMPLATES_DIR / "new_issue.md"), variables, use_env=False)
370371
body_file = Path("issue_body.md")

‎.github/workflows/approvals.yml‎

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
name: PR Approval Check
2+
3+
on:
4+
pull_request_review:
5+
types: [submitted, dismissed]
6+
7+
jobs:
8+
check-approvals:
9+
runs-on: ubuntu-latest
10+
steps:
11+
- name: Check required approvals
12+
uses: actions/github-script@450193c5abd4cdb17ba9f3ffcfe8f635c4bb6c2a
13+
with:
14+
script: |
15+
const pr = context.payload.pull_request;
16+
const reviews = await github.rest.pulls.listReviews({
17+
owner: context.repo.owner,
18+
repo: context.repo.repo,
19+
pull_number: pr.number,
20+
});
21+
22+
// Count unique human approvals (latest review per user)
23+
const latestByUser = {};
24+
for (const review of reviews.data) {
25+
if (review.user.type === 'Bot') continue;
26+
latestByUser[review.user.login] = review.state;
27+
}
28+
const approvalCount = Object.values(latestByUser)
29+
.filter(state => state === 'APPROVED').length;
30+
31+
// Determine if PR author is a bot/GitHub Actions
32+
const authorType = pr.user.type; // 'Bot' vs 'User'
33+
const authorLogin = pr.user.login; // e.g. 'github-actions[bot]'
34+
const isBot = authorType === 'Bot' || authorLogin.endsWith('[bot]');
35+
36+
const required = isBot ? 2 : 1;
37+
38+
console.log(`PR author: ${authorLogin} (${authorType}), isBot: ${isBot}`);
39+
console.log(`Approvals: ${approvalCount} / ${required} required`);
40+
41+
if (approvalCount < required) {
42+
core.setFailed(
43+
`This PR needs ${required} human approval(s) but has ${approvalCount}. ` +
44+
`(Author is ${isBot ? 'a bot' : 'human'})`
45+
);
46+
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# Dispatches benchmark workflows when benchmark labels are added to pull requests.
2+
# This is a separate workflow so that non-benchmark label events don't create
3+
# phantom check suites that obscure in-progress benchmark runs on the PR.
4+
5+
name: Benchmark Dispatch
6+
7+
on:
8+
pull_request:
9+
types: [labeled]
10+
branches: ["develop"]
11+
12+
permissions:
13+
actions: write
14+
contents: read
15+
pull-requests: write # for label removal and PR comments
16+
id-token: write # enables AWS-GitHub OIDC
17+
18+
jobs:
19+
remove-bench-label:
20+
runs-on: ubuntu-latest
21+
timeout-minutes: 2
22+
if: github.event.label.name == 'action/benchmark'
23+
steps:
24+
- uses: actions-ecosystem/action-remove-labels@v1
25+
if: github.event.pull_request.head.repo.full_name == 'vortex-data/vortex'
26+
with:
27+
labels: action/benchmark
28+
fail_on_error: true
29+
30+
bench:
31+
needs: remove-bench-label
32+
uses: ./.github/workflows/bench-pr.yml
33+
secrets: inherit
34+
35+
remove-sql-label:
36+
runs-on: ubuntu-latest
37+
timeout-minutes: 2
38+
if: github.event.label.name == 'action/benchmark-sql'
39+
steps:
40+
- uses: actions-ecosystem/action-remove-labels@v1
41+
if: github.event.pull_request.head.repo.full_name == 'vortex-data/vortex'
42+
with:
43+
labels: action/benchmark-sql
44+
fail_on_error: true
45+
46+
sql-bench:
47+
needs: remove-sql-label
48+
uses: ./.github/workflows/sql-pr.yml
49+
secrets: inherit

‎.github/workflows/bench-pr.yml‎

Lines changed: 8 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
# Runs all benchmarks once when we add the `action/benchmark` tag to a pull request.
1+
# Runs all benchmarks once for a pull request.
2+
# Called from bench-dispatch.yml when the `action/benchmark` label is added.
23

34
name: PR Benchmarks
45

@@ -9,32 +10,16 @@ concurrency:
910
cancel-in-progress: false
1011

1112
on:
12-
pull_request:
13-
types: [labeled, synchronize]
14-
branches: ["develop"]
13+
workflow_call: { }
1514
workflow_dispatch: { }
1615

1716
permissions:
18-
actions: write # for removing labels
1917
contents: read
2018
pull-requests: write # for commenting on PRs
2119
id-token: write # enables AWS-GitHub OIDC
2220

2321
jobs:
24-
label_trigger:
25-
runs-on: ubuntu-latest
26-
timeout-minutes: 120
27-
if: ${{ contains(github.event.head_commit.message, '[benchmark]') || github.event.label.name == 'action/benchmark' && github.event_name == 'pull_request' }}
28-
steps:
29-
# We remove the benchmark label first so that the workflow can be re-triggered.
30-
- uses: actions-ecosystem/action-remove-labels@v1
31-
if: ${{ github.event.pull_request.head.repo.full_name == 'vortex-data/vortex' }}
32-
with:
33-
labels: action/benchmark
34-
fail_on_error: true
35-
3622
bench:
37-
needs: label_trigger
3823
timeout-minutes: 120
3924
runs-on: >-
4025
${{ github.repository == 'vortex-data/vortex'
@@ -48,7 +33,6 @@ jobs:
4833
build_args: "--features lance"
4934
- id: compress-bench
5035
name: Compression
51-
if: ${{ contains(github.event.head_commit.message, '[benchmark]') || github.event.label.name == 'action/benchmark' && github.event_name == 'pull_request' }}
5236
steps:
5337
- uses: runs-on/action@v2
5438
if: github.event.pull_request.head.repo.fork == false
@@ -74,7 +58,7 @@ jobs:
7458
- name: Build binary
7559
shell: bash
7660
env:
77-
RUSTFLAGS: "-C target-cpu=native -C force-frame-pointers=yes"
61+
RUSTFLAGS: "-C target-cpu=native"
7862
run: |
7963
cargo build --package ${{ matrix.benchmark.id }} --profile release_debug ${{ matrix.benchmark.build_args }}
8064
@@ -137,17 +121,16 @@ jobs:
137121
comment-tag: bench-pr-comment-${{ matrix.benchmark.id }}
138122

139123
- name: Comment PR on failure
140-
if: failure() && inputs.mode == 'pr' && github.event.pull_request.head.repo.fork == false
124+
if: failure() && github.event.pull_request.head.repo.fork == false
141125
uses: thollander/actions-comment-pull-request@v3
142126
with:
143127
message: |
144-
# 🚨🚨🚨❌❌❌ BENCHMARK FAILED ❌❌❌🚨🚨🚨
128+
# BENCHMARK FAILED
145129
146130
Benchmark `${{ matrix.benchmark.name }}` failed! Check the [workflow run](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}) for details.
147131
comment-tag: bench-pr-comment-${{ matrix.benchmark.id }}
148132

149133
sql:
150-
needs: label_trigger
151134
uses: ./.github/workflows/sql-benchmarks.yml
152135
secrets: inherit
153136
with:
@@ -158,7 +141,8 @@ jobs:
158141
"id": "clickbench-nvme",
159142
"subcommand": "clickbench",
160143
"name": "Clickbench on NVME",
161-
"targets": "datafusion:parquet,datafusion:vortex,duckdb:parquet,duckdb:vortex,duckdb:duckdb"
144+
"targets": "datafusion:parquet,datafusion:vortex,duckdb:parquet,duckdb:vortex,duckdb:duckdb",
145+
"extra_data_formats": "vortex-compact"
162146
},
163147
{
164148
"id": "tpch-nvme",

‎.github/workflows/bench.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ jobs:
7171
- name: Build binary
7272
shell: bash
7373
env:
74-
RUSTFLAGS: "-C target-cpu=native -C force-frame-pointers=yes"
74+
RUSTFLAGS: "-C target-cpu=native"
7575
run: |
7676
cargo build --bin ${{ matrix.benchmark.id }} --profile release_debug ${{ matrix.benchmark.build_args }}
7777

0 commit comments

Comments
 (0)