Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
163 commits
Select commit Hold shift + click to select a range
e74aac3
fix: update doc links (#8375)
joseph-isaacs Jun 12, 2026
46e7253
perf: non-blocking Arrow Device array release (#8390)
0ax1 Jun 12, 2026
fb489a1
feat(vortex-geo): Arrow import/export for the native Point type (#8374)
HarukiMoriarty Jun 12, 2026
37ae2d7
REGEX support for sqllogictests (#8392)
myrrc Jun 12, 2026
31167ca
remove unused lockfile (#8394)
a10y Jun 12, 2026
5580295
Fix weird malformed license notice in test file (#8395)
AdamGS Jun 12, 2026
d0013ff
Add binary operator benchmarks (#8396)
gatesn Jun 12, 2026
9444d20
More arithmetic benchmarks (#8402)
gatesn Jun 12, 2026
4ea4f54
Constant comparison and byte_length OnPair kernels (#8371)
myrrc Jun 15, 2026
d66b973
Update plugin com.palantir.java-format to v2.93.0 (#8416)
renovate[bot] Jun 15, 2026
d423806
Align data buffers in fastlanes benchmarks (#8393)
AdamGS Jun 15, 2026
916a1f7
Yet another renovate configuration (#8427)
AdamGS Jun 15, 2026
01ea0fd
Fix renovate config (#8430)
AdamGS Jun 15, 2026
8cd57c8
Update dependency pip to v26.1.2 [SECURITY] (#8432)
renovate[bot] Jun 15, 2026
0511832
Update dependency duckdb to v1.4.2 [SECURITY] (#8431)
renovate[bot] Jun 15, 2026
727e694
Update anthropics/claude-code-action digest to d5726de (#8407)
renovate[bot] Jun 15, 2026
68698ef
Update gradle/actions digest to 3f131e8 (#8408)
renovate[bot] Jun 15, 2026
2528dca
Update taiki-e/install-action digest to 7a79fe8 (#8409)
renovate[bot] Jun 15, 2026
d737639
ffi: create data source from memory buffer (#8426)
myrrc Jun 15, 2026
49b0088
Support reporting statistics in spark datasource (#8057)
robert3005 Jun 15, 2026
e935986
fix: `vx_data_source_new_buffer` sem-merge conflict (#8437)
joseph-isaacs Jun 16, 2026
a17de8c
Ignore rustsec (#8381)
connortsui20 Jun 16, 2026
739b745
ci: temporarily disable rust-ffi-test-sanitizer (#8441)
joseph-isaacs Jun 16, 2026
9c4e0e4
Make `Mask` execution strict about nullable booleans (#8121)
joseph-isaacs Jun 16, 2026
fb5cbbe
ci: gate cuda san on cuda changes (#8438)
joseph-isaacs Jun 16, 2026
9b5447a
perf(buffer): read byte-aligned bit operands directly as words (#8436)
miniex Jun 16, 2026
e1c6ef5
break: add `Validity::definitely_all_null()` method (#8447)
joseph-isaacs Jun 16, 2026
67a2b22
fix: cuda san always run (#8449)
joseph-isaacs Jun 16, 2026
7dbe5ac
Arithmetic Operations (#8398)
gatesn Jun 17, 2026
d257d09
--patterns flag for random-access-bench (#8446)
myrrc Jun 17, 2026
4652f29
fmt: normalize_comments = true (#8428)
joseph-isaacs Jun 17, 2026
31fda42
perf[gpu]: generate FixedSizeList offsets on device (#8458)
0ax1 Jun 17, 2026
c9c8fb7
Pushdown some expressions to Dict layout reader (#8341)
myrrc Jun 17, 2026
170ff39
Add Delta scheme to the integer compressor (unstable_encodings) (#8212)
joseph-isaacs Jun 17, 2026
0c1d631
Ignore the other pyo3 RUSTSEC advisory (#8460)
AdamGS Jun 17, 2026
4b867a0
Update dependency starlette to v1.3.1 [SECURITY] (#8435)
renovate[bot] Jun 17, 2026
ddd03a0
Upgrade pyO3 to 0.29.0 (#8462)
robert3005 Jun 17, 2026
b2c9e79
Faster str interning (#8459)
AdamGS Jun 17, 2026
1726f5e
test: expand cuDF CUDA e2e coverage (#8463)
0ax1 Jun 17, 2026
679e2c5
Suppress TSAN false positives in crossbeam crate due to use of memory…
AdamGS Jun 17, 2026
9f494a1
Immutable session backed by `HashMap` (#8454)
AdamGS Jun 17, 2026
f0b8fb9
perf[buffer]: iteration for fallible operations with validity (#8120)
joseph-isaacs Jun 17, 2026
a45bb60
feat: DeltaScheme adjustable compression ratio threshold (#8461)
joseph-isaacs Jun 17, 2026
0ed06b3
feat(vortex-datafusion): struct scalar conversion + extension-over-st…
HarukiMoriarty Jun 17, 2026
8058097
vortex-tui: query tab should work for non-*.vortex files (#8473)
a10y Jun 17, 2026
60d165d
Add Kleene boolean benchmarks (#8476)
gatesn Jun 17, 2026
cb82828
perf[gpu]: export arrow device validity on the gpu (#8440)
0ax1 Jun 17, 2026
48c33e8
Correctly restore unstable encoding corpus and create tokio runtime o…
robert3005 Jun 17, 2026
ea6f8fe
Include vortex-compute in codspeed benchmarks (#8477)
robert3005 Jun 17, 2026
e0ac2bd
Add benchmarks for take on runend array (#8469)
robert3005 Jun 17, 2026
85aad72
Optimize buffer ops (#8322)
AdamGS Jun 17, 2026
69ce1ed
fix Fuzz constant OOM for CUDA (#8481)
a10y Jun 17, 2026
c2d2722
More realistic RunEnd take benchmark params (#8484)
robert3005 Jun 18, 2026
a4476f1
Minimize default sql benchmarks suite (#8465)
AdamGS Jun 18, 2026
4f52cbc
perf: don't use fill_null for executing an array into a mask (#8466)
joseph-isaacs Jun 18, 2026
7f170ce
Touch up some of the interfaces and docs in vortex-datafusion (#8485)
AdamGS Jun 18, 2026
ad46b6c
fix: preserve operand width in DecimalValue checked arithmetic (#7380)
abnobdoss Jun 18, 2026
59cf59c
Scalar functions pushdown to Duckdb (#8303)
myrrc Jun 18, 2026
202953d
Change `ALIGNMENT_TO_HOST_COPY` to `Alignment::HOST_COPY` (#8488)
AdamGS Jun 18, 2026
c2119d9
codegen only used functions in duckdb C API (#8491)
myrrc Jun 18, 2026
b68abbb
Split core `vortex-duckdb` from the extension to reduce build overhea…
AdamGS Jun 18, 2026
d020924
Inline Kleene boolean kernels (#8478)
gatesn Jun 18, 2026
98d4a6a
Build CUDA benchmarks once, but run in parallel (#8489)
AdamGS Jun 18, 2026
aef6307
Migrate to new stats falsification rules (#8345)
gatesn Jun 18, 2026
ed69077
Move execute-parent kernels into session registry (#8482)
gatesn Jun 18, 2026
02e085f
Faster take for runend array (#8228)
robert3005 Jun 18, 2026
ca96791
Generalize SIMD `take` operations to `Copy` (#8496)
connortsui20 Jun 18, 2026
6a3fb19
Preserve dict referenced values metadata (#8499)
gatesn Jun 18, 2026
7ff0d87
run each benchmark type in random access separately (#8470)
myrrc Jun 19, 2026
3a7b9a0
Remove duckdbfs (#8468)
myrrc Jun 19, 2026
35e4d72
Misc upgrades to `VortexSource` (#8501)
AdamGS Jun 19, 2026
812c277
feat[gpu]: arrow device array stream support (#8483)
0ax1 Jun 19, 2026
575db9c
Handle null lanes in primitive take (#8505)
gatesn Jun 19, 2026
5d55fbc
Make sure both pushdown features are always enabled for DF benchmarks…
AdamGS Jun 19, 2026
4187c1a
Use aggregate descriptors for zoned stats (#7938)
gatesn Jun 19, 2026
9814173
Fix is_zero() for FixedSizeList and Struct scalar types (#8500)
connortsui20 Jun 19, 2026
97850e9
Add a dormant v4 RDS Postgres dual-write to the CI benchmark emitters…
connortsui20 Jun 19, 2026
dc3fa49
feat(vortex-geo): ST_Distance via the `geo` crate + `Polygon` type (#…
HarukiMoriarty Jun 19, 2026
3f54d1f
Move optimizer kernels into a dedicated KernelSession (#8511)
gatesn Jun 19, 2026
e0faa08
ci: fix v4 ingest uv/sccache ordering; rename commit-metadata workflo…
connortsui20 Jun 19, 2026
de60638
Fix bounded max partial state (#8515)
gatesn Jun 20, 2026
5df0f94
Numerical aggregate functions have an option to skip or include nans …
robert3005 Jun 20, 2026
1dc4c9d
Lock file maintenance Rust lock file maintenance (#8537)
renovate[bot] Jun 22, 2026
2b64fb1
Lock file maintenance JS lock file maintenance (#8536)
renovate[bot] Jun 22, 2026
4ede01f
Update actions/checkout action to v7 (#8524)
renovate[bot] Jun 22, 2026
059b32f
Update taiki-e/install-action digest to 9e1e580 (#8523)
renovate[bot] Jun 22, 2026
2fb17f1
Update anthropics/claude-code-action digest to 2fee155 (#8522)
renovate[bot] Jun 22, 2026
43571eb
Update actions/setup-java digest to ad2b381 (#8521)
renovate[bot] Jun 22, 2026
fc5b8a8
Update lance benchmark dependencies (major) (#8525)
renovate[bot] Jun 22, 2026
e7a7ad9
DuckDB chunk exporter (#8520)
gatesn Jun 22, 2026
20363bc
Add extension storage scalar function (#8540)
gatesn Jun 22, 2026
d53301e
perf: align buffer to `Alignment::DEFAULT_ALIGNMENT = Alignment::new(…
joseph-isaacs Jun 22, 2026
f1adef2
refactor[fsst]: take ArrayRef in fsst_compress, decide offset width u…
mprammer Jun 22, 2026
d3da261
Update Rust crate memmap2 to v0.9.11 [SECURITY] (#8545)
renovate[bot] Jun 22, 2026
5a764e6
assert_arrays_eq and assert_nth_scalar require ExecutionCtx (#8509)
robert3005 Jun 22, 2026
40a7857
ReusableDict for RunEnd duckdb exporter (#8538)
myrrc Jun 23, 2026
226477d
Remove usages of LEGACY_SESSION from tests (#8547)
robert3005 Jun 23, 2026
df3e829
Correctly calculate FSST compressed output size (#8551)
robert3005 Jun 23, 2026
e6d0e08
Use R2 bucket for duckdb libraries (#8486)
myrrc Jun 23, 2026
71319b7
Bump codspeed to 5.0 (#8553)
robert3005 Jun 23, 2026
ba700ca
Remove LEGACY_SESSION from benchmarks and back compat tests (#8554)
robert3005 Jun 23, 2026
f9ab66b
Expanding conceptual docs (and some other minor docs) (#8552)
AdamGS Jun 23, 2026
682c7b8
Add JSON to Parquet Variant conversion with shredding (#8391)
AdamGS Jun 23, 2026
b6ba850
RLEExporter for duckdb (#8539)
myrrc Jun 23, 2026
809e2a4
Clear 3 orphan json files from root of repo (#8558)
AdamGS Jun 23, 2026
dab39bf
Optimize interleave boolean gather (#8350)
joseph-isaacs Jun 23, 2026
9382028
Fix LEGACY_SESSION removal conflict (#8560)
robert3005 Jun 23, 2026
638f0c1
Refactor DictEncoder to not use ArrayAccessors (#7759)
robert3005 Jun 23, 2026
f793584
Add clickbench-sorted benchmark (#8559)
AdamGS Jun 23, 2026
4668b6e
fix(layout): don't panic collecting an empty stream (#8472)
miniex Jun 23, 2026
1118a20
Decimal casting (#8562)
gatesn Jun 24, 2026
f41dc23
GDB pretty-printers (#8556)
myrrc Jun 24, 2026
d0d400c
Use AllNonDistinct in assert_arrays_eq and implement it for variant t…
robert3005 Jun 24, 2026
d300645
feat(python): package CUDA as an optional extension (#8510)
0ax1 Jun 24, 2026
0726fb9
Add benchmarks for decimal casting (#8569)
robert3005 Jun 24, 2026
4457a4a
perf(alp): avoid per-combination allocations when searching exponents…
miniex Jun 24, 2026
b0fb9f1
Separate and merge .h/.hpp files in duckdb (#8566)
myrrc Jun 24, 2026
9abc307
Improve SLT test harness (#8567)
AdamGS Jun 24, 2026
cfdece3
Shorter PR template (#8571)
AdamGS Jun 24, 2026
2a19323
fix(array): don't panic on unsupported arrow types (#8564)
miniex Jun 24, 2026
e2478aa
Save children dtypes/length in ZstdBuffersMetadata (#8572)
myrrc Jun 24, 2026
5e95e75
Simplify benchmark comments (#8581)
AdamGS Jun 24, 2026
51752c8
typo: PR template (#8583)
lwwmanning Jun 24, 2026
9d3aafb
perf(scan): intra-file decode parallelism — sub-split large chunk spa…
lukekim Jun 24, 2026
aeae579
Report DuckDB max cardinality for exact scans (#8582)
gatesn Jun 24, 2026
15cec3b
Tune varbinview compaction for Arrow export (#8585)
gatesn Jun 24, 2026
6fe605b
Expand AWS session time for SQL benchmarks (#8592)
AdamGS Jun 25, 2026
b4c85b6
vortex-datafusion: Pipe session through to converter (#8591)
brancz Jun 25, 2026
937c9d7
Guard calling is_nan on scalar value on dtype being a float (#8593)
robert3005 Jun 25, 2026
3493ecb
Chunked dict values pullup (#8577)
gatesn Jun 25, 2026
33d6e07
Improve clickbench-sorted to better reflect sorted data (#8584)
AdamGS Jun 25, 2026
a9a3c27
Compute zone layout stats concurrently when writing (#8594)
robert3005 Jun 25, 2026
bdbf6c4
Spawn arrow conversion in jni bindings (#8595)
robert3005 Jun 25, 2026
3c53111
Support session-time source configuration in DataFusion, and clear up…
AdamGS Jun 25, 2026
97f49ed
fix: support 64K alignment (#8599)
a10y Jun 25, 2026
9567467
feat(array): push struct validity into children (#8589)
miniex Jun 25, 2026
f172d58
feat(file): make Footer::new public (#8602)
tobias-fire Jun 26, 2026
ba00e83
Remove ArrayAccessor (#8603)
robert3005 Jun 26, 2026
3451cb0
move optimizer code to scalar_fn_pushdown (#8605)
myrrc Jun 26, 2026
3be9427
Add `list_length` scalar function (#8495)
mhk197 Jun 26, 2026
88222ac
perf(duckdb): push down list length expressions (#8544)
mhk197 Jun 26, 2026
bf2be52
Fix wasm32 build by gating MultiFileSession on non-wasm targets (#8612)
robert3005 Jun 27, 2026
df5202f
Lock file maintenance (#8615)
renovate[bot] Jun 29, 2026
49f300d
feat: add metadata bridge for Python CUDA export (#8604)
0ax1 Jun 29, 2026
733ab9e
perf: cache static identifiers to avoid per-call interner locks (#8614)
miniex Jun 29, 2026
00c39e8
Migrate WASM Arrow conversion to use VortexSession (#8619)
robert3005 Jun 29, 2026
173f664
bool -> Primitive casts (#8621)
myrrc Jun 29, 2026
a9f77d1
Polish treemap view in vortex explorer (#8613)
robert3005 Jun 29, 2026
5ea73bd
fix: CUDA bitpacked sliced output allocation (#8622)
0ax1 Jun 29, 2026
1e689a1
Expose array buffer replacement (#8606)
gatesn Jun 29, 2026
2a15a9f
perf(datafusion): push down `list_length` expression (#8600)
mhk197 Jun 29, 2026
f2758d3
Lock file maintenance (#8616)
renovate[bot] Jun 29, 2026
79c6b0f
chore: Python CUDA bridge: CI and buffer handoff ABI (#8618)
0ax1 Jun 29, 2026
4a90e13
Patches have correct dtype by construction instead of normalised duri…
robert3005 Jun 30, 2026
3077131
chore: forbid the locking Id constructors with a clippy lint (#8617)
miniex Jun 30, 2026
5d3be01
Lock scheduler in GDB when launching functions (#8629)
myrrc Jun 30, 2026
797b650
fix(vortex-bench): map gs:// scheme to gcs storage label (#8630)
brancz Jun 30, 2026
3e7098c
feat(vortex-bench): infra of SpatialBench on DuckDB, plain binary (#8…
HarukiMoriarty Jun 30, 2026
c7e8ae9
Back VortexSession with ArcSwap for mutable but less errorprone sessi…
robert3005 Jul 1, 2026
d9ded20
Convert extension type scalars to Value correctly (#8635)
myrrc Jul 1, 2026
0a45777
Add swimlane view to vortex-web that visualizes physical layout of co…
robert3005 Jul 1, 2026
4f008a9
Merge tag '0.76.0' into lukim/spiceai-54-vortex-0.76.0
lukekim Jul 5, 2026
d41e094
refactor(vortex-array): migrate extension date-cast + Arrow Map test …
lukekim Jul 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
8 changes: 6 additions & 2 deletions .github/actions/check-rebuild/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,12 @@ name: "Build and verify rebuild is a no-op"
description: "Run a cargo command, then re-run it to verify all artifacts are cached"
inputs:
command:
description: "The cargo build command to run and verify (--message-format json is appended on the verification run)"
description: "The cargo build command to run and verify"
required: true
message-format-flag:
description: "The flag used to request Cargo compiler-artifact JSON during the verification run"
required: false
default: "--message-format"
runs:
using: "composite"
steps:
Expand All @@ -14,7 +18,7 @@ runs:
shell: bash
run: |
stale=$(${{ inputs.command }} \
--message-format json 2>/dev/null \
${{ inputs.message-format-flag }} json 2>/dev/null \
| jq -r 'select(.reason == "compiler-artifact" and .fresh == false) | .target.name')
if [ -n "$stale" ]; then
echo "ERROR: Rebuild recompiled crates that should have been cached:"
Expand Down
54 changes: 11 additions & 43 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -1,55 +1,23 @@
<!--
Thank you for submitting a pull request! We appreciate your time and effort.

Please make sure to provide enough information so that we can review your pull
request. The Summary and Testing sections below contain guidance on what to
include.
-->

## Summary
## Rationale for this change

<!--
If this PR is related to a tracked effort, please link to the relevant issue
here (e.g., `Closes: #123`). Otherwise, feel free to ignore / delete this.

In this section, please:

1. Explain the rationale for this change.
2. Summarize the changes included in this PR.
Why are you proposing this change, and what is its impact?
Is it part of a long term effort, or a bigger change?

A general rule of thumb is that larger PRs should have larger summaries. If
there are a lot of changes, please help us review the code by explaining what
was changed and why.

If there is an issue or discussion attached, there is no need to duplicate all
the details, but clarity is always preferred over brevity.
If this PR is related to a tracked effort or an open issue, please link to the relevant issue.
-->

Closes: #000
- Closes: #000

## What changes are included in this PR?
<!--
## API Changes

Uncomment this section if there are any user-facing changes.

Consider whether the change affects users in one of the following ways:

1. Breaks public APIs in some way.
2. Changes the underlying behavior of one of the engine integrations.
3. Should some documentation be updated to reflect this change?

If a public API is changed in a breaking manner, make sure to add the
appropriate label.
No need to duplicate information from the previous section, but if you're touching many
parts of the code base, its worth explicitly noting the important changes or how they are tested.
-->

## Testing
## What APIs are changed? Are there any user-facing changes?

<!--
Please describe how this change was tested. Here are some common categories for
testing in Vortex:

1. Verifying existing behavior is maintained.
2. Verifying new behavior and functionality works correctly.
3. Serialization compatibility (backwards and forwards) should be maintained or
explicitly broken.
Are there any user-facing changes that might require documentation updates
Is any public API changed?
-->
18 changes: 18 additions & 0 deletions .github/workflows/bench-dispatch.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,3 +47,21 @@ jobs:
needs: remove-sql-label
uses: ./.github/workflows/sql-pr.yml
secrets: inherit

remove-sql-full-label:
runs-on: ubuntu-latest
timeout-minutes: 10
if: github.event.label.name == 'action/benchmark-sql-full'
steps:
- uses: actions-ecosystem/action-remove-labels@2ce5d41b4b6aa8503e285553f75ed56e0a40bae0 # v1
if: github.event.pull_request.head.repo.full_name == 'vortex-data/vortex'
with:
labels: action/benchmark-sql-full
fail_on_error: true

sql-full-bench:
needs: remove-sql-full-label
uses: ./.github/workflows/sql-pr.yml
secrets: inherit
with:
benchmark_profile: "full"
13 changes: 12 additions & 1 deletion .github/workflows/bench-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ jobs:
if: github.event.pull_request.head.repo.fork == false
with:
sccache: s3
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Setup benchmark environment
Expand Down Expand Up @@ -72,7 +72,18 @@ jobs:
profiling_frequency: 199
extra_args: "--off-cpu-threshold=0.03" # Personally tuned by @brancz

- name: Run ${{ matrix.benchmark.name }} benchmark (per-combination)
if: matrix.benchmark.id == 'random-access-bench'
shell: bash
env:
RUST_BACKTRACE: full
VORTEX_EXPERIMENTAL_PATCHED_ARRAY: "1"
FLAT_LAYOUT_INLINE_ARRAY_NODE: "1"
run: |
python3 scripts/random-access-split.py

- name: Run ${{ matrix.benchmark.name }} benchmark
if: matrix.benchmark.id != 'random-access-bench'
shell: bash
env:
RUST_BACKTRACE: full
Expand Down
62 changes: 60 additions & 2 deletions .github/workflows/bench.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
- name: Setup AWS CLI
uses: aws-actions/configure-aws-credentials@e7f100cf4c008499ea8adda475de1042d6975c7b # v6
with:
Expand Down Expand Up @@ -54,7 +54,7 @@ jobs:
if: github.repository == 'vortex-data/vortex'
with:
sccache: s3
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
- name: Setup benchmark environment
run: sudo bash scripts/setup-benchmark.sh
- uses: ./.github/actions/setup-rust
Expand Down Expand Up @@ -85,7 +85,18 @@ jobs:
profiling_frequency: 199
extra_args: "--off-cpu-threshold=0.03" # Personally tuned by @brancz

- name: Run ${{ matrix.benchmark.name }} benchmark (per-combination)
if: matrix.benchmark.id == 'random-access-bench'
shell: bash
env:
RUST_BACKTRACE: full
VORTEX_EXPERIMENTAL_PATCHED_ARRAY: "1"
FLAT_LAYOUT_INLINE_ARRAY_NODE: "1"
run: |
python3 scripts/random-access-split.py --v3

- name: Run ${{ matrix.benchmark.name }} benchmark
if: matrix.benchmark.id != 'random-access-bench'
shell: bash
env:
RUST_BACKTRACE: full
Expand Down Expand Up @@ -117,6 +128,53 @@ jobs:
--benchmark-id "${{ matrix.benchmark.id }}" \
--repo-url "${{ github.server_url }}/${{ github.repository }}"

# v4 (Postgres) dual-write -- BEST-EFFORT during the migration soak. The
# proven v3 step above is hard-required; a v4 failure must NOT fail the job
# (v4 is promoted to required at cutover, PR-5.1). Gated on the ingest-role
# ARN var (the assume-role input that MUST exist for OIDC to succeed) so it
# no-ops until v4 infra is wired, and every step is
# `continue-on-error` so an OIDC / uv / connect hiccup never breaks the v3
# pipeline. post-ingest.py mints the RDS IAM token internally (boto3) from
# the assumed GitHubBenchmarkIngestRole; sslmode=verify-full validates the cert.
#
# ORDER MATTERS: "Install uv" runs BEFORE "Configure AWS credentials".
# configure-aws-credentials persists the assumed ingest-role (rds-db:connect
# only) as the job's ambient AWS creds; the uv setup compiles via sccache
# (S3-backed), so running it after the role switch fails with S3 AccessDenied.
# Installing uv first keeps sccache on the original S3-capable creds; the role
# is assumed immediately before the ingest, which needs only rds-db:connect.
- name: Install uv for v4 ingest
if: vars.GH_BENCH_INGEST_ROLE_ARN != ''
continue-on-error: true
uses: spiraldb/actions/.github/actions/setup-uv@a746510eafaa926484c354541cfc49b2ec06cc63 # 0.18.6
- name: Configure AWS credentials for v4 ingest (OIDC)
if: vars.GH_BENCH_INGEST_ROLE_ARN != ''
continue-on-error: true
uses: aws-actions/configure-aws-credentials@e7f100cf4c008499ea8adda475de1042d6975c7b # v6
with:
role-to-assume: ${{ vars.GH_BENCH_INGEST_ROLE_ARN }}
aws-region: ${{ vars.RDS_BENCH_REGION }}
- name: Ingest results to v4 Postgres (best-effort)
if: vars.GH_BENCH_INGEST_ROLE_ARN != ''
continue-on-error: true
shell: bash
env:
RDS_BENCH_INSTANCE_ENDPOINT: ${{ vars.RDS_BENCH_INSTANCE_ENDPOINT }}
RDS_BENCH_DB_NAME: ${{ vars.RDS_BENCH_DB_NAME }}
AWS_REGION: ${{ vars.RDS_BENCH_REGION }}
BENCH_SITE_BASE_URL: ${{ vars.BENCH_SITE_BASE_URL }}
BENCH_REVALIDATE_TOKEN: ${{ secrets.BENCH_REVALIDATE_TOKEN }}
run: |
set -Eeuo pipefail
curl -fsSL https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem \
-o "${RUNNER_TEMP}/rds-global-bundle.pem"
DSN="postgresql://bench_ingest@${RDS_BENCH_INSTANCE_ENDPOINT}:5432/${RDS_BENCH_DB_NAME}?sslmode=verify-full&sslrootcert=${RUNNER_TEMP}/rds-global-bundle.pem"
uv run --no-project --with 'psycopg[binary]' --with boto3 --with xxhash \
scripts/post-ingest.py results.v3.jsonl \
--postgres "${DSN}" \
--commit-sha "${{ github.sha }}" \
--region "${AWS_REGION}"

- name: Alert incident.io
if: failure()
uses: ./.github/actions/alert-incident-io
Expand Down
Loading
Loading