Skip to content

Conversation

@a10y
Copy link
Contributor

@a10y a10y commented Aug 8, 2025

ArrayOperations currently return VortexResult<>, but they really should just be infallible. A failed array op is generally indicative of programmer or encoding error. There's really nothing interesting we can do to handle an out-of-bounds slice() or scalar_at.

There's a lot that falls out of this, like fixing a bunch of tests, tweaking our scalar value casting to return Option instead of Result, etc.

@gatesn
Copy link
Contributor

gatesn commented Aug 8, 2025

The only thing to note is where we might perform the validation.

Can someone craft a bad file, send it to a server running vortex, and crash it?

@a10y
Copy link
Contributor Author

a10y commented Aug 8, 2025

I guess this is really two questions

  1. How does this change our behavior when reading corrupted files
  2. Does this make it easier/harder to write corrupted files

For (1) this will panic instead of returning an error, but most server frameworks already catch_unwind to prevent panics inside of handlers from crashing the whole server, so I'm not too concerned about this. FWIW, Arrow does do this as well.

So then the question is (2): does doing this mean that we're doing less validation than before. I think the answer is no? We currently trust the buffers coming back out of a file, just like our in-memory Array constructors only do constant-time validation of their inputs. So for example, if someone tries to build a VarBinViewArray of type Utf8, we never validate that the bytes actually hold UTF8. This I think is probably bad, and we should probably be eagerly checking preconditions. And then have a set of unchecked constructors to call internally when we're doing operations on trusted data that we know the operation maintains the invariant.

I don't think returning Result is actually doing anything currently to prevent writing corrupted files though, so I see it as orthogonal?

@a10y a10y added the changelog/feature A new feature label Aug 8, 2025
@a10y a10y force-pushed the aduffy/slice-no-err branch 4 times, most recently from 4fcdc72 to 3ac4ea0 Compare August 8, 2025 22:30
@a10y a10y force-pushed the aduffy/slice-no-err branch from 3ac4ea0 to e64694c Compare August 8, 2025 22:32
@coveralls
Copy link

coveralls commented Aug 8, 2025

Coverage Status

coverage: 24.083%. first build
when pulling b42e575 on aduffy/slice-no-err
into 7eb8ac9 on develop.

@a10y a10y force-pushed the aduffy/slice-no-err branch 3 times, most recently from dab0372 to d774e31 Compare August 8, 2025 23:22
@robert3005
Copy link
Contributor

Pushed a commit to fix the last doc failure

@a10y a10y force-pushed the aduffy/slice-no-err branch 5 times, most recently from 3315924 to 6fca302 Compare August 11, 2025 14:11
@a10y
Copy link
Contributor Author

a10y commented Aug 11, 2025

@gatesn I think you're right and we probably need better validation in our try_from constructors that check for invariants in the values as well as just in metadata. Then the only thing IMO that should be fallible is the SerdeVTable::build call. Then we have a nice property that once we hold an instance of an encoding in-memory, we can assume all of its preconditions have been met. Examples:

  • RunEnd validates ends.max() < len
  • Bool validates the buffer is exactly sized
  • Dict validates codes.max() < values.len()
  • Varbin/List validates offsets are monotonic and ends at len
  • VBView scans views to check all of the buffer/offset ptrs are in-bounds.

Even before this change, there are a ton of places that we check these things lazily and would panic, not return error. I think it'd be worth a modest penalty to check some of these things eagerly. The alternative is that you can potentially read and propagate corrupt data and won't know unless you run a a compute function that would trigger it somewhere. That does bring up the question of how to handle unparseable things/messages that your client doesn't know about but wants to propagate unmodified...

@a10y a10y force-pushed the aduffy/slice-no-err branch 2 times, most recently from c148959 to be9bafd Compare August 11, 2025 18:38
@a10y a10y marked this pull request as ready for review August 11, 2025 19:26
@a10y a10y changed the title (WIP) feat: ArrayOperations infallible feat: ArrayOperations infallible Aug 11, 2025
@a10y
Copy link
Contributor Author

a10y commented Aug 12, 2025

@gatesn I'm working over in #4216 to improve validation. I think the ideal guarantee to provide clients is

  • Deserializing untrusted bytes on file read should never panic, it should always return an error
  • When SerdeVTable::build() returns an Ok(V::Array) back, you can assume that it is well-formed. For example, ListArray is guaranteed to have non-negative offsets that only point to valid elements range

But things get a bit weird when we factor extensions into the mix, because in theory someone can add an encoding that doesn't semantically meet the full contract, but compiles fine and may cause a panic at runtime.

For example with ListArray, I'd like to verify that offsets children are non-negative and monotonic, and don't point past the end of elements. Once I validate that the offsets are non-nullable, I want to do something like offsets.statistics().compute_min().vortex_expect("array has no nulls"). If the encoding fails to properly implement the min stat, then this panics. On the one hand, this is an encoding programmer error and it's probably correct to panic. On the other hand, it can be a bad UX for clients. I find it hard to design around external encodings since they are so rare at the moment.

@a10y a10y force-pushed the aduffy/slice-no-err branch from be9bafd to d3b7e7d Compare August 13, 2025 20:43
@gatesn
Copy link
Contributor

gatesn commented Aug 14, 2025

If you're loading extensions from native code shared libraries.... I think all bets are off anyway!

The bigger concern I have is I simply don't understand how you can perform validation during deserialization without effectively decompressing everything. How can you demonstrate that offsets are unique and monotonic? Even asking for min(X) defers to stats, which we load from the file and never verify. Asserting monotonicity is essentially iterating over the array.

I think you're holding the validation to be a little too strong. Why does monotonicity matter? We care about it to perform e.g. search_sorted, but if it's not sorted, then the results are garbage. Maybe that's fine? It's not a panic, it's just nonsense.

Basically, what are the terms of this validation contract? Is it just panic prevention?

@a10y
Copy link
Contributor Author

a10y commented Aug 15, 2025

I think the terms of the validation contract I'm proposing are: when I build an XYZArray, either from components or from deserialization, and it succeeds, the thing I am holding is a valid XYZEncoding and satisfies its constraints.

I have two concerns with the status quo

  1. I'm concerned that we either have or can very conceivably have memory safety violations in the presence of maliciously crafted files, e.g. assuming a view pointer is valid or assuming list offsets are monotonic
  2. It is currently trivially easy to write corrupt data to a file, because we don't check any of the invariants. You can happily write a VarBinArray with some bad offsets to disk and it will accept it, then error when you try to read it. I think ideally the system prevents you from writing corrupted data altogether.

This is hard, because I agree with you, that in the limit you can't really do better than decoding to primitive array, or iterating VBView views buffer. But, and FWIW, this is exactly what our ToArrowCanonical kernel already does. We use the arrow-rs safe constructors, which internally do validation on all offsets buffers, BinaryView pointers, utf-8 codepoints, etc. But we don't do any of this when scanning into Vortex.

I want to run full SQL benchmarks but what I'm actually wondering is if we interleave the IO and CPU operations properly, can we do this without destroying scan performance? It'd impose a cost on time-to-first-batch but if you can amortize it with the IO then maybe it actually doesn't impose a big penalty?

@a10y a10y force-pushed the aduffy/slice-no-err branch from d3b7e7d to df58778 Compare August 18, 2025 12:56
@a10y a10y added the action/benchmark-sql Trigger SQL benchmarks to run on this PR label Aug 18, 2025
@github-actions github-actions bot removed the action/benchmark-sql Trigger SQL benchmarks to run on this PR label Aug 18, 2025
@a10y a10y force-pushed the aduffy/slice-no-err branch from df58778 to 74cbbea Compare August 18, 2025 13:01
@github-actions
Copy link
Contributor

github-actions bot commented Aug 18, 2025

Benchmarks: TPC-H SF=1 on NVME

