Skip to content

Conversation

@blaginin
Copy link
Member

@blaginin blaginin commented Oct 9, 2025

Adds a new concat expression that concatenates multiple expressions of the same type into a single ChunkedArray. Each input expression becomes a chunk in the resulting ChunkedArray.

Features:

  • Validates all child expressions have the same dtype
  • Returns a ChunkedArray with each child as a chunk
  • Comprehensive tests covering various usage patterns

🤖 Generated with Claude Code

Adds a new `concat` expression that concatenates multiple expressions
of the same type into a single ChunkedArray. Each input expression
becomes a chunk in the resulting ChunkedArray.

Features:
- Validates all child expressions have the same dtype
- Returns a ChunkedArray with each child as a chunk
- Comprehensive tests covering various usage patterns

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: blaginin <dima@spiraldb.com>
@blaginin blaginin self-assigned this Oct 9, 2025
Signed-off-by: blaginin <dima@spiraldb.com>
@blaginin blaginin marked this pull request as ready for review October 9, 2025 15:01
@codspeed-hq
Copy link

codspeed-hq bot commented Oct 9, 2025

CodSpeed Performance Report

Merging #4902 will degrade performances by 10.68%

Comparing db/concat (e3a6c37) with develop (943c4c3)1

Summary

❌ 4 regressions
✅ 1168 untouched

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

Benchmarks breakdown

Benchmark BASE HEAD Change
take_indices[(1000, 16, 0.005)] 20.6 µs 22.9 µs -10.22%
take_indices[(1000, 256, 0.005)] 19.8 µs 22.2 µs -10.68%
take_indices[(1000, 256, 0.01)] 20 µs 22.3 µs -10.48%
take_indices[(1000, 256, 0.03)] 20.5 µs 22.9 µs -10.24%

Footnotes

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

@codecov
Copy link

codecov bot commented Oct 9, 2025

Codecov Report

❌ Patch coverage is 77.55102% with 33 lines in your changes missing coverage. Please review.
✅ Project coverage is 87.44%. Comparing base (487e8ce) to head (e3a6c37).
⚠️ Report is 1 commits behind head on develop.

Files with missing lines Patch % Lines
vortex-expr/src/exprs/concat.rs 77.55% 33 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.


vtable!(Concat);

/// Concatenate zero or more expressions into a single ChunkedArray.
Copy link
Contributor

Choose a reason for hiding this comment

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

I don't think we need to require that a chunked array is returned, just an array containing all rows of the list of arrays?

/// lit(Scalar::from(200)),
/// lit(Scalar::from(300)),
/// ]);
/// let concatenated = example.evaluate(&Scope::new(buffer![0].into_array())).unwrap();
Copy link
Contributor

Choose a reason for hiding this comment

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

Scope::empty not new

@joseph-isaacs joseph-isaacs added the changelog/feature A new feature label Oct 9, 2025
@blaginin blaginin changed the title Add concat expression to vortex-expr feat: add concat expression to vortex-expr Oct 9, 2025
- Update documentation to say concat returns 'a single array' rather than
  specifically requiring ChunkedArray
- Clarify that the result is a ChunkedArray implementation detail
- Fix example to use Scope::empty(1) instead of Scope::new()

Signed-off-by: blaginin <dima@spiraldb.com>
Signed-off-by: blaginin <dima@spiraldb.com>
@blaginin blaginin enabled auto-merge (squash) October 9, 2025 16:09
@blaginin blaginin merged commit 4c21b53 into develop Oct 9, 2025
39 of 40 checks passed
@blaginin blaginin deleted the db/concat branch October 9, 2025 16:22
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