`ScalarValue::Array` by connortsui20 · Pull Request #6717 · vortex-data/vortex

@connortsui20 connortsui20 changed the title [DO NOT MERGE] Experimental array scalar value ScalarValue::Array

Mar 2, 2026

gatesn

connortsui20 added a commit that referenced this pull request

Mar 3, 2026
## Summary

Tracking Issue: #6771

Adds a `VortexSession` parameter to the scalar value deserialization
functions, and updates all callers to pass a session.

We want this in order to support adding an `Array` variant to the
`ScalarValue` enum. That is coming in a followup PR (draft is at
#6717). This PR just makes it
easier to review what is going on.

## API Changes

Adds a `VortexSession` parameter in a few places.

## Testing

This changes doesn't actually make use of the session yet, so there is
no logical changes (yet).

---------

Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>

connortsui20

gatesn

joseph-isaacs

joseph-isaacs

joseph-isaacs

Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>
Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>
Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>

@connortsui20

Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>

@connortsui20

Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>

joseph-isaacs

gatesn pushed a commit that referenced this pull request

Mar 9, 2026
## Summary

Adds a UUID extension type to Vortex over a `FixedSizeList<u8, 16>`.
There isn't much functionality implemented on top of this, and there is
no exporter to Arrow's [UUID canonical extension
type](https://arrow.apache.org/docs/format/CanonicalExtensions.html#uuid).
All of the logic is delegated to the Rust `uuid` crate.

There is still a question of if we want to bring in `FixedSizeBinary`
instead of doing this.

## Testing

Some small basic tests. They serve mostly as example code on how to work
with Uuid extension arrays in general.

## Open Questions

- Do we actually need `FixedSizeBinary` instead here? Why does this not
suffice?
- Is there actually an alignment issue here?
- The performance of `unpack_native` is terrible because we still do not
have `ScalarValue::Array` (see
#6717)
- Should we name this something other than `vortex.uuid` since we know
we might change the storage type in the future?
- `UuidFromString` should really be implemented under the `Cast`
expression, but we do not have a system yet for pluggable expressions so
it is not entirely clear how we would do that.
- What other expressions should we have on Uuid? `UuidToString` is an
easy next one, what else is there?

---------

Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>

This was referenced

Mar 12, 2026