Table of Results
name PR cdc94ae base 7eb8ac9 ratio (PR/base) unit
tpch_q01/DataFusion:arrow 53670295 5.3071e+07 1.01129 ns
tpch_q02/DataFusion:arrow 16830739 1.69294e+07 0.99417 ns
tpch_q03/DataFusion:arrow 22115005 2.15334e+07 1.02701 ns
tpch_q04/DataFusion:arrow 12008100 1.1553e+07 1.0394 ns
tpch_q05/DataFusion:arrow 31789070 3.13451e+07 1.01417 ns
tpch_q06/DataFusion:arrow 7510505 7.058e+06 1.06411 ns
tpch_q07/DataFusion:arrow 52836044 5.12242e+07 1.03147 ns
tpch_q08/DataFusion:arrow 18862215 1.84871e+07 1.02029 ns
tpch_q09/DataFusion:arrow 32135046 3.21143e+07 1.00065 ns
tpch_q10/DataFusion:arrow 28827153 2.90434e+07 0.992555 ns
tpch_q11/DataFusion:arrow 8193868 8.12386e+06 1.00862 ns
tpch_q12/DataFusion:arrow 21371771 2.13346e+07 1.00174 ns
tpch_q13/DataFusion:arrow 14507518 1.45384e+07 0.997879 ns
tpch_q14/DataFusion:arrow 7170575 6.98902e+06 1.02598 ns
tpch_q15/DataFusion:arrow 13875398 1.29136e+07 1.07448 ns
tpch_q16/DataFusion:arrow 14679996 1.4691e+07 0.999252 ns
tpch_q17/DataFusion:arrow 49217797 4.85919e+07 1.01288 ns
tpch_q18/DataFusion:arrow 102316252 9.74983e+07 1.04942 ns
tpch_q19/DataFusion:arrow 22067586 1.74723e+07 1.263 ns
tpch_q20/DataFusion:arrow 20944708 2.01956e+07 1.03709 ns
tpch_q21/DataFusion:arrow 85457026 8.19998e+07 1.04216 ns
tpch_q22/DataFusion:arrow 10982281 1.12511e+07 0.976104 ns
tpch_q01/DataFusion:parquet 155984696 1.56643e+08 0.995796 ns
tpch_q02/DataFusion:parquet 80748576 7.97613e+07 1.01238 ns
tpch_q03/DataFusion:parquet 79967436 7.97579e+07 1.00263 ns
tpch_q04/DataFusion:parquet 60726252 5.928e+07 1.0244 ns
tpch_q05/DataFusion:parquet 98888167 9.67767e+07 1.02182 ns
tpch_q06/DataFusion:parquet 35446612 3.64299e+07 0.973008 ns
tpch_q07/DataFusion:parquet 116846722 1.11948e+08 1.04376 ns
tpch_q08/DataFusion:parquet 95065000 9.55065e+07 0.995378 ns
tpch_q09/DataFusion:parquet 140221507 1.33342e+08 1.0516 ns
tpch_q10/DataFusion:parquet 122393255 1.19733e+08 1.02221 ns
tpch_q11/DataFusion:parquet 65208980 6.56035e+07 0.993986 ns
tpch_q12/DataFusion:parquet 83940210 8.84698e+07 0.948801 ns
tpch_q13/DataFusion:parquet 165095855 1.68366e+08 0.980575 ns
tpch_q14/DataFusion:parquet 42413469 4.25784e+07 0.996127 ns
tpch_q15/DataFusion:parquet 67092936 5.79238e+07 1.1583 ns
tpch_q16/DataFusion:parquet 48008860 4.68273e+07 1.02523 ns
tpch_q17/DataFusion:parquet 125655815 1.30829e+08 0.960458 ns
tpch_q18/DataFusion:parquet 178068712 1.89141e+08 0.94146 ns
tpch_q19/DataFusion:parquet 103434551 8.39429e+07 1.2322 ns
tpch_q20/DataFusion:parquet 71608588 7.8712e+07 0.909755 ns
tpch_q21/DataFusion:parquet 141525017 1.44696e+08 0.978082 ns
tpch_q22/DataFusion:parquet 74010953 7.56735e+07 0.97803 ns
tpch_q01/DataFusion:vortex-file-compressed 54847682 5.46018e+07 1.0045 ns
tpch_q02/DataFusion:vortex-file-compressed 31774896 3.04131e+07 1.04478 ns
tpch_q03/DataFusion:vortex-file-compressed 21104699 2.16454e+07 0.97502 ns
tpch_q04/DataFusion:vortex-file-compressed 16049976 1.56244e+07 1.02724 ns
tpch_q05/DataFusion:vortex-file-compressed 60115882 5.6696e+07 1.06032 ns
tpch_q06/DataFusion:vortex-file-compressed 7251798 6.83538e+06 1.06092 ns
tpch_q07/DataFusion:vortex-file-compressed 67892341 6.65808e+07 1.0197 ns
tpch_q08/DataFusion:vortex-file-compressed 38077015 3.71202e+07 1.02578 ns
tpch_q09/DataFusion:vortex-file-compressed 53381563 5.11956e+07 1.0427 ns
tpch_q10/DataFusion:vortex-file-compressed 37299218 3.74753e+07 0.995301 ns
tpch_q11/DataFusion:vortex-file-compressed 18924111 1.89231e+07 1.00005 ns
tpch_q12/DataFusion:vortex-file-compressed 16326507 1.65752e+07 0.984994 ns
tpch_q13/DataFusion:vortex-file-compressed 21736018 2.08358e+07 1.0432 ns
tpch_q14/DataFusion:vortex-file-compressed 10658404 1.10003e+07 0.968919 ns
tpch_q15/DataFusion:vortex-file-compressed 18538367 1.8207e+07 1.0182 ns
tpch_q16/DataFusion:vortex-file-compressed 22461252 2.20062e+07 1.02068 ns
tpch_q17/DataFusion:vortex-file-compressed 59511397 5.84803e+07 1.01763 ns
tpch_q18/DataFusion:vortex-file-compressed 90755695 9.1597e+07 0.990815 ns
tpch_q19/DataFusion:vortex-file-compressed 16802787 1.6132e+07 1.04158 ns
tpch_q20/DataFusion:vortex-file-compressed 22633079 2.26925e+07 0.997383 ns
tpch_q21/DataFusion:vortex-file-compressed 71929681 6.96569e+07 1.03263 ns
tpch_q22/DataFusion:vortex-file-compressed 13344496 1.30212e+07 1.02483 ns
tpch_q01/DuckDB:parquet 101055239 1.00958e+08 1.00097 ns
tpch_q02/DuckDB:parquet 43284301 4.49881e+07 0.962128 ns
tpch_q03/DuckDB:parquet 71695038 7.37873e+07 0.971645 ns
tpch_q04/DuckDB:parquet 57978622 5.65385e+07 1.02547 ns
tpch_q05/DuckDB:parquet 71856201 6.88848e+07 1.04314 ns
tpch_q06/DuckDB:parquet 24743609 2.16564e+07 1.14255 ns
tpch_q07/DuckDB:parquet 78098451 7.58803e+07 1.02923 ns
tpch_q08/DuckDB:parquet 90330872 9.05039e+07 0.998089 ns
tpch_q09/DuckDB:parquet 138657725 1.42072e+08 0.975967 ns
tpch_q10/DuckDB:parquet 126410334 1.28067e+08 0.987064 ns
tpch_q11/DuckDB:parquet 24062039 2.36903e+07 1.01569 ns
tpch_q12/DuckDB:parquet 56787785 5.77699e+07 0.982999 ns
tpch_q13/DuckDB:parquet 244839603 2.40121e+08 1.01965 ns
tpch_q14/DuckDB:parquet 45294799 4.52012e+07 1.00207 ns
tpch_q15/DuckDB:parquet 26868128 2.63021e+07 1.02152 ns
tpch_q16/DuckDB:parquet 48917764 4.90633e+07 0.997033 ns
tpch_q17/DuckDB:parquet 57835691 5.32377e+07 1.08637 ns
tpch_q18/DuckDB:parquet 115169281 1.16969e+08 0.984612 ns
tpch_q19/DuckDB:parquet 69846134 6.91608e+07 1.00991 ns
tpch_q20/DuckDB:parquet 60791192 7.19449e+07 0.844969 ns
tpch_q21/DuckDB:parquet 179893540 1.64266e+08 1.09514 ns
tpch_q22/DuckDB:parquet 52047132 5.14588e+07 1.01143 ns
tpch_q01/DuckDB:vortex-file-compressed 31928391 3.29515e+07 0.968952 ns
tpch_q02/DuckDB:vortex-file-compressed 20720862 2.09289e+07 0.990058 ns
tpch_q03/DuckDB:vortex-file-compressed 25318387 2.53138e+07 1.00018 ns
tpch_q04/DuckDB:vortex-file-compressed 26037246 2.58774e+07 1.00618 ns
tpch_q05/DuckDB:vortex-file-compressed 32860190 3.32382e+07 0.988626 ns
tpch_q06/DuckDB:vortex-file-compressed 7111486 7.49874e+06 0.948357 ns
tpch_q07/DuckDB:vortex-file-compressed 29237367 2.93856e+07 0.994954 ns
tpch_q08/DuckDB:vortex-file-compressed 39278458 3.88652e+07 1.01063 ns
tpch_q09/DuckDB:vortex-file-compressed 57404527 5.5591e+07 1.03262 ns
tpch_q10/DuckDB:vortex-file-compressed 35491077 3.38219e+07 1.04935 ns
tpch_q11/DuckDB:vortex-file-compressed 12177843 1.24954e+07 0.974583 ns
tpch_q12/DuckDB:vortex-file-compressed 27080196 2.40041e+07 1.12815 ns
tpch_q13/DuckDB:vortex-file-compressed 36571188 3.65372e+07 1.00093 ns
tpch_q14/DuckDB:vortex-file-compressed 17182150 1.76281e+07 0.974701 ns
tpch_q15/DuckDB:vortex-file-compressed 10825637 1.099e+07 0.985044 ns
tpch_q16/DuckDB:vortex-file-compressed 21860912 2.19393e+07 0.996428 ns
tpch_q17/DuckDB:vortex-file-compressed 58338229 5.9577e+07 0.979207 ns
tpch_q18/DuckDB:vortex-file-compressed 45301669 4.60985e+07 0.982715 ns
tpch_q19/DuckDB:vortex-file-compressed 20232624 2.02694e+07 0.998186 ns
tpch_q20/DuckDB:vortex-file-compressed 24302997 2.47833e+07 0.980619 ns
tpch_q21/DuckDB:vortex-file-compressed 109211286 1.03109e+08 1.05918 ns
tpch_q22/DuckDB:vortex-file-compressed 16950405 1.7466e+07 0.970481 ns
tpch_q01/DuckDB:duckdb 14392035 1.42593e+07 1.00931 ns
tpch_q02/DuckDB:duckdb 10675651 9.91825e+06 1.07636 ns
tpch_q03/DuckDB:duckdb 14857872 1.52652e+07 0.973316 ns
tpch_q04/DuckDB:duckdb 16624436 1.62688e+07 1.02186 ns
tpch_q05/DuckDB:duckdb 16601332 1.62246e+07 1.02322 ns
tpch_q06/DuckDB:duckdb 3457877 3.45951e+06 0.999527 ns
tpch_q07/DuckDB:duckdb 19038047 1.89302e+07 1.0057 ns
tpch_q08/DuckDB:duckdb 18441163 1.83534e+07 1.00478 ns
tpch_q09/DuckDB:duckdb 49478489 5.40014e+07 0.916244 ns
tpch_q10/DuckDB:duckdb 45185608 4.11525e+07 1.098 ns
tpch_q11/DuckDB:duckdb 6827171 7.02278e+06 0.972147 ns
tpch_q12/DuckDB:duckdb 12885245 1.28332e+07 1.00405 ns
tpch_q13/DuckDB:duckdb 46377776 4.32454e+07 1.07243 ns
tpch_q14/DuckDB:duckdb 12381777 1.28897e+07 0.960598 ns
tpch_q15/DuckDB:duckdb 7827812 7.63501e+06 1.02525 ns
tpch_q16/DuckDB:duckdb 19742850 2.14227e+07 0.921584 ns
tpch_q17/DuckDB:duckdb 14504337 1.47718e+07 0.981895 ns
tpch_q18/DuckDB:duckdb 35268641 3.4905e+07 1.01042 ns
tpch_q19/DuckDB:duckdb 22348724 2.15541e+07 1.03686 ns
tpch_q20/DuckDB:duckdb 17411738 1.69054e+07 1.02995 ns
tpch_q21/DuckDB:duckdb 51441180 5.17755e+07 0.993542 ns
tpch_q22/DuckDB:duckdb 23851414 2.39264e+07 0.996866 ns

@github-actions
Copy link
Contributor

github-actions bot commented Aug 18, 2025

Benchmarks: TPC-H SF=1 on S3

Table of Results
name PR cdc94ae base 7eb8ac9 ratio (PR/base) unit
tpch_q01/DataFusion:parquet 377528228 3.75437e+08 1.00557 ns
tpch_q02/DataFusion:parquet 746387488 7.71282e+08 0.967723 ns
tpch_q03/DataFusion:parquet 613259285 5.60809e+08 1.09353 ns
tpch_q04/DataFusion:parquet 379484283 2.97193e+08 1.2769 ns
tpch_q05/DataFusion:parquet 780242340 7.00747e+08 1.11344 ns
tpch_q06/DataFusion:parquet 288407128 2.62611e+08 1.09823 ns
tpch_q07/DataFusion:parquet 733595414 7.25982e+08 1.01049 ns
tpch_q08/DataFusion:parquet 870173367 7.98733e+08 1.08944 ns
tpch_q09/DataFusion:parquet 682038207 6.99731e+08 0.974715 ns
tpch_q10/DataFusion:parquet 759860796 7.34031e+08 1.03519 ns
tpch_q11/DataFusion:parquet 547581865 5.36918e+08 1.01986 ns
tpch_q12/DataFusion:parquet 427023371 4.3744e+08 0.976187 ns
tpch_q13/DataFusion:parquet 491203389 4.898e+08 1.00287 ns
tpch_q14/DataFusion:parquet 318538616 3.31681e+08 0.960375 ns
tpch_q15/DataFusion:parquet 653786261 5.59321e+08 1.16889 ns
tpch_q16/DataFusion:parquet 358633870 3.42764e+08 1.0463 ns
tpch_q17/DataFusion:parquet 552256987 5.58398e+08 0.989003 ns
tpch_q18/DataFusion:parquet 677641674 6.79563e+08 0.997173 ns
tpch_q19/DataFusion:parquet 435103265 4.47168e+08 0.97302 ns
tpch_q20/DataFusion:parquet 557969453 5.45399e+08 1.02305 ns
tpch_q21/DataFusion:parquet 842589940 8.21266e+08 1.02597 ns
tpch_q22/DataFusion:parquet 347706904 3.42048e+08 1.01654 ns
tpch_q01/DataFusion:vortex-file-compressed 159047672 1.65339e+08 0.96195 ns
tpch_q02/DataFusion:vortex-file-compressed 141049493 1.53559e+08 0.918537 ns
tpch_q03/DataFusion:vortex-file-compressed 237804176 2.46771e+08 0.963664 ns
tpch_q04/DataFusion:vortex-file-compressed 166028448 1.7344e+08 0.95727 ns
tpch_q05/DataFusion:vortex-file-compressed 223446774 2.44445e+08 0.914099 ns
tpch_q06/DataFusion:vortex-file-compressed 178336458 1.76207e+08 1.01208 ns
tpch_q07/DataFusion:vortex-file-compressed 218307901 2.25615e+08 0.967614 ns
tpch_q08/DataFusion:vortex-file-compressed 278032147 3.00357e+08 0.925674 ns
tpch_q09/DataFusion:vortex-file-compressed 247193122 2.67035e+08 0.925694 ns
tpch_q10/DataFusion:vortex-file-compressed 241589469 2.61852e+08 0.92262 ns
tpch_q11/DataFusion:vortex-file-compressed 134169673 1.17028e+08 1.14647 ns
tpch_q12/DataFusion:vortex-file-compressed 198926446 1.79776e+08 1.10652 ns
tpch_q13/DataFusion:vortex-file-compressed 127321055 1.27037e+08 1.00224 ns
tpch_q14/DataFusion:vortex-file-compressed 144807649 1.32524e+08 1.09269 ns
tpch_q15/DataFusion:vortex-file-compressed 208418840 2.0442e+08 1.01956 ns
tpch_q16/DataFusion:vortex-file-compressed 103006243 1.07669e+08 0.956698 ns
tpch_q17/DataFusion:vortex-file-compressed 224161149 2.32467e+08 0.964273 ns
tpch_q18/DataFusion:vortex-file-compressed 282730780 2.7458e+08 1.02968 ns
tpch_q19/DataFusion:vortex-file-compressed 178210172 1.83935e+08 0.968875 ns
tpch_q20/DataFusion:vortex-file-compressed 201523016 2.14396e+08 0.939956 ns
tpch_q21/DataFusion:vortex-file-compressed 380282705 3.85029e+08 0.987672 ns
tpch_q22/DataFusion:vortex-file-compressed 100131471 1.09971e+08 0.91053 ns
tpch_q01/DuckDB:parquet 141819471 1.40214e+08 1.01145 ns
tpch_q02/DuckDB:parquet 353679010 3.61102e+08 0.979444 ns
tpch_q03/DuckDB:parquet 190605406 1.97217e+08 0.966475 ns
tpch_q04/DuckDB:parquet 120603931 1.46799e+08 0.821561 ns
tpch_q05/DuckDB:parquet 278050156 2.72388e+08 1.02079 ns
tpch_q06/DuckDB:parquet 64041935 3.97023e+07 1.61305 ns
tpch_q07/DuckDB:parquet 279616442 2.48428e+08 1.12554 ns
tpch_q08/DuckDB:parquet 350218277 3.74445e+08 0.935299 ns
tpch_q09/DuckDB:parquet 309310243 4.00104e+08 0.773074 ns
tpch_q10/DuckDB:parquet 238640724 2.96208e+08 0.805653 ns
tpch_q11/DuckDB:parquet 240101969 2.0012e+08 1.19979 ns
tpch_q12/DuckDB:parquet 105490481 1.1901e+08 0.886404 ns
tpch_q13/DuckDB:parquet 322224763 3.24188e+08 0.993943 ns
tpch_q14/DuckDB:parquet 117976148 1.34982e+08 0.874016 ns
tpch_q15/DuckDB:parquet 84909428 9.35575e+07 0.907564 ns
tpch_q16/DuckDB:parquet 146227427 1.35905e+08 1.07595 ns
tpch_q17/DuckDB:parquet 197175509 1.63571e+08 1.20544 ns
tpch_q18/DuckDB:parquet 266942347 2.18602e+08 1.22113 ns
tpch_q19/DuckDB:parquet 129518169 1.38476e+08 0.935314 ns
tpch_q20/DuckDB:parquet 251565241 2.18157e+08 1.15314 ns
tpch_q21/DuckDB:parquet 295686673 3.7882e+08 0.780546 ns
tpch_q22/DuckDB:parquet 128550653 1.51734e+08 0.847213 ns
tpch_q01/DuckDB:vortex-file-compressed 242808516 2.39997e+08 1.01171 ns
tpch_q02/DuckDB:vortex-file-compressed 284915230 2.76456e+08 1.0306 ns
tpch_q03/DuckDB:vortex-file-compressed 416774383 4.06333e+08 1.0257 ns
tpch_q04/DuckDB:vortex-file-compressed 176650103 1.77879e+08 0.993091 ns
tpch_q05/DuckDB:vortex-file-compressed 338369245 3.24227e+08 1.04362 ns
tpch_q06/DuckDB:vortex-file-compressed 215333044 2.16606e+08 0.994124 ns
tpch_q07/DuckDB:vortex-file-compressed 406395185 4.06607e+08 0.999479 ns
tpch_q08/DuckDB:vortex-file-compressed 465381446 5.1785e+08 0.89868 ns
tpch_q09/DuckDB:vortex-file-compressed 408381489 4.25776e+08 0.959146 ns
tpch_q10/DuckDB:vortex-file-compressed 277142148 4.14901e+08 0.667972 ns
tpch_q11/DuckDB:vortex-file-compressed 210875123 2.12928e+08 0.990358 ns
tpch_q12/DuckDB:vortex-file-compressed 292018228 2.95991e+08 0.986577 ns
tpch_q13/DuckDB:vortex-file-compressed 251473040 2.51778e+08 0.998788 ns
tpch_q14/DuckDB:vortex-file-compressed 197390002 2.03654e+08 0.969242 ns
tpch_q15/DuckDB:vortex-file-compressed 177252830 1.55315e+08 1.14125 ns
tpch_q16/DuckDB:vortex-file-compressed 147932752 1.34235e+08 1.10205 ns
tpch_q17/DuckDB:vortex-file-compressed 283519722 3.22163e+08 0.880052 ns
tpch_q18/DuckDB:vortex-file-compressed 365163686 3.24318e+08 1.12594 ns
tpch_q19/DuckDB:vortex-file-compressed 280762575 2.85436e+08 0.983628 ns
tpch_q20/DuckDB:vortex-file-compressed 335713551 3.64318e+08 0.921485 ns
tpch_q21/DuckDB:vortex-file-compressed 559354657 5.72444e+08 0.977133 ns
tpch_q22/DuckDB:vortex-file-compressed 152930163 1.50924e+08 1.01329 ns

