Conversation
…l functions Signed-off-by: Nicholas Gates <nick@nickgates.com>
…l functions Signed-off-by: Nicholas Gates <nick@nickgates.com>
Merging this PR will degrade performance by 27.45%
Performance Changes
Comparing Footnotes
|
|
@claude anything suspicious in this pr |
|
Claude finished @0ax1's task in 3m 58s —— View job Review: Anything Suspicious in This PR
SummaryThe core intent of this PR is sound: the old code cast DuckDB's global data raw pointer to Here are the notable things worth looking at: 🔴 Minor Concern:
|
Polar Signals Profiling ResultsLatest Run
Powered by Polar Signals Cloud |
Benchmarks: PolarSignals ProfilingSummary
Detailed Results Table
|
Benchmarks: TPC-H SF=1 on NVMESummary
Detailed Results Table
|
Benchmarks: FineWeb NVMeSummary
Detailed Results Table
|
Benchmarks: TPC-H SF=1 on S3Summary
Detailed Results Table
|
🚨🚨🚨❌❌❌ SQL BENCHMARK FAILED ❌❌❌🚨🚨🚨Benchmark |
Benchmarks: TPC-DS SF=1 on NVMESummary
Detailed Results Table
|
Benchmarks: FineWeb S3Summary
Detailed Results Table
|
Benchmarks: Statistical and Population GeneticsSummary
Detailed Results Table
|
Benchmarks: TPC-H SF=10 on S3Summary
Detailed Results Table
|
Benchmarks: Clickbench on NVMESummary
Detailed Results Table
|
|
|
||
| fn copy_to_finalize( | ||
| bind_data: &Self::BindData, | ||
| init_global: &mut Self::GlobalState, |
There was a problem hiding this comment.
This one should stay as mut and we would document they this and the above are different
| ) -> VortexResult<()> { | ||
| loop { | ||
| if local_state.exporter.is_none() { | ||
| let mut ctx = SESSION.create_execution_ctx(); |
| array_result | ||
| .execute::<Canonical>(&mut global_state.ctx)? | ||
| .into_struct() | ||
| array_result.execute::<Canonical>(&mut ctx)?.into_struct() |
| offset: usize, | ||
| len: usize, | ||
| vector: &mut VectorRef, | ||
| _ctx: &mut ExecutionCtx, |
Fixes #6632
Previously we were casting the DuckDB global data pointer to a
&mut, which in Rust implies exclusive ownership. But this is not true since these callbacks were thread-local functions being given a pointer to the shared global data.This change meant fixing the scope of our use of ExecutionCtx to one per ArrayRef chunk (same scope as the ArrayExporter)