Skip to content

Conversation

@joseph-isaacs
Copy link
Contributor

@joseph-isaacs joseph-isaacs commented Nov 4, 2025

clean up fill null
add decimal fill null

Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
@joseph-isaacs joseph-isaacs added the changelog/feature A new feature label Nov 4, 2025
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
@joseph-isaacs joseph-isaacs enabled auto-merge (squash) November 4, 2025 11:03
@codspeed-hq
Copy link

codspeed-hq bot commented Nov 4, 2025

CodSpeed Performance Report

Merging #5175 will degrade performances by 33.13%

Comparing ji/fill-null-cleanup (091df87) with develop (69ef61d)1

Summary

⚡ 75 improvements
❌ 33 regressions
✅ 1210 untouched
🆕 7 new
⏩ 127 skipped2

⚠️ Please fix the performance issues or acknowledge them on CodSpeed.

Benchmarks breakdown

Benchmark BASE HEAD Change
decompress_rd[f64, 10000] 141 µs 157.9 µs -10.69%
chunked_dict_primitive_canonical_into[f32, (1000, 10, 10)] 99.9 µs 90.7 µs +10.16%
chunked_dict_primitive_canonical_into[f32, (1000, 10, 100)] 778.9 µs 697.3 µs +11.7%
chunked_dict_primitive_canonical_into[f32, (1000, 100, 100)] 794.9 µs 714 µs +11.32%
chunked_dict_primitive_canonical_into[u32, (1000, 10, 10)] 100.7 µs 90.9 µs +10.81%
chunked_dict_primitive_canonical_into[u32, (1000, 10, 100)] 803.1 µs 720.1 µs +11.52%
chunked_dict_primitive_canonical_into[u32, (1000, 100, 10)] 102.4 µs 92.6 µs +10.6%
chunked_dict_primitive_canonical_into[u32, (1000, 100, 100)] 807.4 µs 724.7 µs +11.42%
chunked_dict_primitive_into_canonical[f32, (1000, 10, 10)] 100.8 µs 91.4 µs +10.22%
chunked_dict_primitive_into_canonical[f32, (1000, 10, 100)] 799.6 µs 720.1 µs +11.04%
chunked_dict_primitive_into_canonical[f32, (1000, 100, 10)] 102 µs 92.6 µs +10.1%
chunked_dict_primitive_into_canonical[f32, (1000, 100, 100)] 816.1 µs 736.5 µs +10.81%
chunked_dict_primitive_into_canonical[u32, (1000, 10, 10)] 101.6 µs 91.8 µs +10.75%
chunked_dict_primitive_into_canonical[u32, (1000, 10, 100)] 807.7 µs 721.9 µs +11.89%
chunked_dict_primitive_into_canonical[u32, (1000, 100, 10)] 106.1 µs 96.4 µs +10.01%
chunked_dict_primitive_into_canonical[u32, (1000, 100, 100)] 823.2 µs 737.8 µs +11.57%
decode_primitives[f32, (1000, 128)] 25.6 µs 23 µs +11.31%
decode_primitives[f32, (1000, 2)] 25.7 µs 23.1 µs +11.23%
decode_primitives[f32, (1000, 32)] 25.3 µs 22.7 µs +11.46%
decode_primitives[f32, (1000, 4)] 25.7 µs 23.1 µs +11.25%
... ... ... ... ...

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

Footnotes

  1. No successful run was found on develop (8ca7f69) during the generation of this report, so 69ef61d was used instead as the comparison base. There might be some changes unrelated to this pull request in this report.

  2. 127 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

fn fill_null(&self, array: &DecimalArray, fill_value: &Scalar) -> VortexResult<ArrayRef> {
let result_validity = Validity::from(fill_value.dtype().nullability());

Ok(match array.validity() {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should operate on Mask instead of validity.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why we have a validity and would have to materialise a mask?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My thinking is that the mask is the you do the compute over. However, since you immediately take the buffer I think this should be fine

@codecov
Copy link

codecov bot commented Nov 4, 2025

Codecov Report

❌ Patch coverage is 87.00000% with 13 lines in your changes missing coverage. Please review.
✅ Project coverage is 84.88%. Comparing base (69ef61d) to head (091df87).
⚠️ Report is 25 commits behind head on develop.

Files with missing lines Patch % Lines
...rtex-array/src/arrays/decimal/compute/fill_null.rs 86.41% 11 Missing ⚠️
vortex-array/src/arrays/bool/compute/fill_null.rs 0.00% 1 Missing ⚠️
...ex-array/src/arrays/primitive/compute/fill_null.rs 66.66% 1 Missing ⚠️

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@joseph-isaacs joseph-isaacs merged commit 42a65ff into develop Nov 4, 2025
44 of 45 checks passed
@joseph-isaacs joseph-isaacs deleted the ji/fill-null-cleanup branch November 4, 2025 15:27
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.

3 participants