@codspeed-hq
Copy link

codspeed-hq bot commented Aug 18, 2025

CodSpeed Performance Report

Merging #4177 will improve performances by 37.72%

Comparing aduffy/slice-no-err (590c65d) with develop (431a8f2)

Summary

⚡ 26 improvements
✅ 865 untouched benchmarks

Benchmarks breakdown

Benchmark BASE HEAD Change
old_alp_prim_test_between[f32, 16384] 168.4 µs 151.9 µs +10.85%
old_alp_prim_test_between[f32, 32768] 332.3 µs 286 µs +16.18%
old_alp_prim_test_between[f64, 16384] 208.4 µs 174.6 µs +19.37%
old_alp_prim_test_between[f64, 32768] 321.1 µs 255.2 µs +25.79%
new_bp_prim_test_between[i16, 16384] 75.6 µs 67.8 µs +11.44%
new_bp_prim_test_between[i16, 32768] 119.6 µs 105.2 µs +13.69%
new_bp_prim_test_between[i32, 16384] 93.1 µs 77.7 µs +19.84%
new_bp_prim_test_between[i32, 32768] 153.8 µs 124.2 µs +23.85%
new_bp_prim_test_between[i64, 16384] 124.8 µs 94.6 µs +31.93%
new_bp_prim_test_between[i64, 2048] 43 µs 38.4 µs +11.93%
new_bp_prim_test_between[i64, 32768] 216.7 µs 157.4 µs +37.72%
old_bp_prim_test_between[i32, 16384] 151.1 µs 136.3 µs +10.89%
old_bp_prim_test_between[i32, 32768] 222.8 µs 191.1 µs +16.59%
old_bp_prim_test_between[i64, 16384] 191.5 µs 157 µs +22%
old_bp_prim_test_between[i64, 32768] 299.8 µs 232.6 µs +28.88%
new_raw_prim_test_between[i32, 2048] 30.1 µs 23.8 µs +26.76%
filter_runend[(1000, 16, 0.005)] 30.9 µs 25.4 µs +22.02%
filter_runend[(1000, 16, 0.01)] 29.8 µs 24.2 µs +23.21%
filter_runend[(1000, 16, 0.03)] 33.4 µs 25.3 µs +32.05%
filter_runend[(1000, 256, 0.005)] 26.9 µs 21.3 µs +26.47%
... ... ... ... ...

ℹ️ Only the first 20 benchmarks are displayed. Go to the app to view all benchmarks.

@github-actions
Copy link
Contributor

github-actions bot commented Aug 18, 2025

Benchmarks: Clickbench on NVME

Table of Results
name PR cdc94ae base 7eb8ac9 ratio (PR/base) unit
clickbench_q00/DataFusion:parquet 1641613 1.63401e+06 1.00465 ns
clickbench_q01/DataFusion:parquet 28438395 2.80581e+07 1.01355 ns
clickbench_q02/DataFusion:parquet 62788405 6.25347e+07 1.00406 ns
clickbench_q03/DataFusion:parquet 57072866 5.72549e+07 0.99682 ns
clickbench_q04/DataFusion:parquet 361532964 3.61894e+08 0.999002 ns
clickbench_q05/DataFusion:parquet 372017965 3.688e+08 1.00873 ns
clickbench_q06/DataFusion:parquet 1687243 1.65861e+06 1.01726 ns
clickbench_q07/DataFusion:parquet 33634087 3.33374e+07 1.0089 ns
clickbench_q08/DataFusion:parquet 438776854 4.47226e+08 0.981108 ns
clickbench_q09/DataFusion:parquet 674551382 6.53055e+08 1.03292 ns
clickbench_q10/DataFusion:parquet 150086109 1.4934e+08 1.005 ns
clickbench_q11/DataFusion:parquet 175596044 1.72261e+08 1.01936 ns
clickbench_q12/DataFusion:parquet 399479275 3.94268e+08 1.01322 ns
clickbench_q13/DataFusion:parquet 552217381 5.58979e+08 0.987904 ns
clickbench_q14/DataFusion:parquet 381854913 3.83577e+08 0.995511 ns
clickbench_q15/DataFusion:parquet 414659742 4.1265e+08 1.00487 ns
clickbench_q16/DataFusion:parquet 771397354 7.70054e+08 1.00174 ns
clickbench_q17/DataFusion:parquet 769574801 7.54486e+08 1.02 ns
clickbench_q18/DataFusion:parquet 1475645476 1.38161e+09 1.06807 ns
clickbench_q19/DataFusion:parquet 44789909 4.4128e+07 1.015 ns
clickbench_q20/DataFusion:parquet 639448808 6.22667e+08 1.02695 ns
clickbench_q21/DataFusion:parquet 723867773 7.14594e+08 1.01298 ns
clickbench_q22/DataFusion:parquet 1048392048 1.04438e+09 1.00384 ns
clickbench_q23/DataFusion:parquet 4713087415 4.72028e+09 0.998477 ns
clickbench_q24/DataFusion:parquet 239850105 2.377e+08 1.00904 ns
clickbench_q25/DataFusion:parquet 168963993 1.74274e+08 0.969531 ns
clickbench_q26/DataFusion:parquet 236246202 2.4046e+08 0.982474 ns
clickbench_q27/DataFusion:parquet 1024626446 1.04935e+09 0.97644 ns
clickbench_q28/DataFusion:parquet 5630168364 5.56782e+09 1.0112 ns
clickbench_q29/DataFusion:parquet 241692549 2.43e+08 0.99462 ns
clickbench_q30/DataFusion:parquet 371962090 3.76389e+08 0.98824 ns
clickbench_q31/DataFusion:parquet 419897966 4.19536e+08 1.00086 ns
clickbench_q32/DataFusion:parquet 1320985365 1.25483e+09 1.05272 ns
clickbench_q33/DataFusion:parquet 1605809074 1.57866e+09 1.0172 ns
clickbench_q34/DataFusion:parquet 1581818571 1.59386e+09 0.992443 ns
clickbench_q35/DataFusion:parquet 591654710 5.83829e+08 1.0134 ns
clickbench_q36/DataFusion:parquet 166137138 1.56865e+08 1.05911 ns
clickbench_q37/DataFusion:parquet 66049231 6.35019e+07 1.04011 ns
clickbench_q38/DataFusion:parquet 98335497 9.33891e+07 1.05297 ns
clickbench_q39/DataFusion:parquet 322883122 3.09962e+08 1.04168 ns
clickbench_q40/DataFusion:parquet 38487630 3.74186e+07 1.02857 ns
clickbench_q41/DataFusion:parquet 36284845 3.40222e+07 1.06651 ns
clickbench_q42/DataFusion:parquet 51124419 5.04412e+07 1.01354 ns
clickbench_q00/DataFusion:vortex-file-compressed 1738965 1.76122e+06 0.987366 ns
clickbench_q01/DataFusion:vortex-file-compressed 8883514 9.69246e+06 0.916539 ns
clickbench_q02/DataFusion:vortex-file-compressed 28473901 2.80922e+07 1.01359 ns
clickbench_q03/DataFusion:vortex-file-compressed 34554811 3.44201e+07 1.00391 ns
clickbench_q04/DataFusion:vortex-file-compressed 309126720 3.03781e+08 1.0176 ns
clickbench_q05/DataFusion:vortex-file-compressed 323540599 3.26107e+08 0.992132 ns
clickbench_q06/DataFusion:vortex-file-compressed 1734107 1.72074e+06 1.00777 ns
clickbench_q07/DataFusion:vortex-file-compressed 14296750 1.46381e+07 0.97668 ns
clickbench_q08/DataFusion:vortex-file-compressed 377507270 3.70711e+08 1.01833 ns
clickbench_q09/DataFusion:vortex-file-compressed 538315896 5.4381e+08 0.989896 ns
clickbench_q10/DataFusion:vortex-file-compressed 67153541 6.79567e+07 0.988182 ns
clickbench_q11/DataFusion:vortex-file-compressed 79698350 8.10178e+07 0.983714 ns
clickbench_q12/DataFusion:vortex-file-compressed 277625924 2.69084e+08 1.03174 ns
clickbench_q13/DataFusion:vortex-file-compressed 448412633 4.50554e+08 0.995248 ns
clickbench_q14/DataFusion:vortex-file-compressed 264017189 2.56184e+08 1.03058 ns
clickbench_q15/DataFusion:vortex-file-compressed 357567901 3.58843e+08 0.996447 ns
clickbench_q16/DataFusion:vortex-file-compressed 764415058 7.62291e+08 1.00279 ns
clickbench_q17/DataFusion:vortex-file-compressed 749369512 7.49029e+08 1.00045 ns
clickbench_q18/DataFusion:vortex-file-compressed 1376875974 1.37124e+09 1.00411 ns
clickbench_q19/DataFusion:vortex-file-compressed 17514899 1.74022e+07 1.00648 ns
clickbench_q20/DataFusion:vortex-file-compressed 276011860 2.78335e+08 0.991655 ns
clickbench_q21/DataFusion:vortex-file-compressed 337207342 3.34601e+08 1.00779 ns
clickbench_q22/DataFusion:vortex-file-compressed 651285180 6.74209e+08 0.965999 ns
clickbench_q23/DataFusion:vortex-file-compressed 2009256779 2.03478e+09 0.987458 ns
clickbench_q24/DataFusion:vortex-file-compressed 115082952 1.17852e+08 0.9765 ns
clickbench_q25/DataFusion:vortex-file-compressed 64189811 6.29864e+07 1.01911 ns
clickbench_q26/DataFusion:vortex-file-compressed 112925613 1.16955e+08 0.965551 ns
clickbench_q27/DataFusion:vortex-file-compressed 777186885 7.64764e+08 1.01624 ns
clickbench_q28/DataFusion:vortex-file-compressed 6598908254 6.74379e+09 0.978517 ns
clickbench_q29/DataFusion:vortex-file-compressed 241726323 2.35678e+08 1.02566 ns
clickbench_q30/DataFusion:vortex-file-compressed 242054291 2.40776e+08 1.00531 ns
clickbench_q31/DataFusion:vortex-file-compressed 275898221 2.75955e+08 0.999796 ns
clickbench_q32/DataFusion:vortex-file-compressed 1399399279 1.33385e+09 1.04914 ns
clickbench_q33/DataFusion:vortex-file-compressed 1389645735 1.42409e+09 0.975814 ns
clickbench_q34/DataFusion:vortex-file-compressed 1390086480 1.41146e+09 0.984855 ns
clickbench_q35/DataFusion:vortex-file-compressed 523521945 5.30674e+08 0.986522 ns
clickbench_q36/DataFusion:vortex-file-compressed 101794882 8.96718e+07 1.13519 ns
clickbench_q37/DataFusion:vortex-file-compressed 47528645 5.08086e+07 0.935445 ns
clickbench_q38/DataFusion:vortex-file-compressed 34971366 3.51456e+07 0.995042 ns
clickbench_q39/DataFusion:vortex-file-compressed 186743496 1.85844e+08 1.00484 ns
clickbench_q40/DataFusion:vortex-file-compressed 21130255 2.10596e+07 1.00335 ns
clickbench_q41/DataFusion:vortex-file-compressed 21443142 2.00434e+07 1.06984 ns
clickbench_q42/DataFusion:vortex-file-compressed 35751849 3.47637e+07 1.02843 ns
clickbench_q00/DuckDB:parquet 132874076 1.30707e+08 1.01658 ns
clickbench_q01/DuckDB:parquet 55714540 5.59997e+07 0.994908 ns
clickbench_q02/DuckDB:parquet 70533390 7.09071e+07 0.99473 ns
clickbench_q03/DuckDB:parquet 68740512 7.00025e+07 0.981972 ns
clickbench_q04/DuckDB:parquet 214576914 2.15883e+08 0.993951 ns
clickbench_q05/DuckDB:parquet 238876375 2.40211e+08 0.994442 ns
clickbench_q06/DuckDB:parquet 74225737 7.56501e+07 0.981171 ns
clickbench_q07/DuckDB:parquet 66063045 6.46649e+07 1.02162 ns
clickbench_q08/DuckDB:parquet 279892338 2.82389e+08 0.991159 ns
clickbench_q09/DuckDB:parquet 411574120 4.13957e+08 0.994243 ns
clickbench_q10/DuckDB:parquet 113277051 1.12101e+08 1.0105 ns
clickbench_q11/DuckDB:parquet 124919923 1.24613e+08 1.00246 ns
clickbench_q12/DuckDB:parquet 254915204 2.52929e+08 1.00785 ns
clickbench_q13/DuckDB:parquet 418298377 4.23751e+08 0.987133 ns
clickbench_q14/DuckDB:parquet 286425281 2.91278e+08 0.983342 ns
clickbench_q15/DuckDB:parquet 245873264 2.45795e+08 1.00032 ns
clickbench_q16/DuckDB:parquet 577962511 5.7705e+08 1.00158 ns
clickbench_q17/DuckDB:parquet 496585023 5.02343e+08 0.988538 ns
clickbench_q18/DuckDB:parquet 967282816 9.79366e+08 0.987662 ns
clickbench_q19/DuckDB:parquet 65094802 6.6127e+07 0.98439 ns
clickbench_q20/DuckDB:parquet 391257438 3.80011e+08 1.02959 ns
clickbench_q21/DuckDB:parquet 506343922 5.0308e+08 1.00649 ns
clickbench_q22/DuckDB:parquet 879436290 8.69662e+08 1.01124 ns
clickbench_q23/DuckDB:parquet 284075334 2.81113e+08 1.01054 ns
clickbench_q24/DuckDB:parquet 107432868 1.06765e+08 1.00625 ns
clickbench_q25/DuckDB:parquet 142514478 1.42489e+08 1.00018 ns
clickbench_q26/DuckDB:parquet 63104000 6.42762e+07 0.981764 ns
clickbench_q27/DuckDB:parquet 636862706 6.37272e+08 0.999357 ns
clickbench_q28/DuckDB:parquet 5734150477 5.73137e+09 1.00049 ns
clickbench_q29/DuckDB:parquet 77457869 7.97896e+07 0.970777 ns
clickbench_q30/DuckDB:parquet 294972286 2.97914e+08 0.990126 ns
clickbench_q31/DuckDB:parquet 341720228 3.36198e+08 1.01643 ns
clickbench_q32/DuckDB:parquet 1019916103 1.03165e+09 0.988624 ns
clickbench_q33/DuckDB:parquet 1066037088 1.0734e+09 0.993143 ns
clickbench_q34/DuckDB:parquet 1118167506 1.13151e+09 0.988205 ns
clickbench_q35/DuckDB:parquet 372979192 3.81737e+08 0.977057 ns
clickbench_q36/DuckDB:parquet 65482157 6.59614e+07 0.992734 ns
clickbench_q37/DuckDB:parquet 57573663 5.6925e+07 1.0114 ns
clickbench_q38/DuckDB:parquet 67546246 6.42744e+07 1.0509 ns
clickbench_q39/DuckDB:parquet 102880738 9.77187e+07 1.05283 ns
clickbench_q40/DuckDB:parquet 67027348 6.43845e+07 1.04105 ns
clickbench_q41/DuckDB:parquet 72653428 7.59613e+07 0.956453 ns
clickbench_q42/DuckDB:parquet 54343355 5.43545e+07 0.999794 ns
clickbench_q00/DuckDB:vortex-file-compressed 3678577 3.51063e+06 1.04784 ns
clickbench_q01/DuckDB:vortex-file-compressed 8380735 8.77196e+06 0.955401 ns
clickbench_q02/DuckDB:vortex-file-compressed 25308170 2.53544e+07 0.998177 ns
clickbench_q03/DuckDB:vortex-file-compressed 30887023 3.14077e+07 0.983423 ns
clickbench_q04/DuckDB:vortex-file-compressed 207573982 2.08591e+08 0.995123 ns
clickbench_q05/DuckDB:vortex-file-compressed 154274504 1.54533e+08 0.998327 ns
clickbench_q06/DuckDB:vortex-file-compressed 30185750 2.94881e+07 1.02366 ns
clickbench_q07/DuckDB:vortex-file-compressed 15035608 1.41103e+07 1.06557 ns
clickbench_q08/DuckDB:vortex-file-compressed 273851071 2.74035e+08 0.999328 ns
clickbench_q09/DuckDB:vortex-file-compressed 395555725 3.89275e+08 1.01613 ns
clickbench_q10/DuckDB:vortex-file-compressed 69886444 6.86674e+07 1.01775 ns
clickbench_q11/DuckDB:vortex-file-compressed 80097967 7.8213e+07 1.0241 ns
clickbench_q12/DuckDB:vortex-file-compressed 167338270 1.6752e+08 0.998916 ns
clickbench_q13/DuckDB:vortex-file-compressed 342809349 3.46414e+08 0.989595 ns
clickbench_q14/DuckDB:vortex-file-compressed 206932959 2.0294e+08 1.01968 ns
clickbench_q15/DuckDB:vortex-file-compressed 252736943 2.34869e+08 1.07608 ns
clickbench_q16/DuckDB:vortex-file-compressed 512149866 5.10928e+08 1.00239 ns
clickbench_q17/DuckDB:vortex-file-compressed 436644907 4.34695e+08 1.00449 ns
clickbench_q18/DuckDB:vortex-file-compressed 895606780 8.94513e+08 1.00122 ns
clickbench_q19/DuckDB:vortex-file-compressed 17356079 1.66879e+07 1.04004 ns
clickbench_q20/DuckDB:vortex-file-compressed 272335463 2.7057e+08 1.00653 ns
clickbench_q21/DuckDB:vortex-file-compressed 339296807 3.27016e+08 1.03756 ns
clickbench_q22/DuckDB:vortex-file-compressed 548449309 5.38678e+08 1.01814 ns
clickbench_q23/DuckDB:vortex-file-compressed 150941004 1.28166e+08 1.1777 ns
clickbench_q24/DuckDB:vortex-file-compressed 20153763 1.90523e+07 1.05781 ns
clickbench_q25/DuckDB:vortex-file-compressed 54207478 5.46695e+07 0.99155 ns
clickbench_q26/DuckDB:vortex-file-compressed 19339874 1.85202e+07 1.04426 ns
clickbench_q27/DuckDB:vortex-file-compressed 498362140 4.9765e+08 1.00143 ns
clickbench_q28/DuckDB:vortex-file-compressed 5542619071 5.57148e+09 0.99482 ns
clickbench_q29/DuckDB:vortex-file-compressed 27963290 2.73544e+07 1.02226 ns
clickbench_q30/DuckDB:vortex-file-compressed 171291471 1.72197e+08 0.99474 ns
clickbench_q31/DuckDB:vortex-file-compressed 239586121 2.35675e+08 1.0166 ns
clickbench_q32/DuckDB:vortex-file-compressed 1042709009 1.02836e+09 1.01395 ns
clickbench_q33/DuckDB:vortex-file-compressed 909693213 9.1945e+08 0.989388 ns
clickbench_q34/DuckDB:vortex-file-compressed 1009326071 1.02504e+09 0.984667 ns
clickbench_q35/DuckDB:vortex-file-compressed 374131731 3.80599e+08 0.983007 ns
clickbench_q36/DuckDB:vortex-file-compressed 18340030 1.93329e+07 0.948643 ns
clickbench_q37/DuckDB:vortex-file-compressed 11166685 1.05058e+07 1.06291 ns
clickbench_q38/DuckDB:vortex-file-compressed 12598746 1.2246e+07 1.02881 ns
clickbench_q39/DuckDB:vortex-file-compressed 35066736 3.5013e+07 1.00153 ns
clickbench_q40/DuckDB:vortex-file-compressed 8736213 9.36672e+06 0.932686 ns
clickbench_q41/DuckDB:vortex-file-compressed 9937229 9.94492e+06 0.999226 ns
clickbench_q42/DuckDB:vortex-file-compressed 13184314 1.4026e+07 0.939991 ns
clickbench_q00/DuckDB:duckdb 16135496 1.42298e+07 1.13393 ns
clickbench_q01/DuckDB:duckdb 5020464 5.13702e+06 0.977311 ns
clickbench_q02/DuckDB:duckdb 15439143 1.43936e+07 1.07264 ns
clickbench_q03/DuckDB:duckdb 19714886 1.92866e+07 1.02221 ns
clickbench_q04/DuckDB:duckdb 197895893 2.14306e+08 0.923426 ns
clickbench_q05/DuckDB:duckdb 244195160 2.41866e+08 1.00963 ns
clickbench_q06/DuckDB:duckdb 13955230 1.34913e+07 1.03439 ns
clickbench_q07/DuckDB:duckdb 6227984 5.54649e+06 1.12287 ns
clickbench_q08/DuckDB:duckdb 253067692 2.52101e+08 1.00384 ns
clickbench_q09/DuckDB:duckdb 355326979 3.57684e+08 0.99341 ns
clickbench_q10/DuckDB:duckdb 78547908 7.71252e+07 1.01845 ns
clickbench_q11/DuckDB:duckdb 84378869 8.47952e+07 0.99509 ns
clickbench_q12/DuckDB:duckdb 204724580 2.0577e+08 0.994918 ns
clickbench_q13/DuckDB:duckdb 347324316 3.50815e+08 0.99005 ns
clickbench_q14/DuckDB:duckdb 218743194 2.17668e+08 1.00494 ns
clickbench_q15/DuckDB:duckdb 224888056 2.2523e+08 0.99848 ns
clickbench_q16/DuckDB:duckdb 507785638 5.0901e+08 0.997594 ns
clickbench_q17/DuckDB:duckdb 430050269 4.22548e+08 1.01775 ns
clickbench_q18/DuckDB:duckdb 846857817 8.48465e+08 0.998106 ns
clickbench_q19/DuckDB:duckdb 2427676 2.49269e+06 0.97392 ns
clickbench_q20/DuckDB:duckdb 305971245 3.04983e+08 1.00324 ns
clickbench_q21/DuckDB:duckdb 267043823 2.63695e+08 1.0127 ns
clickbench_q22/DuckDB:duckdb 383851845 3.92222e+08 0.97866 ns
clickbench_q23/DuckDB:duckdb 45441215 4.64391e+07 0.978513 ns
clickbench_q24/DuckDB:duckdb 15199359 1.48658e+07 1.02243 ns
clickbench_q25/DuckDB:duckdb 78816935 7.78847e+07 1.01197 ns
clickbench_q26/DuckDB:duckdb 13245638 1.33517e+07 0.992055 ns
clickbench_q27/DuckDB:duckdb 381795411 3.85474e+08 0.990457 ns
clickbench_q28/DuckDB:duckdb 5543234491 5.53516e+09 1.00146 ns
clickbench_q29/DuckDB:duckdb 21558096 2.14719e+07 1.00401 ns
clickbench_q30/DuckDB:duckdb 199067743 1.95749e+08 1.01695 ns
clickbench_q31/DuckDB:duckdb 238500255 2.36747e+08 1.00741 ns
clickbench_q32/DuckDB:duckdb 965052814 9.90762e+08 0.974051 ns
clickbench_q33/DuckDB:duckdb 853033577 8.69963e+08 0.98054 ns
clickbench_q34/DuckDB:duckdb 939943373 9.48343e+08 0.991143 ns
clickbench_q35/DuckDB:duckdb 301104090 3.04383e+08 0.989229 ns
clickbench_q36/DuckDB:duckdb 23600506 2.61998e+07 0.900789 ns
clickbench_q37/DuckDB:duckdb 5054861 5.34358e+06 0.945969 ns
clickbench_q38/DuckDB:duckdb 7168539 6.77473e+06 1.05813 ns
clickbench_q39/DuckDB:duckdb 45054496 5.08563e+07 0.885918 ns
clickbench_q40/DuckDB:duckdb 5356954 4.78086e+06 1.1205 ns
clickbench_q41/DuckDB:duckdb 4973658 4.33148e+06 1.14826 ns
clickbench_q42/DuckDB:duckdb 8519207 8.52223e+06 0.999645 ns

@github-actions
Copy link
Contributor

github-actions bot commented Aug 18, 2025

Benchmarks: TPC-DS SF=1 on NVME

Table of Results
name PR cdc94ae base 50a9fa6 ratio (PR/base) unit
tpcds_q01/DataFusion:parquet 30706569 3.08828e+07 0.994295 ns
tpcds_q02/DataFusion:parquet 47671054 4.91065e+07 0.970768 ns
tpcds_q03/DataFusion:parquet 12513136 1.24092e+07 1.00838 ns
tpcds_q04/DataFusion:parquet 357539092 3.5838e+08 0.997655 ns
tpcds_q05/DataFusion:parquet 42285608 4.12759e+07 1.02446 ns
tpcds_q06/DataFusion:parquet 54730875 5.70593e+07 0.959193 ns
tpcds_q07/DataFusion:parquet 71856601 7.19539e+07 0.998647 ns
tpcds_q08/DataFusion:parquet 62831970 6.3184e+07 0.994429 ns
tpcds_q09/DataFusion:parquet 61539614 6.18324e+07 0.995264 ns
tpcds_q10/DataFusion:parquet 69230171 6.80272e+07 1.01768 ns
tpcds_q11/DataFusion:parquet 212278164 2.17513e+08 0.975935 ns
tpcds_q12/DataFusion:parquet 22782646 2.25883e+07 1.00861 ns
tpcds_q13/DataFusion:parquet 64609591 6.42277e+07 1.00595 ns
tpcds_q14/DataFusion:parquet 207725273 2.12378e+08 0.978093 ns
tpcds_q15/DataFusion:parquet 35166749 3.52603e+07 0.997346 ns
tpcds_q16/DataFusion:parquet 28362923 3.01374e+07 0.941121 ns
tpcds_q17/DataFusion:parquet 54450630 5.55747e+07 0.979774 ns
tpcds_q18/DataFusion:parquet 76863288 7.82649e+07 0.982091 ns
tpcds_q19/DataFusion:parquet 21271148 2.07704e+07 1.02411 ns
tpcds_q20/DataFusion:parquet 24619418 2.45326e+07 1.00354 ns
tpcds_q21/DataFusion:parquet 33140268 3.31515e+07 0.999661 ns
tpcds_q22/DataFusion:parquet 68035650 6.79995e+07 1.00053 ns
tpcds_q23/DataFusion:parquet 202594460 2.01964e+08 1.00312 ns
tpcds_q24/DataFusion:parquet 85272762 8.80392e+07 0.968577 ns
tpcds_q25/DataFusion:parquet 59067779 5.97521e+07 0.988548 ns
tpcds_q26/DataFusion:parquet 63339018 6.59029e+07 0.961096 ns
tpcds_q27/DataFusion:parquet 137015488 1.3836e+08 0.99028 ns
tpcds_q28/DataFusion:parquet 50248672 5.09939e+07 0.985385 ns
tpcds_q29/DataFusion:parquet 55109153 5.44832e+07 1.01149 ns
tpcds_q30/DataFusion:parquet 37145490 3.80907e+07 0.975186 ns
tpcds_q31/DataFusion:parquet 66218943 6.56825e+07 1.00817 ns
tpcds_q32/DataFusion:parquet 18870917 1.79494e+07 1.05134 ns
tpcds_q33/DataFusion:parquet 27722973 2.88956e+07 0.95942 ns
tpcds_q34/DataFusion:parquet 23640788 2.32055e+07 1.01876 ns
tpcds_q35/DataFusion:parquet 75890505 7.52532e+07 1.00847 ns
tpcds_q36/DataFusion:parquet 70005814 7.12842e+07 0.982067 ns
tpcds_q37/DataFusion:parquet 25073241 2.4642e+07 1.0175 ns
tpcds_q38/DataFusion:parquet 46305647 4.78372e+07 0.967984 ns
tpcds_q39/DataFusion:parquet 131792093 1.33481e+08 0.987349 ns
tpcds_q40/DataFusion:parquet 32710580 3.35158e+07 0.975975 ns
tpcds_q41/DataFusion:parquet 12484891 1.21543e+07 1.0272 ns
tpcds_q42/DataFusion:parquet 12491907 1.2143e+07 1.02873 ns
tpcds_q43/DataFusion:parquet 19295214 1.97113e+07 0.978889 ns
tpcds_q44/DataFusion:parquet 40635744 4.10851e+07 0.989064 ns
tpcds_q45/DataFusion:parquet 33354534 3.27192e+07 1.01942 ns
tpcds_q46/DataFusion:parquet 37169174 3.74172e+07 0.993372 ns
tpcds_q47/DataFusion:parquet 184684068 1.83647e+08 1.00565 ns
tpcds_q48/DataFusion:parquet 60458842 5.91487e+07 1.02215 ns
tpcds_q49/DataFusion:parquet 60456114 6.11054e+07 0.989374 ns
tpcds_q50/DataFusion:parquet 42135456 4.06386e+07 1.03683 ns
tpcds_q51/DataFusion:parquet 101009369 1.06286e+08 0.950354 ns
tpcds_q52/DataFusion:parquet 12162859 1.23951e+07 0.981267 ns
tpcds_q53/DataFusion:parquet 19047243 1.9157e+07 0.994273 ns
tpcds_q54/DataFusion:parquet 34639272 3.49738e+07 0.990435 ns
tpcds_q55/DataFusion:parquet 12100560 1.30064e+07 0.930353 ns
tpcds_q56/DataFusion:parquet 28567223 2.87549e+07 0.993474 ns
tpcds_q57/DataFusion:parquet 111204510 1.13692e+08 0.978117 ns
tpcds_q58/DataFusion:parquet 83880054 8.39135e+07 0.999601 ns
tpcds_q59/DataFusion:parquet 67548135 6.96801e+07 0.969404 ns
tpcds_q60/DataFusion:parquet 28243691 2.97901e+07 0.948089 ns
tpcds_q61/DataFusion:parquet 43550020 4.34919e+07 1.00134 ns
tpcds_q62/DataFusion:parquet 30527984 3.07377e+07 0.993178 ns
tpcds_q63/DataFusion:parquet 19607199 1.93347e+07 1.01409 ns
tpcds_q64/DataFusion:parquet 322422706 3.21328e+08 1.00341 ns
tpcds_q65/DataFusion:parquet 41771578 4.32046e+07 0.966831 ns
tpcds_q66/DataFusion:parquet 76802395 8.4879e+07 0.904846 ns
tpcds_q67/DataFusion:parquet 121347048 1.2368e+08 0.981136 ns
tpcds_q68/DataFusion:parquet 37128080 3.64547e+07 1.01847 ns
tpcds_q69/DataFusion:parquet 66825644 6.52298e+07 1.02447 ns
tpcds_q70/DataFusion:parquet 116258265 1.21751e+08 0.954889 ns
tpcds_q71/DataFusion:parquet 23433748 2.46353e+07 0.951228 ns
tpcds_q72/DataFusion:parquet 5056129779 5.20301e+09 0.971771 ns
tpcds_q73/DataFusion:parquet 22025847 2.23934e+07 0.983588 ns
tpcds_q74/DataFusion:parquet 115690540 1.16276e+08 0.994962 ns
tpcds_q75/DataFusion:parquet 101573568 9.99904e+07 1.01583 ns
tpcds_q76/DataFusion:parquet 30817479 2.98476e+07 1.03249 ns
tpcds_q77/DataFusion:parquet 37251798 3.80351e+07 0.979405 ns
tpcds_q78/DataFusion:parquet 157879034 1.57245e+08 1.00403 ns
tpcds_q79/DataFusion:parquet 27191052 2.81628e+07 0.965496 ns
tpcds_q80/DataFusion:parquet 91855052 9.29413e+07 0.988312 ns
tpcds_q81/DataFusion:parquet 31743705 3.3641e+07 0.943602 ns
tpcds_q82/DataFusion:parquet 26692597 2.71669e+07 0.982542 ns
tpcds_q83/DataFusion:parquet 44883190 4.59881e+07 0.975973 ns
tpcds_q84/DataFusion:parquet 22666832 2.43679e+07 0.930191 ns
tpcds_q85/DataFusion:parquet 99688881 9.82043e+07 1.01512 ns
tpcds_q86/DataFusion:parquet 16161928 1.60602e+07 1.00633 ns
tpcds_q87/DataFusion:parquet 45765059 4.83313e+07 0.946903 ns
tpcds_q88/DataFusion:parquet 63184638 6.40989e+07 0.985737 ns
tpcds_q89/DataFusion:parquet 23419565 2.26641e+07 1.03333 ns
tpcds_q90/DataFusion:parquet 12934422 1.27336e+07 1.01577 ns
tpcds_q91/DataFusion:parquet 51321503 5.08168e+07 1.00993 ns
tpcds_q92/DataFusion:parquet 16251342 1.64886e+07 0.98561 ns
tpcds_q93/DataFusion:parquet 32791828 3.273e+07 1.00189 ns
tpcds_q94/DataFusion:parquet 23484535 2.15737e+07 1.08857 ns
tpcds_q95/DataFusion:parquet 61250348 6.06477e+07 1.00994 ns
tpcds_q96/DataFusion:parquet 10841403 1.1477e+07 0.94462 ns
tpcds_q97/DataFusion:parquet 33144706 3.37341e+07 0.982528 ns
tpcds_q98/DataFusion:parquet 27716302 2.80452e+07 0.988273 ns
tpcds_q99/DataFusion:parquet 45832127 4.4609e+07 1.02742 ns
tpcds_q01/DataFusion:vortex-file-compressed 16561893 1.76679e+07 0.9374 ns
tpcds_q02/DataFusion:vortex-file-compressed 46932095 4.7902e+07 0.979753 ns
tpcds_q03/DataFusion:vortex-file-compressed 12826363 1.2964e+07 0.98938 ns
tpcds_q04/DataFusion:vortex-file-compressed 496064693 4.98007e+08 0.996099 ns
tpcds_q05/DataFusion:vortex-file-compressed 38836858 3.79342e+07 1.02379 ns
tpcds_q06/DataFusion:vortex-file-compressed 55223100 5.62927e+07 0.981 ns
tpcds_q07/DataFusion:vortex-file-compressed 47628085 4.5793e+07 1.04007 ns
tpcds_q08/DataFusion:vortex-file-compressed 66632568 6.83394e+07 0.975025 ns
tpcds_q09/DataFusion:vortex-file-compressed 26388086 2.67162e+07 0.987718 ns
tpcds_q10/DataFusion:vortex-file-compressed 39804035 4.00299e+07 0.994358 ns
tpcds_q11/DataFusion:vortex-file-compressed 293179580 3.03087e+08 0.967311 ns
tpcds_q12/DataFusion:vortex-file-compressed 15882477 1.66004e+07 0.956753 ns
tpcds_q13/DataFusion:vortex-file-compressed 34456612 3.5266e+07 0.977048 ns
tpcds_q14/DataFusion:vortex-file-compressed 215690110 2.14793e+08 1.00418 ns
tpcds_q15/DataFusion:vortex-file-compressed 37651971 3.93083e+07 0.957863 ns
tpcds_q16/DataFusion:vortex-file-compressed 21045733 1.99811e+07 1.05328 ns
tpcds_q17/DataFusion:vortex-file-compressed 52856751 5.42473e+07 0.974366 ns
tpcds_q18/DataFusion:vortex-file-compressed 51027395 5.14434e+07 0.991913 ns
tpcds_q19/DataFusion:vortex-file-compressed 21581601 2.05472e+07 1.05034 ns
tpcds_q20/DataFusion:vortex-file-compressed 20492039 2.0652e+07 0.992255 ns
tpcds_q21/DataFusion:vortex-file-compressed 198025108 1.9328e+08 1.02455 ns
tpcds_q22/DataFusion:vortex-file-compressed 68609298 6.87371e+07 0.99814 ns
tpcds_q23/DataFusion:vortex-file-compressed 205375823 2.06214e+08 0.995935 ns
tpcds_q24/DataFusion:vortex-file-compressed 103146956 1.03685e+08 0.994814 ns
tpcds_q25/DataFusion:vortex-file-compressed 56173232 5.59961e+07 1.00316 ns
tpcds_q26/DataFusion:vortex-file-compressed 32412557 3.17469e+07 1.02097 ns
tpcds_q27/DataFusion:vortex-file-compressed 108330055 1.09614e+08 0.988284 ns
tpcds_q28/DataFusion:vortex-file-compressed 23412854 2.42088e+07 0.967121 ns
tpcds_q29/DataFusion:vortex-file-compressed 53258099 5.59358e+07 0.952129 ns
tpcds_q30/DataFusion:vortex-file-compressed 23806919 2.30517e+07 1.03276 ns
tpcds_q31/DataFusion:vortex-file-compressed 93955082 9.48478e+07 0.990588 ns
tpcds_q32/DataFusion:vortex-file-compressed 12315200 1.28641e+07 0.957333 ns
tpcds_q33/DataFusion:vortex-file-compressed 23316747 2.34504e+07 0.994302 ns
tpcds_q34/DataFusion:vortex-file-compressed 22252129 2.3579e+07 0.943727 ns
tpcds_q35/DataFusion:vortex-file-compressed 50341982 5.27283e+07 0.954743 ns
tpcds_q36/DataFusion:vortex-file-compressed 65875976 6.72145e+07 0.980086 ns
tpcds_q37/DataFusion:vortex-file-compressed 23461780 2.39444e+07 0.979846 ns
tpcds_q38/DataFusion:vortex-file-compressed 39660848 4.01059e+07 0.988903 ns
tpcds_q39/DataFusion:vortex-file-compressed 300932717 3.15186e+08 0.954777 ns
tpcds_q40/DataFusion:vortex-file-compressed 55989099 5.75479e+07 0.972912 ns
tpcds_q41/DataFusion:vortex-file-compressed 12447371 1.21275e+07 1.02638 ns
tpcds_q42/DataFusion:vortex-file-compressed 12645381 1.26978e+07 0.995874 ns
tpcds_q43/DataFusion:vortex-file-compressed 30977354 3.07923e+07 1.00601 ns
tpcds_q44/DataFusion:vortex-file-compressed 30994107 2.99428e+07 1.03511 ns
tpcds_q45/DataFusion:vortex-file-compressed 30743520 3.20034e+07 0.960634 ns
tpcds_q46/DataFusion:vortex-file-compressed 36309370 3.6976e+07 0.981971 ns
tpcds_q47/DataFusion:vortex-file-compressed 261552864 2.69829e+08 0.969327 ns
tpcds_q48/DataFusion:vortex-file-compressed 36937837 3.7117e+07 0.995174 ns
tpcds_q49/DataFusion:vortex-file-compressed 49075418 5.07345e+07 0.967298 ns
tpcds_q50/DataFusion:vortex-file-compressed 45917918 4.6717e+07 0.982896 ns
tpcds_q51/DataFusion:vortex-file-compressed 96084239 9.75912e+07 0.984558 ns
tpcds_q52/DataFusion:vortex-file-compressed 12743674 1.26978e+07 1.00361 ns
tpcds_q53/DataFusion:vortex-file-compressed 16292824 1.59936e+07 1.01871 ns
tpcds_q54/DataFusion:vortex-file-compressed 30541482 3.19382e+07 0.956267 ns
tpcds_q55/DataFusion:vortex-file-compressed 11949822 1.18042e+07 1.01233 ns
tpcds_q56/DataFusion:vortex-file-compressed 25998753 2.60035e+07 0.999817 ns
tpcds_q57/DataFusion:vortex-file-compressed 183726826 1.85772e+08 0.988992 ns
tpcds_q58/DataFusion:vortex-file-compressed 93836683 9.51927e+07 0.985755 ns
tpcds_q59/DataFusion:vortex-file-compressed 70980020 7.39853e+07 0.95938 ns
tpcds_q60/DataFusion:vortex-file-compressed 24796366 2.66936e+07 0.928925 ns
tpcds_q61/DataFusion:vortex-file-compressed 36523148 3.66556e+07 0.996387 ns
tpcds_q62/DataFusion:vortex-file-compressed 34126799 3.61963e+07 0.942826 ns
tpcds_q63/DataFusion:vortex-file-compressed 15577540 1.65014e+07 0.944012 ns
tpcds_q64/DataFusion:vortex-file-compressed 321446273 3.27365e+08 0.98192 ns
tpcds_q65/DataFusion:vortex-file-compressed 39184378 3.85548e+07 1.01633 ns
tpcds_q66/DataFusion:vortex-file-compressed 145471002 1.49599e+08 0.972409 ns
tpcds_q67/DataFusion:vortex-file-compressed 122613598 1.23359e+08 0.993957 ns
tpcds_q68/DataFusion:vortex-file-compressed 36135349 3.47438e+07 1.04005 ns
tpcds_q69/DataFusion:vortex-file-compressed 39966451 3.85166e+07 1.03764 ns
tpcds_q70/DataFusion:vortex-file-compressed 143129922 1.48969e+08 0.960804 ns
tpcds_q71/DataFusion:vortex-file-compressed 22640517 2.29668e+07 0.985791 ns
tpcds_q72/DataFusion:vortex-file-compressed 2322337541 2.37347e+09 0.978457 ns
tpcds_q73/DataFusion:vortex-file-compressed 22428296 2.17167e+07 1.03277 ns
tpcds_q74/DataFusion:vortex-file-compressed 157609966 1.59459e+08 0.988406 ns
tpcds_q75/DataFusion:vortex-file-compressed 93635642 9.38682e+07 0.997523 ns
tpcds_q76/DataFusion:vortex-file-compressed 28480275 2.76928e+07 1.02844 ns
tpcds_q77/DataFusion:vortex-file-compressed 32819115 3.39537e+07 0.966585 ns
tpcds_q78/DataFusion:vortex-file-compressed 166247898 1.70774e+08 0.973498 ns
tpcds_q79/DataFusion:vortex-file-compressed 31667343 3.08876e+07 1.02525 ns
tpcds_q80/DataFusion:vortex-file-compressed 105019470 1.05889e+08 0.991785 ns
tpcds_q81/DataFusion:vortex-file-compressed 32866097 3.31649e+07 0.990989 ns
tpcds_q82/DataFusion:vortex-file-compressed 25171500 2.61768e+07 0.961596 ns
tpcds_q83/DataFusion:vortex-file-compressed 40962963 4.0429e+07 1.01321 ns
tpcds_q84/DataFusion:vortex-file-compressed 13119926 1.28626e+07 1.02001 ns
tpcds_q85/DataFusion:vortex-file-compressed 50356619 4.84084e+07 1.04024 ns
tpcds_q86/DataFusion:vortex-file-compressed 13700048 1.31383e+07 1.04276 ns
tpcds_q87/DataFusion:vortex-file-compressed 38932981 3.89797e+07 0.998801 ns
tpcds_q88/DataFusion:vortex-file-compressed 49014422 4.9426e+07 0.991673 ns
tpcds_q89/DataFusion:vortex-file-compressed 34096414 3.53119e+07 0.965578 ns
tpcds_q90/DataFusion:vortex-file-compressed 9745185 1.00956e+07 0.965286 ns
tpcds_q91/DataFusion:vortex-file-compressed 20148014 1.8903e+07 1.06587 ns
tpcds_q92/DataFusion:vortex-file-compressed 10106769 1.04735e+07 0.964988 ns
tpcds_q93/DataFusion:vortex-file-compressed 32707397 3.3523e+07 0.975671 ns
tpcds_q94/DataFusion:vortex-file-compressed 16227281 1.61694e+07 1.00358 ns
tpcds_q95/DataFusion:vortex-file-compressed 49405879 5.12295e+07 0.964403 ns
tpcds_q96/DataFusion:vortex-file-compressed 9034288 9.72526e+06 0.92895 ns
tpcds_q97/DataFusion:vortex-file-compressed 24383158 2.39435e+07 1.01836 ns
tpcds_q98/DataFusion:vortex-file-compressed 29277461 2.95698e+07 0.990114 ns
tpcds_q99/DataFusion:vortex-file-compressed 71099440 7.44795e+07 0.954618 ns
tpcds_q01/DuckDB:parquet 70108038 7.13493e+07 0.982603 ns
tpcds_q02/DuckDB:parquet 23311449 2.36878e+07 0.984113 ns
tpcds_q03/DuckDB:parquet 10181627 9.85354e+06 1.0333 ns
tpcds_q04/DuckDB:parquet 140356359 1.38631e+08 1.01245 ns
tpcds_q05/DuckDB:parquet 24748178 2.36823e+07 1.04501 ns
tpcds_q06/DuckDB:parquet 25465344 2.53807e+07 1.00333 ns
tpcds_q07/DuckDB:parquet 21579658 2.18427e+07 0.987956 ns
tpcds_q08/DuckDB:parquet 22609092 2.31365e+07 0.977203 ns
tpcds_q09/DuckDB:parquet 45326310 4.51569e+07 1.00375 ns
tpcds_q10/DuckDB:parquet 31488085 3.21896e+07 0.978207 ns
tpcds_q11/DuckDB:parquet 78607474 7.84658e+07 1.00181 ns
tpcds_q12/DuckDB:parquet 12450497 1.2671e+07 0.9826 ns
tpcds_q13/DuckDB:parquet 31812392 3.21626e+07 0.989111 ns
tpcds_q14/DuckDB:parquet 122686954 1.27561e+08 0.961787 ns
tpcds_q15/DuckDB:parquet 19255271 1.90417e+07 1.01121 ns
tpcds_q16/DuckDB:parquet 19151422 1.9111e+07 1.00212 ns
tpcds_q17/DuckDB:parquet 30640738 3.21345e+07 0.953515 ns
tpcds_q18/DuckDB:parquet 85491975 8.45568e+07 1.01106 ns
tpcds_q19/DuckDB:parquet 23801757 2.42681e+07 0.980783 ns
tpcds_q20/DuckDB:parquet 13347488 1.30845e+07 1.0201 ns
tpcds_q21/DuckDB:parquet 9959163 9.9025e+06 1.00572 ns
tpcds_q22/DuckDB:parquet 92810691 9.3188e+07 0.995951 ns
tpcds_q23/DuckDB:parquet 83413100 8.27531e+07 1.00798 ns
tpcds_q24/DuckDB:parquet 39355559 3.83106e+07 1.02728 ns
tpcds_q25/DuckDB:parquet 27497886 2.77206e+07 0.991965 ns
tpcds_q26/DuckDB:parquet 30253617 2.96789e+07 1.01937 ns
tpcds_q27/DuckDB:parquet 67808295 6.73693e+07 1.00652 ns
tpcds_q28/DuckDB:parquet 40334777 3.94313e+07 1.02291 ns
tpcds_q29/DuckDB:parquet 32150287 3.13764e+07 1.02466 ns
tpcds_q30/DuckDB:parquet 36173169 3.62793e+07 0.997075 ns
tpcds_q31/DuckDB:parquet 26083119 2.58199e+07 1.01019 ns
tpcds_q32/DuckDB:parquet 9858041 9.81354e+06 1.00454 ns
tpcds_q33/DuckDB:parquet 17579593 1.77154e+07 0.992335 ns
tpcds_q34/DuckDB:parquet 18913664 1.91423e+07 0.988057 ns
tpcds_q35/DuckDB:parquet 48444745 5.04586e+07 0.960089 ns
tpcds_q36/DuckDB:parquet 24642471 2.44931e+07 1.0061 ns
tpcds_q37/DuckDB:parquet 12339948 1.28108e+07 0.963246 ns
tpcds_q38/DuckDB:parquet 31451336 3.19832e+07 0.983369 ns
tpcds_q39/DuckDB:parquet 50582131 4.96877e+07 1.018 ns
tpcds_q40/DuckDB:parquet 15030816 1.46406e+07 1.02665 ns
tpcds_q41/DuckDB:parquet 7623991 7.70465e+06 0.989531 ns
tpcds_q42/DuckDB:parquet 8893437 8.87452e+06 1.00213 ns
tpcds_q43/DuckDB:parquet 14997172 1.5005e+07 0.999478 ns
tpcds_q44/DuckDB:parquet 30094048 3.0065e+07 1.00097 ns
tpcds_q45/DuckDB:parquet 21537888 2.0857e+07 1.03265 ns
tpcds_q46/DuckDB:parquet 42182849 4.42749e+07 0.952749 ns
tpcds_q47/DuckDB:parquet 66397142 6.49989e+07 1.02151 ns
tpcds_q48/DuckDB:parquet 28633171 2.88523e+07 0.992404 ns
tpcds_q49/DuckDB:parquet 23695794 2.45623e+07 0.964722 ns
tpcds_q50/DuckDB:parquet 21226387 2.15934e+07 0.983005 ns
tpcds_q51/DuckDB:parquet 88932127 9.0222e+07 0.985703 ns
tpcds_q52/DuckDB:parquet 9916809 9.8233e+06 1.00952 ns
tpcds_q53/DuckDB:parquet 16040047 1.70352e+07 0.941583 ns
tpcds_q54/DuckDB:parquet 39275003 3.99372e+07 0.983419 ns
tpcds_q55/DuckDB:parquet 9291486 9.67864e+06 0.959999 ns
tpcds_q56/DuckDB:parquet 19441405 1.93839e+07 1.00296 ns
tpcds_q57/DuckDB:parquet 51609272 5.24382e+07 0.984192 ns
tpcds_q58/DuckDB:parquet 20092032 2.0897e+07 0.961481 ns
tpcds_q59/DuckDB:parquet 32030365 3.34826e+07 0.956627 ns
tpcds_q60/DuckDB:parquet 19625441 2.02757e+07 0.96793 ns
tpcds_q61/DuckDB:parquet 26347600 2.6497e+07 0.994361 ns
tpcds_q62/DuckDB:parquet 12241042 1.19658e+07 1.023 ns
tpcds_q63/DuckDB:parquet 14204112 1.47531e+07 0.96279 ns
tpcds_q64/DuckDB:parquet 66260012 6.73594e+07 0.983679 ns
tpcds_q65/DuckDB:parquet 27001451 2.50039e+07 1.07989 ns
tpcds_q66/DuckDB:parquet 24445418 2.45662e+07 0.995084 ns
tpcds_q67/DuckDB:parquet 161445788 1.62462e+08 0.993746 ns
tpcds_q68/DuckDB:parquet 33447105 3.48992e+07 0.958391 ns
tpcds_q69/DuckDB:parquet 34635621 3.51341e+07 0.985813 ns
tpcds_q70/DuckDB:parquet 51993813 5.18596e+07 1.00259 ns
tpcds_q71/DuckDB:parquet 17928385 1.82493e+07 0.982417 ns
tpcds_q72/DuckDB:parquet 61005903 5.64968e+07 1.07981 ns
tpcds_q73/DuckDB:parquet 16228711 1.58763e+07 1.0222 ns
tpcds_q74/DuckDB:parquet 55870299 5.62269e+07 0.993658 ns
tpcds_q75/DuckDB:parquet 47737684 4.97813e+07 0.958948 ns
tpcds_q76/DuckDB:parquet 18168298 1.85841e+07 0.977625 ns
tpcds_q77/DuckDB:parquet 19649566 2.05112e+07 0.957992 ns
tpcds_q78/DuckDB:parquet 64505594 6.69265e+07 0.963828 ns
tpcds_q79/DuckDB:parquet 25606835 2.69152e+07 0.951391 ns
tpcds_q80/DuckDB:parquet 36602266 3.80608e+07 0.96168 ns
tpcds_q81/DuckDB:parquet 39063773 4.08021e+07 0.957397 ns
tpcds_q82/DuckDB:parquet 13820811 1.38889e+07 0.9951 ns
tpcds_q83/DuckDB:parquet 14534698 1.46285e+07 0.993587 ns
tpcds_q84/DuckDB:parquet 13850111 1.41394e+07 0.97954 ns
tpcds_q85/DuckDB:parquet 30907029 3.16921e+07 0.975227 ns
tpcds_q86/DuckDB:parquet 37860725 3.96468e+07 0.954949 ns
tpcds_q87/DuckDB:parquet 33778134 3.43468e+07 0.983444 ns
tpcds_q88/DuckDB:parquet 51101385 5.20852e+07 0.981112 ns
tpcds_q89/DuckDB:parquet 17984574 1.87786e+07 0.957718 ns
tpcds_q90/DuckDB:parquet 7652611 7.85925e+06 0.973708 ns
tpcds_q91/DuckDB:parquet 17158747 1.77706e+07 0.96557 ns
tpcds_q92/DuckDB:parquet 10540337 1.00982e+07 1.04378 ns
tpcds_q93/DuckDB:parquet 22825504 2.4418e+07 0.934781 ns
tpcds_q94/DuckDB:parquet 15231417 1.57212e+07 0.968848 ns
tpcds_q95/DuckDB:parquet 110557601 1.2188e+08 0.907105 ns
tpcds_q96/DuckDB:parquet 8632356 8.24968e+06 1.04639 ns
tpcds_q97/DuckDB:parquet 33657233 3.68472e+07 0.913427 ns
tpcds_q98/DuckDB:parquet 18797661 1.84767e+07 1.01737 ns
tpcds_q99/DuckDB:parquet 22540492 2.27656e+07 0.990113 ns
tpcds_q01/DuckDB:vortex-file-compressed 24769556 2.28719e+07 1.08297 ns
tpcds_q02/DuckDB:vortex-file-compressed 41994609 4.21122e+07 0.997207 ns
tpcds_q03/DuckDB:vortex-file-compressed 14374878 1.47774e+07 0.972758 ns
tpcds_q04/DuckDB:vortex-file-compressed 102673626 1.06551e+08 0.963613 ns
tpcds_q05/DuckDB:vortex-file-compressed 27961195 2.84217e+07 0.983796 ns
tpcds_q06/DuckDB:vortex-file-compressed 25538701 2.55023e+07 1.00143 ns
tpcds_q07/DuckDB:vortex-file-compressed 27194690 2.48042e+07 1.09637 ns
tpcds_q08/DuckDB:vortex-file-compressed 26388819 2.59062e+07 1.01863 ns
tpcds_q09/DuckDB:vortex-file-compressed 23060090 2.22965e+07 1.03425 ns
tpcds_q10/DuckDB:vortex-file-compressed 42532072 4.12582e+07 1.03088 ns
tpcds_q11/DuckDB:vortex-file-compressed 62272104 6.25953e+07 0.994837 ns
tpcds_q12/DuckDB:vortex-file-compressed 11255797 1.30521e+07 0.862371 ns
tpcds_q13/DuckDB:vortex-file-compressed 55509153 5.59385e+07 0.992324 ns
tpcds_q14/DuckDB:vortex-file-compressed 154053365 1.57842e+08 0.975995 ns
tpcds_q15/DuckDB:vortex-file-compressed 23109121 2.37287e+07 0.97389 ns
tpcds_q16/DuckDB:vortex-file-compressed 35362313 3.55815e+07 0.993839 ns
tpcds_q17/DuckDB:vortex-file-compressed 34043656 3.6663e+07 0.928555 ns
tpcds_q18/DuckDB:vortex-file-compressed 102962496 1.11139e+08 0.926434 ns
tpcds_q19/DuckDB:vortex-file-compressed 78982833 8.95114e+07 0.882377 ns
tpcds_q20/DuckDB:vortex-file-compressed 13689588 1.48387e+07 0.922561 ns
tpcds_q21/DuckDB:vortex-file-compressed 15356095 1.53806e+07 0.998407 ns
tpcds_q22/DuckDB:vortex-file-compressed 108152024 1.08531e+08 0.996506 ns
tpcds_q23/DuckDB:vortex-file-compressed 124503268 1.24341e+08 1.0013 ns
tpcds_q24/DuckDB:vortex-file-compressed 71326638 7.15826e+07 0.996424 ns
tpcds_q25/DuckDB:vortex-file-compressed 31821081 3.2297e+07 0.985265 ns
tpcds_q26/DuckDB:vortex-file-compressed 27452597 2.8196e+07 0.973634 ns
tpcds_q27/DuckDB:vortex-file-compressed 45145013 4.55142e+07 0.99189 ns
tpcds_q28/DuckDB:vortex-file-compressed 21734532 2.17051e+07 1.00136 ns
tpcds_q29/DuckDB:vortex-file-compressed 35728819 3.58474e+07 0.996692 ns
tpcds_q30/DuckDB:vortex-file-compressed 26292998 2.57838e+07 1.01975 ns
tpcds_q31/DuckDB:vortex-file-compressed 30166739 2.94119e+07 1.02566 ns
tpcds_q32/DuckDB:vortex-file-compressed 13826331 1.3307e+07 1.03903 ns
tpcds_q33/DuckDB:vortex-file-compressed 20416437 2.1053e+07 0.969762 ns
tpcds_q34/DuckDB:vortex-file-compressed 26055435 2.65393e+07 0.981767 ns
tpcds_q35/DuckDB:vortex-file-compressed 52473279 5.06739e+07 1.03551 ns
tpcds_q36/DuckDB:vortex-file-compressed 32083230 3.51567e+07 0.912579 ns
tpcds_q37/DuckDB:vortex-file-compressed 12142911 1.23332e+07 0.984575 ns
tpcds_q38/DuckDB:vortex-file-compressed 40108762 3.91005e+07 1.02579 ns
tpcds_q39/DuckDB:vortex-file-compressed 63103431 6.74982e+07 0.934891 ns
tpcds_q40/DuckDB:vortex-file-compressed 17101418 1.92498e+07 0.888397 ns
tpcds_q41/DuckDB:vortex-file-compressed 9565477 9.33159e+06 1.02506 ns
tpcds_q42/DuckDB:vortex-file-compressed 10593293 9.91519e+06 1.06839 ns
tpcds_q43/DuckDB:vortex-file-compressed 22734005 2.27523e+07 0.999195 ns
tpcds_q44/DuckDB:vortex-file-compressed 23485390 2.37153e+07 0.990304 ns
tpcds_q45/DuckDB:vortex-file-compressed 23816538 2.43978e+07 0.976174 ns
tpcds_q46/DuckDB:vortex-file-compressed 39379036 3.76572e+07 1.04572 ns
tpcds_q47/DuckDB:vortex-file-compressed 87820910 8.54028e+07 1.02831 ns
tpcds_q48/DuckDB:vortex-file-compressed 48661676 4.94888e+07 0.983287 ns
tpcds_q49/DuckDB:vortex-file-compressed 26446740 2.60213e+07 1.01635 ns
tpcds_q50/DuckDB:vortex-file-compressed 55494993 5.59338e+07 0.992155 ns
tpcds_q51/DuckDB:vortex-file-compressed 102992414 9.89435e+07 1.04092 ns
tpcds_q52/DuckDB:vortex-file-compressed 11056340 1.10228e+07 1.00305 ns
tpcds_q53/DuckDB:vortex-file-compressed 20608804 2.31851e+07 0.888881 ns
tpcds_q54/DuckDB:vortex-file-compressed 41222294 4.02624e+07 1.02384 ns
tpcds_q55/DuckDB:vortex-file-compressed 10738841 1.07535e+07 0.998638 ns
tpcds_q56/DuckDB:vortex-file-compressed 20594285 2.14359e+07 0.96074 ns
tpcds_q57/DuckDB:vortex-file-compressed 69130450 7.09084e+07 0.974926 ns
tpcds_q58/DuckDB:vortex-file-compressed 21976222 2.22105e+07 0.989453 ns
tpcds_q59/DuckDB:vortex-file-compressed 53652070 5.85335e+07 0.916605 ns
tpcds_q60/DuckDB:vortex-file-compressed 24773550 2.41148e+07 1.02732 ns
tpcds_q61/DuckDB:vortex-file-compressed 25786161 2.59914e+07 0.992103 ns
tpcds_q62/DuckDB:vortex-file-compressed 19725474 2.03835e+07 0.967716 ns
tpcds_q63/DuckDB:vortex-file-compressed 24325759 2.40019e+07 1.01349 ns
tpcds_q64/DuckDB:vortex-file-compressed 130250421 1.31684e+08 0.989115 ns
tpcds_q65/DuckDB:vortex-file-compressed 28297685 2.85501e+07 0.99116 ns
tpcds_q66/DuckDB:vortex-file-compressed 25898322 2.5943e+07 0.998278 ns
tpcds_q67/DuckDB:vortex-file-compressed 190402166 1.61129e+08 1.18167 ns
tpcds_q68/DuckDB:vortex-file-compressed 38822029 3.98613e+07 0.973927 ns
tpcds_q69/DuckDB:vortex-file-compressed 41535706 4.0748e+07 1.01933 ns
tpcds_q70/DuckDB:vortex-file-compressed 70154429 6.19975e+07 1.13157 ns
tpcds_q71/DuckDB:vortex-file-compressed 20869618 2.0912e+07 0.997975 ns
tpcds_q72/DuckDB:vortex-file-compressed 150450559 1.51803e+08 0.991089 ns
tpcds_q73/DuckDB:vortex-file-compressed 22865818 2.27319e+07 1.00589 ns
tpcds_q74/DuckDB:vortex-file-compressed 49853470 5.16758e+07 0.964735 ns
tpcds_q75/DuckDB:vortex-file-compressed 50583349 5.36939e+07 0.942068 ns
tpcds_q76/DuckDB:vortex-file-compressed 17730658 1.82864e+07 0.969609 ns
tpcds_q77/DuckDB:vortex-file-compressed 21129366 2.06705e+07 1.0222 ns
tpcds_q78/DuckDB:vortex-file-compressed 76641907 7.9789e+07 0.960557 ns
tpcds_q79/DuckDB:vortex-file-compressed 34382887 3.39596e+07 1.01246 ns
tpcds_q80/DuckDB:vortex-file-compressed 40450190 4.26217e+07 0.949051 ns
tpcds_q81/DuckDB:vortex-file-compressed 29079790 2.87536e+07 1.01134 ns
tpcds_q82/DuckDB:vortex-file-compressed 14316889 1.50672e+07 0.9502 ns
tpcds_q83/DuckDB:vortex-file-compressed 21593907 2.18776e+07 0.987031 ns
tpcds_q84/DuckDB:vortex-file-compressed 22836550 2.28315e+07 1.00022 ns
tpcds_q85/DuckDB:vortex-file-compressed 135338039514 1.36582e+11 0.990892 ns
tpcds_q86/DuckDB:vortex-file-compressed 49610183 4.96255e+07 0.99969 ns
tpcds_q87/DuckDB:vortex-file-compressed 42459707 4.43601e+07 0.957159 ns
tpcds_q88/DuckDB:vortex-file-compressed 47364981 4.96271e+07 0.954417 ns
tpcds_q89/DuckDB:vortex-file-compressed 27190878 2.90402e+07 0.936317 ns
tpcds_q90/DuckDB:vortex-file-compressed 9772217 1.02637e+07 0.95211 ns
tpcds_q91/DuckDB:vortex-file-compressed 21155215 2.17681e+07 0.971843 ns
tpcds_q92/DuckDB:vortex-file-compressed 11982465 1.22582e+07 0.977508 ns
tpcds_q93/DuckDB:vortex-file-compressed 32464098 2.97356e+07 1.09176 ns
tpcds_q94/DuckDB:vortex-file-compressed 37383372 3.93925e+07 0.948998 ns
tpcds_q95/DuckDB:vortex-file-compressed 241870955 2.47949e+08 0.975488 ns
tpcds_q96/DuckDB:vortex-file-compressed 9905004 1.04381e+07 0.948923 ns
tpcds_q97/DuckDB:vortex-file-compressed 37621606 3.8867e+07 0.967958 ns
tpcds_q98/DuckDB:vortex-file-compressed 18450106 1.93857e+07 0.951738 ns
tpcds_q99/DuckDB:vortex-file-compressed 45795152 4.72639e+07 0.968925 ns
tpcds_q01/DuckDB:duckdb 21308224 2.2697e+07 0.938813 ns
tpcds_q02/DuckDB:duckdb 18317376 1.91673e+07 0.95566 ns
tpcds_q03/DuckDB:duckdb 6459887 6.76489e+06 0.954914 ns
tpcds_q04/DuckDB:duckdb 160624452 1.61337e+08 0.995584 ns
tpcds_q05/DuckDB:duckdb 14217887 1.41675e+07 1.00355 ns
tpcds_q06/DuckDB:duckdb 19461073 2.03992e+07 0.954011 ns
tpcds_q07/DuckDB:duckdb 28354727 2.87295e+07 0.986955 ns
tpcds_q08/DuckDB:duckdb 121073253 1.19207e+08 1.01566 ns
tpcds_q09/DuckDB:duckdb 16823552 1.68595e+07 0.997866 ns
tpcds_q10/DuckDB:duckdb 20537435 2.10003e+07 0.97796 ns
tpcds_q11/DuckDB:duckdb 136342487 1.42783e+08 0.954891 ns
tpcds_q12/DuckDB:duckdb 8810834 8.16383e+06 1.07925 ns
tpcds_q13/DuckDB:duckdb 18924816 1.97734e+07 0.957087 ns
tpcds_q14/DuckDB:duckdb 91690631 8.88917e+07 1.03149 ns
tpcds_q15/DuckDB:duckdb 15794541 1.5655e+07 1.00891 ns
tpcds_q16/DuckDB:duckdb 16991302 1.82186e+07 0.932637 ns
tpcds_q17/DuckDB:duckdb 17038006 1.69789e+07 1.00348 ns
tpcds_q18/DuckDB:duckdb 38785047 3.99686e+07 0.970389 ns
tpcds_q19/DuckDB:duckdb 14508953 1.37858e+07 1.05246 ns
tpcds_q20/DuckDB:duckdb 9620965 8.98092e+06 1.07127 ns
tpcds_q21/DuckDB:duckdb 5277932 5.34673e+06 0.987133 ns
tpcds_q22/DuckDB:duckdb 79110456 8.04033e+07 0.98392 ns
tpcds_q23/DuckDB:duckdb 49021225 5.48966e+07 0.892974 ns
tpcds_q24/DuckDB:duckdb 19895811 1.85395e+07 1.07316 ns
tpcds_q25/DuckDB:duckdb 12001216 1.1717e+07 1.02426 ns
tpcds_q26/DuckDB:duckdb 20447489 2.0462e+07 0.999291 ns
tpcds_q27/DuckDB:duckdb 43958063 4.48434e+07 0.980258 ns
tpcds_q28/DuckDB:duckdb 22318172 2.21528e+07 1.00747 ns
tpcds_q29/DuckDB:duckdb 16468082 1.62562e+07 1.01303 ns
tpcds_q30/DuckDB:duckdb 25637250 2.59712e+07 0.987143 ns
tpcds_q31/DuckDB:duckdb 20009008 2.00889e+07 0.996022 ns
tpcds_q32/DuckDB:duckdb 6004736 6.21642e+06 0.965947 ns
tpcds_q33/DuckDB:duckdb 10149024 1.00389e+07 1.01097 ns
tpcds_q34/DuckDB:duckdb 12522483 1.25464e+07 0.998096 ns
tpcds_q35/DuckDB:duckdb 28685631 2.93558e+07 0.977172 ns
tpcds_q36/DuckDB:duckdb 67385912 7.3879e+07 0.912112 ns
tpcds_q37/DuckDB:duckdb 5495553 4.93288e+06 1.11407 ns
tpcds_q38/DuckDB:duckdb 28827383 2.76223e+07 1.04363 ns
tpcds_q39/DuckDB:duckdb 39154941 3.86311e+07 1.01356 ns
tpcds_q40/DuckDB:duckdb 9327777 9.40492e+06 0.991798 ns
tpcds_q41/DuckDB:duckdb 8056683 7.36599e+06 1.09377 ns
tpcds_q42/DuckDB:duckdb 4589061 4.60959e+06 0.995547 ns
tpcds_q43/DuckDB:duckdb 9202586 9.19658e+06 1.00065 ns
tpcds_q44/DuckDB:duckdb 16636621 1.76162e+07 0.944393 ns
tpcds_q45/DuckDB:duckdb 13417810 1.32327e+07 1.01399 ns
tpcds_q46/DuckDB:duckdb 32214899 3.22784e+07 0.998033 ns
tpcds_q47/DuckDB:duckdb 56065962 5.52712e+07 1.01438 ns
tpcds_q48/DuckDB:duckdb 18112987 1.85902e+07 0.974332 ns
tpcds_q49/DuckDB:duckdb 14690220 1.49515e+07 0.982522 ns
tpcds_q50/DuckDB:duckdb 12191567 1.19329e+07 1.02168 ns
tpcds_q51/DuckDB:duckdb 77491943 8.44184e+07 0.917951 ns
tpcds_q52/DuckDB:duckdb 5683356 5.48968e+06 1.03528 ns
tpcds_q53/DuckDB:duckdb 10478957 1.05381e+07 0.994387 ns
tpcds_q54/DuckDB:duckdb 13609214 1.35013e+07 1.00799 ns
tpcds_q55/DuckDB:duckdb 5319168 5.24381e+06 1.01437 ns
tpcds_q56/DuckDB:duckdb 11351398 1.10554e+07 1.02678 ns
tpcds_q57/DuckDB:duckdb 46628432 4.5471e+07 1.02546 ns
tpcds_q58/DuckDB:duckdb 10640988 1.06004e+07 1.00383 ns
tpcds_q59/DuckDB:duckdb 31252496 3.16523e+07 0.98737 ns
tpcds_q60/DuckDB:duckdb 12732144 1.26288e+07 1.00819 ns
tpcds_q61/DuckDB:duckdb 13676578 1.41092e+07 0.969339 ns
tpcds_q62/DuckDB:duckdb 8450700 8.36588e+06 1.01014 ns
tpcds_q63/DuckDB:duckdb 8554699 8.70935e+06 0.982243 ns
tpcds_q64/DuckDB:duckdb 43687836 4.57465e+07 0.954999 ns
tpcds_q65/DuckDB:duckdb 25939865 2.60355e+07 0.996325 ns
tpcds_q66/DuckDB:duckdb 19241328 1.96775e+07 0.977836 ns
tpcds_q67/DuckDB:duckdb 128106021 1.282e+08 0.99927 ns
tpcds_q68/DuckDB:duckdb 19709663 1.95728e+07 1.00699 ns
tpcds_q69/DuckDB:duckdb 22822791 2.23665e+07 1.0204 ns
tpcds_q70/DuckDB:duckdb 17706156 1.83474e+07 0.965051 ns
tpcds_q71/DuckDB:duckdb 12693896 1.2664e+07 1.00236 ns
tpcds_q72/DuckDB:duckdb 31721980 3.07015e+07 1.03324 ns
tpcds_q73/DuckDB:duckdb 8265788 8.55866e+06 0.965781 ns
tpcds_q74/DuckDB:duckdb 97969493 9.95301e+07 0.984321 ns
tpcds_q75/DuckDB:duckdb 36081851 3.57121e+07 1.01035 ns
tpcds_q76/DuckDB:duckdb 8866856 8.74241e+06 1.01423 ns
tpcds_q77/DuckDB:duckdb 8140510 8.39424e+06 0.969774 ns
tpcds_q78/DuckDB:duckdb 52162256 5.19182e+07 1.0047 ns
tpcds_q79/DuckDB:duckdb 15923871 1.608e+07 0.990288 ns
tpcds_q80/DuckDB:duckdb 24433335 2.0415e+07 1.19683 ns
tpcds_q81/DuckDB:duckdb 32829498 3.40129e+07 0.965207 ns
tpcds_q82/DuckDB:duckdb 6545639 5.79775e+06 1.129 ns
tpcds_q83/DuckDB:duckdb 8227442 8.06981e+06 1.01953 ns
tpcds_q84/DuckDB:duckdb 10433319 1.01213e+07 1.03083 ns
tpcds_q85/DuckDB:duckdb 20750643 2.03331e+07 1.02054 ns
tpcds_q86/DuckDB:duckdb 13061767 1.41693e+07 0.921833 ns
tpcds_q87/DuckDB:duckdb 29670411 2.94471e+07 1.00758 ns
tpcds_q88/DuckDB:duckdb 22338522 2.2411e+07 0.996764 ns
tpcds_q89/DuckDB:duckdb 12296766 1.22734e+07 1.0019 ns
tpcds_q90/DuckDB:duckdb 4614330 4.5366e+06 1.01713 ns
tpcds_q91/DuckDB:duckdb 11079859 1.06992e+07 1.03557 ns
tpcds_q92/DuckDB:duckdb 6985705 7.17704e+06 0.973341 ns
tpcds_q93/DuckDB:duckdb 18744102 1.75055e+07 1.07075 ns
tpcds_q94/DuckDB:duckdb 10564645 1.11453e+07 0.947902 ns
tpcds_q95/DuckDB:duckdb 95758284 1.05965e+08 0.903683 ns
tpcds_q96/DuckDB:duckdb 3103012 3.05037e+06 1.01726 ns
tpcds_q97/DuckDB:duckdb 28730626 3.15274e+07 0.911291 ns
tpcds_q98/DuckDB:duckdb 12962083 1.24429e+07 1.04173 ns
tpcds_q99/DuckDB:duckdb 18959858 1.89963e+07 0.998083 ns

ArrayOperations currently return VortexResult<>, but they
really should just be infallible. A failed array op is generally
indicative of programmer or encoding error. There's really nothing
interesting we can do to handle an out-of-bounds slice() or scalar_at.

There's a lot that falls out of this, like fixing a bunch of tests,
tweaking our scalar value casting to return Option instead of Result,
etc.

Signed-off-by: Andrew Duffy <andrew@a10y.dev>
@a10y a10y force-pushed the aduffy/slice-no-err branch from 74cbbea to c0b668f Compare August 18, 2025 13:43
a10y added a commit that referenced this pull request Aug 18, 2025
)

FLUP to #4177

This removes **all** possible sources of panic inside the
deserialization pathway, returning errors. This also adds more explicit
and complete validation of all encodings within their `try_new`
operation.

Currently, we do "best effort" on these validations, including things
like

- Checking Validity is the appropriate length for the array
- Checking min/max values on offsets
- UTF-8 validation on VarBinView and validating that all views reference
valid ranges of the buffers

A lot of this was new validation, some of it was moving validation from
just SerdeVTable into the array type's `try_new` constructor.

Tried to add sufficient doc comments.

---------

Signed-off-by: Andrew Duffy <andrew@a10y.dev>
a10y and others added 2 commits August 18, 2025 15:38
)

FLUP to #4177

This removes **all** possible sources of panic inside the
deserialization pathway, returning errors. This also adds more explicit
and complete validation of all encodings within their `try_new`
operation.

Currently, we do "best effort" on these validations, including things
like

- Checking Validity is the appropriate length for the array
- Checking min/max values on offsets
- UTF-8 validation on VarBinView and validating that all views reference
valid ranges of the buffers

A lot of this was new validation, some of it was moving validation from
just SerdeVTable into the array type's `try_new` constructor.

Tried to add sufficient doc comments.

Signed-off-by: Andrew Duffy <andrew@a10y.dev>
Signed-off-by: Andrew Duffy <andrew@a10y.dev>
@a10y a10y force-pushed the aduffy/slice-no-err branch from 5f6d775 to cdc94ae Compare August 18, 2025 19:38
@a10y a10y changed the title feat: ArrayOperations infallible feat: ArrayOperations infallible, eager validation + new_unchecked Aug 18, 2025
@a10y a10y added the action/benchmark-sql Trigger SQL benchmarks to run on this PR label Aug 18, 2025
@github-actions github-actions bot removed the action/benchmark-sql Trigger SQL benchmarks to run on this PR label Aug 18, 2025
a10y added 3 commits August 18, 2025 21:31
Signed-off-by: Andrew Duffy <andrew@a10y.dev>
Signed-off-by: Andrew Duffy <andrew@a10y.dev>
Signed-off-by: Andrew Duffy <andrew@a10y.dev>
@a10y a10y force-pushed the aduffy/slice-no-err branch from b42e575 to 590c65d Compare August 19, 2025 14:44
@robert3005 robert3005 merged commit 33088c2 into develop Aug 19, 2025
64 of 65 checks passed
@robert3005 robert3005 deleted the aduffy/slice-no-err branch August 19, 2025 16:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

changelog/feature A new feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants