Proto commits in spiraldb/vortex

These 92 commits are when the Protocol Buffers files have changed:

Commit:682c7b8
Author:Adam Gutglick
Committer:GitHub

Add JSON to Parquet Variant conversion with shredding (#8391) ## Summary This PR adds a `vortex.json_to_variant` expression for converting UTF-8 or `vortex.json` extension arrays into Variant arrays. The expression lives in `vortex-json` so JSON-facing expression metadata and serialization are independent of a concrete Variant encoding. `vortex-parquet-variant` provides the concrete execution kernels, parsing JSON through `parquet_variant_compute` and producing Parquet Variant storage. --------- Signed-off-by: Adam Gutglick <adam@spiraldb.com>

The documentation is generated from this commit.

Commit:5df0f94
Author:Robert Kruszewski
Committer:GitHub

Numerical aggregate functions have an option to skip or include nans in calculation, skip by default (#8457) Almost all of the time you want to skip nans but for rare cases when you don't we need to be able to configure it

Commit:563b7d9
Author:Adam Gutglick
Committer:Adam Gutglick

Json-Variant exprs Signed-off-by: Adam Gutglick <adam@spiraldb.com>

Commit:3006be6
Author:Adam Gutglick
Committer:GitHub

Updated Variant array and the new VariantGet expression (#7877) ## Summary This PR includes two big changes as Variant moves closer to readiness. 1. Potentially holding the `shredded` child of a variant array in the canonical VariantArray 2. A `VariantGet` expression that can pull extract data out of variant arrays, either in a typed way or as a more opaque `Variant`. For reviewers, some relevant context might be: 1. The [VariantGet](https://github.com/vortex-data/rfcs/pull/58) RFC: this RFC takes some lessons I've learned working on this into account and reflects my updated view of this problem. 2. The original [Variant type](https://vortex-data.github.io/rfcs/rfc/0015.html) RFC I think the Parquet spec is also a pretty good read and a very heavy influence of this work - [`Shredding`](https://parquet.apache.org/docs/file-format/types/variantshredding/) and the [`Variant type`](https://parquet.apache.org/docs/file-format/types/variantencoding/). --------- Signed-off-by: "Adam Gutglick" <adam@spiraldb.com> Signed-off-by: Adam Gutglick <adam@spiraldb.com>

Commit:bb803d1
Author:Connor Tsui
Committer:Connor Tsui

Add `UnionVariants` type and embed it in `DType::Union` Replaces `DType::Union(Nullability)` with `DType::Union(UnionVariants, Nullability)`. `UnionVariants` carries a `FieldNames` list, per-variant `FieldDType`s, and an `i8` type-id vector (supporting non-consecutive tags like `[0, 5, 7]` so children can be removed without renumbering). The flatbuffer and protobuf `Union` schemas are extended with the `names`/`dtypes`/`type_ids` fields, and serde, flatbuffers, and protobuf paths are filled in with round-trip tests and nullability-constraint checks. All the `todo!()` stubs added in the previous commit for `DType::Union(..)` arms are left in place; concrete implementations land alongside the array work. Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>

Commit:e56c80d
Author:Connor Tsui
Committer:GitHub

Add `DType::Union` variant carrying just `Nullability` (#7901) ## Summary Tracking issue: https://github.com/vortex-data/vortex/issues/7882 Adds the `Union(Nullability)` enum variant, plumbs it through all existing match arms with `todo!("TODO(connor)[Union]: unimplemented")`, and reserves slot 12 in the flatbuffer and protobuf wire schemas. A follow-up PR will replace `Union(Nullability)` with `Union(UnionVariants, Nullability)` and fill in the serde paths. Note that this PR doesn't have any implementation logic, it is just boilerplate. ## API Changes Adds a new `DType::Union` variant. ## Testing Nothing to test. Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>

Commit:7b317ef
Author:Robert Kruszewski
Committer:GitHub

Remove unused protobuf dependency in java bindings (#7886) This is no longer used. Got left behind latest refactors Signed-off-by: Robert Kruszewski <github@robertk.io>

Commit:3488c37
Author:Adam Gutglick
Committer:Adam Gutglick

VariantGet with DType Signed-off-by: Adam Gutglick <adam@spiraldb.com>

Commit:9599d80
Author:Adam Gutglick
Committer:Adam Gutglick

[WIP] Re-shaping the canonical variant array to support more general forms of shredding Signed-off-by: Adam Gutglick <adam@spiraldb.com>

Commit:b5224d3
Author:Claude

Add SafeDiv binary operator ## Summary Adds `Operator::SafeDiv` — a division variant where a non-null zero divisor yields 0 rather than erroring. Integer overflow still errors (`i32::MIN / -1`), matching `Div`. Null on either side propagates. ## Implementation The array-level kernel is a hand-written single-pass `match_each_native_ptype!` loop (not a composition of existing ops). It runs over primitive slices once, combining validity from both inputs and producing a `PrimitiveArray` directly. Wiring touches the usual places a new binary arithmetic operator hits: proto enum and generated bindings, `Operator` / `NumericOperator` with their conversions, the `Binary` scalar-fn dispatcher (including stat_falsification), scalar-level `checked_binary_numeric` for both primitive and decimal scalars, and the FFI C enum. To combine validity from the two input arrays, the kernel calls `Validity::and` and then eagerly materializes the resulting lazy `Binary(And)` expression via `execute::<BoolArray>(ctx)`. This required threading `ExecutionCtx` through `execute_numeric` from the `Binary` dispatcher. Scope note: array-level SafeDiv is primitive-only. A decimal-array input fails with a clear error rather than silently inheriting the zero-rhs-errs behavior from arrow-arith; scalar-level decimal SafeDiv (used by the constant-constant fast path) is supported. ## Testing - 5 primitive scalar tests (integer, integer-by-zero, overflow still errs, float-by-zero yields 0.0 not Inf, null propagation) - 1 decimal scalar test (by-zero yields zero, not None) - 4 array-level tests (integer-by-zero, float-by-zero, nullable propagation from both sides, constant-zero rhs fast path) - Conformance harness: SafeDiv added to the operator arrays and is exercised with zero-valued scalars (unlike Div, which is skipped) - `cargo test -p vortex-array --lib` → 2556 passed, 0 failed - `cargo clippy -p vortex-array -p vortex-ffi -p vortex-proto --all-targets --all-features` → clean - `cargo fmt --all` → clean (nightly fmt unavailable in this sandbox) Signed-off-by: Claude <noreply@anthropic.com> https://claude.ai/code/session_01MLXfBVfMbrUgRPafnt5GHC Signed-off-by: Claude <noreply@anthropic.com>

Commit:83ab0e8
Author:Adam Gutglick
Committer:Adam Gutglick

variant get Signed-off-by: Adam Gutglick <adam@spiraldb.com>

Commit:1c06acd
Author:Adam Gutglick
Committer:Adam Gutglick

Better expr Signed-off-by: Adam Gutglick <adam@spiraldb.com>

Commit:74586e2
Author:Connor Tsui
Committer:Connor Tsui

add array variant to scalar value Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>

Commit:0ea4a41
Author:Adam Gutglick
Committer:Adam Gutglick

Scalar Signed-off-by: Adam Gutglick <adam@spiraldb.com>

Commit:438cb57
Author:Adam Gutglick
Committer:Adam Gutglick

Initial work Signed-off-by: Adam Gutglick <adam@spiraldb.com>

Commit:6d7965f
Author:Adam Gutglick
Committer:Adam Gutglick

Filling out the missing pieces Signed-off-by: Adam Gutglick <adam@spiraldb.com>

Commit:213d181
Author:Nicholas Gates

merge Signed-off-by: Nicholas Gates <nick@nickgates.com>

Commit:43ae2dc
Author:Dmitrii Blaginin
Committer:GitHub

chore: `AggregateFnRef` [de]serialize (#7070) Signed-off-by: blaginin <github@blaginin.me>

Commit:b8b056d
Author:Adam Gutglick
Committer:GitHub

Variant DType (#6912) This PR includes initial support for the Variant DType, as described in the [Variant RFC](https://github.com/vortex-data/rfcs/blob/develop/accepted/0015-variant-type.md). It includes most of the required boilerplate and initial structure for this new dtype. It includes the following changes: 1. New dtype 2. serialization for the dtype 3. Scalar variant and new scalar value 4. A lot of code paths that aren't supported yet and error accordingly. --------- Signed-off-by: Adam Gutglick <adam@spiraldb.com>

Commit:0b3ae4d
Author:Nicholas Gates

Split up binary ScalarFn Signed-off-by: Nicholas Gates <nick@nickgates.com>

Commit:df23c37
Author:Luke Kim
Committer:GitHub

feat[expr]: N-ary CASE WHEN expression (#6786) ## Summary Introduces CASE WHEN expression support in Vortex as a scalar function, implementing a true n-ary CASE WHEN cond1 THEN val1 WHEN cond2 THEN val2 ... ELSE default END expression. ## Changes included This pull request introduces support for SQL-style CASE WHEN expressions in Vortex, including both the expression logic and integration with DataFusion. The changes add new expression constructors, conversion logic, and pushdown support for CASE WHEN, as well as comprehensive benchmarks and tests to ensure correctness and performance. **CASE WHEN expression support:** * Added new constructors `case_when`, `case_when_no_else`, and `nested_case_when` to build CASE WHEN expressions in `exprs.rs`, leveraging the new `CaseWhen` scalar function and its options. [[1]](diffhunk://#diff-d1b532c524303a975ccf98376ed880c0b6e4bab2fce91e99157aac49f9c30e66R24-R25) [[2]](diffhunk://#diff-d1b532c524303a975ccf98376ed880c0b6e4bab2fce91e99157aac49f9c30e66R115-R168) * Introduced `CaseWhenOpts` protobuf message to encode CASE WHEN options for serialization. * Registered the new `case_when` scalar function module. **DataFusion integration:** * Implemented conversion from DataFusion's `CaseExpr` to Vortex's CASE WHEN expressions, supporting the "searched CASE" form and mapping WHEN/THEN/ELSE clauses. [[1]](diffhunk://#diff-ca68b66d97eff4b97ef5e70b3c324078ee441d91422f8d3a426f47882a61a202R148-R186) [[2]](diffhunk://#diff-ca68b66d97eff4b97ef5e70b3c324078ee441d91422f8d3a426f47882a61a202R278-R281) * Enhanced pushdown logic to support CASE WHEN expressions, including recursive checks for child expressions and ELSE clauses. [[1]](diffhunk://#diff-ca68b66d97eff4b97ef5e70b3c324078ee441d91422f8d3a426f47882a61a202L383-R432) [[2]](diffhunk://#diff-ca68b66d97eff4b97ef5e70b3c324078ee441d91422f8d3a426f47882a61a202R445-R510) **Benchmarking and testing:** * Added comprehensive benchmarks for various CASE WHEN scenarios in `case_when_bench.rs` and registered them in `Cargo.toml`. [[1]](diffhunk://#diff-c745f3a7a34d4a4f657c8e2e9e47197ec0f36e2886656366721559f36b76eca9R1-R210) [[2]](diffhunk://#diff-b1d55e82b9c9a25ba02540f4e1d46def7467de866587345f75b63f9ac51c04a6R130-R134) * Added an equivalence test to ensure that DataFusion CASE WHEN results match Vortex's results for the same input data. **Other improvements:** * Refined scalar function pushdown checks and utility logic for expression convertibility. * Minor code quality improvements and error handling in the expression module. ## Testing * Added a comprehensive test to verify equivalence between DataFusion and Vortex results for a `CASE WHEN` expression applied to an Arrow `RecordBatch`. ## Benchmarking * Introduced a new benchmark for various `CASE WHEN` scenarios, including simple, nested, all-true, and all-false cases, in `benches/expr/case_when_bench.rs`, and registered it in `Cargo.toml`. [[1]](diffhunk://#diff-c745f3a7a34d4a4f657c8e2e9e47197ec0f36e2886656366721559f36b76eca9R1-R144) [[2]](diffhunk://#diff-b1d55e82b9c9a25ba02540f4e1d46def7467de866587345f75b63f9ac51c04a6R130-R134) Benchmark | 1K rows | 10K rows | 100K rows -- | -- | -- | -- case_when_simple | 5.4 µs | 8.4 µs | 29.5 µs case_when_without_else | 5.5 µs | 8.7 µs | 29.4 µs case_when_all_true | 4.2 µs | 6.3 µs | 20.7 µs case_when_all_false | 4.3 µs | 6.4 µs | 20.1 µs case_when_nary_3_conditions | 15.1 µs | 25.8 µs | 87.3 µs case_when_nary_equality_lookup (5) | 25.2 µs | 39.7 µs | 125.4 µs case_when_nary_10_conditions | 45.5 µs | 73.1 µs | 257.5 µs --------- Signed-off-by: Luke Kim <80174+lukekim@users.noreply.github.com>

Commit:4fb6ee3
Author:Daniel King

fix: correctly (de)serialize merge with error duplicate handling Signed-off-by: Daniel King <dan@spiraldb.com>

Commit:1530401
Author:Adam Gutglick
Committer:GitHub

Expand expression pushdown to DataFusion (#4398) Started as a demo for @danking to show how to add more pushdown to Datafusion, now it includes some more expression (`IS NULL`, `IS NOT NULL` and `IN LIST`), which only leaves `substr` and dynamic expressions. It also allows for pushing more binary operators for arithmetic operations. `vortex-compact` seems really noise, but clickbench still shows nice improvements in a bunch of queries for the btrblocks compression. --------- Signed-off-by: Adam Gutglick <adam@spiraldb.com>

Commit:370c6c0
Author:Adam Gutglick
Committer:Adam Gutglick

More ops Signed-off-by: Adam Gutglick <adam@spiraldb.com>

Commit:247583b
Author:Adam Gutglick

More ops Signed-off-by: Adam Gutglick <adam@spiraldb.com>

Commit:c1e897a
Author:Connor Tsui
Committer:GitHub

Feature: `FixedSizeList` infrastructure (#4385) Adds infrastructure to support `FixedSizeList` including: - Arbitrary implementations - Flatbuffers - Protobuf - Some tests (commit granularity is nice if you want to look at that) --------- Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>

Commit:aa7c59a
Author:Connor Tsui
Committer:Connor Tsui

add `FixedSizeList` Protobuf Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>

Commit:4a23f65
Author:Adam Gutglick
Committer:GitHub

feat: Support more datafusion features (#4180) After spending some time today debugging a Datafusion issue with @joseph-isaacs and @robert3005 (ended up not being related to us), I figured I'll use the momentum to add some of the missing features: 1. Support for basic arithmetic expression pushdown (which exists in TPC-DS), including subtraction to `vortex-expr`. 2. Support files with different (but compatible) schemas in the same table. This is currently only supported if a `PhysicalExprAdapterFactory` is provided (either through the `FileScanConfig` or directly). 3. Support hive-style partitioning columns. Both features aren't fully fleshed out and probably require more tests, I want to figure out if we can use datafusion's own test suite to close that gap, they have pretty cool tooling to test SQL. One of the changes it required is making the source and opener more datafusion-y, doing most of the conversion work into Vortex in the actual `FileOpenFuture`. It allows us to utilize more of datafusion's tools for rewriting expressions over specific files. --------- Signed-off-by: Adam Gutglick <adam@spiraldb.com>

Commit:987b77e
Author:Adam Gutglick
Committer:Adam Gutglick

feat: More Datafusion support Signed-off-by: Adam Gutglick <adam@spiraldb.com>

Commit:3ce98c9
Author:Adam Gutglick
Committer:Adam Gutglick

feat: More Datafusion support Signed-off-by: Adam Gutglick <adam@spiraldb.com>

Commit:450823f
Author:Adam Gutglick
Committer:Adam Gutglick

feat: More Datafusion support Signed-off-by: Adam Gutglick <adam@spiraldb.com>

Commit:8fc67e2
Author:Adam Gutglick
Committer:Adam Gutglick

feat: More Datafusion support Signed-off-by: Adam Gutglick <adam@spiraldb.com>

Commit:03508f9
Author:Will Manning
Committer:GitHub

fix: error-prone f16 Scalar serde (#4113) ⏺ Summary of Changes The diff shows comprehensive changes to fix scalar casting bugs and ensure backwards compatibility for serialized scalar values. Here are the key changes: 1. Core Bug Fix: Floating-Point Conversion (vortex-scalar/src/pvalue.rs) - Fixed critical bug where u64 to f64 conversion was using bit reinterpretation (f64::from_bits()) instead of numeric conversion - Changed to use NumCast::from() for proper numeric conversions 2. Type Coercion System (vortex-scalar/src/lib.rs) - Added coerce_value() method in Scalar::new() to handle backwards compatibility - Specifically coerces f16 values stored as u64 (for backwards compatibility with serialized data) - Includes recursive coercion for structs and lists containing f16 fields - Protected against overflow (only coerces u64 to f16 if value ≤ u16::MAX) 3. Protobuf Support for f16 (vortex-proto/proto/scalar.proto) - Added dedicated f16_value field to protobuf schema (field 10) - Updated serialization to use this dedicated field instead of storing f16 as u64 4. Consistent Scalar Construction - Updated all direct Scalar { dtype, value } constructions to use Scalar::new() - Ensures coercion logic is always applied - Changed in: - bool.rs: into_scalar(), bool(), From<bool> - primitive.rs: primitive_value(), From<$T> for Scalar - struct_.rs: field_by_idx(), cast(), struct_() - list.rs: element(), list(), list_empty() 5. Test Coverage (vortex-scalar/src/lib.rs and proto.rs) - Fixed test_canonicalize_scalar_values to create f16 values properly - Added comprehensive coercion tests: - f16 coercion from u64 - No coercion for other type combinations - Struct field coercion - List element coercion - Overflow protection - Added ScalarValue protobuf roundtrip tests: - Direct f16 roundtripping - Value preservation for all primitive types - Handling of type consolidation (u8/u16/u32 → u64, i8/i16/i32 → i64) 6. Key Design Decision - Only f16 from u64 is coerced (minimal approach for backwards compatibility) - Other floating-point types (f32, f64) are NOT coerced - This preserves backwards compatibility while fixing the root cause The changes ensure that: 1. Scalar casting now uses numeric conversion instead of bit reinterpretation 2. Old serialized f16 values (stored as u64) are properly handled 3. All scalar constructions go through the coercion logic 4. Comprehensive tests verify the behavior --------- Signed-off-by: Will Manning <will@willmanning.io>

Commit:5a09cdf
Author:Will Manning
Committer:Will Manning

stop tagging f16 as u64 in proto Signed-off-by: Will Manning <will@willmanning.io>

Commit:d0423c4
Author:Adam Gutglick
Committer:GitHub

feat: Add serialization support for Select expression (#4077) Signed-off-by: Adam Gutglick <adam@spiraldb.com>

Commit:8afe0fe
Author:Nicholas Gates
Committer:GitHub

Remove var expression (#3829) Fixes #3671 * Removes the Var expression, leaving instead a `root()` expression for resolving the scope root. * The expression scope can hold context variables, useful for passing in auth tokens for example, but not variables that would impact the return_dtype of the expression. * ScopeDType has therefore been removed, because the dtype of the scope _is_ just the dtype of the root array. * Simplifies some transformation / partitioning logic where vars no longer need to be considered. Signed-off-by: Nicholas Gates <nick@nickgates.com> Co-authored-by: Will Manning <will@spiraldb.com>

Commit:ee8121d
Author:Nicholas Gates
Committer:GitHub

VortexExpr VTables (#3713) Adds the same vtable machinery as arrays and layouts already use. It uses the "Encoding" naming scheme from arrays and layouts. I don't particularly like it, but it's consistent. Open to renames later. Further, adds an expression registry to the Vortex session that will be used for deserialization. Expressions only decide their "options" serialization. So in theory, can support many container formats, not just proto, provided each expression can deserialize their own options format. --------- Signed-off-by: Nicholas Gates <nick@nickgates.com>

Commit:c5c8162
Author:Nicholas Gates

Merge

Commit:2e04c7c
Author:Nicholas Gates

Merge

Commit:bba0e63
Author:Will Manning
Committer:GitHub

chore: SPDX license & copyrights (#3753)

Commit:aa302a4
Author:Nicholas Gates

SelectExpr Signed-off-by: Nicholas Gates <nick@nickgates.com>

Commit:0b47170
Author:Nicholas Gates

Fix ocmpile

Commit:9aa364f
Author:Nicholas Gates

Extensible expression serde Signed-off-by: Nicholas Gates <nick@nickgates.com>

Commit:ecb4cd7
Author:Robert Kruszewski
Committer:GitHub

chore: Rename CheckedAdd operator to Add (#3612) Signed-off-by: Robert Kruszewski <github@robertk.io>

Commit:cb4adc4
Author:Dan King
Committer:GitHub

feat[vortex-expr]: CheckedAdd operator (#3603) Signed-off-by: Daniel King <dan@spiraldb.com>

Commit:6f661c1
Author:Joe Isaacs
Committer:GitHub

chore[vortex-expr]: remove `let` expr (#3604)

Commit:0ff30aa
Author:Joe Isaacs
Committer:GitHub

feat[vortex-layout]: add row_id layout reader to support row_id expr queries (#3449) Add the following well defined Scope value ``` dtype("$vx.row_id") = {file_index: u64, file_row_number: u64} ``` This can be used in the scan, and file pruning --------- Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>

Commit:0a53ce7
Author:Joe Isaacs

update Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>

Commit:f90c116
Author:Joe Isaacs
Committer:GitHub

list_contains to use any semantics (#3448) Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>

Commit:537d3ac
Author:Joe Isaacs

wip Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk> Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>

Commit:8b9eec5
Author:Joe Isaacs
Committer:GitHub

feat[vortex-expr]: let expression (#3447) add let x = e in e and var(x) expressions, var("") replaces identity Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk> --------- Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>

Commit:c30aacb
Author:Joe Isaacs

fix Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk> Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>

Commit:033b9b9
Author:Joe Isaacs

Merge branch 'develop' into ji/let-expr # Conflicts: # vortex-layout/src/layouts/flat/writer.rs # vortex-proto/src/generated/vortex.expr.rs

Commit:3fd1f05
Author:Joe Isaacs

add let and var expr Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk> Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>

Commit:d17f02f
Author:Marko Bakovic
Committer:GitHub

Adds `list_contains` expression (#3410) Co-authored-by: Andrew Duffy <andrew@a10y.dev>

Commit:f7f2228
Author:Joe Isaacs

Merge branch 'develop' into ji/let-expr # Conflicts: # vortex-proto/src/generated/vortex.expr.rs

Commit:91624db
Author:Marko Bakovic
Committer:GitHub

Add `cast` expression (#3440)

Commit:cead55b
Author:Joe Isaacs

let expr Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>

Commit:c265ccf
Author:Marko Bakovic

This commit will be squashed.

Commit:968ade8
Author:Joe Isaacs

wip Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>

Commit:0ac8561
Author:Marko Bakovic

This commit will be squashed.

Commit:0e7253c
Author:Marko Bakovic
Committer:GitHub

feat: add is_null expression (#3324)

Commit:94444d3
Author:Robert Kruszewski
Committer:GitHub

Use protobuf to serialize scalars (#3141)

Commit:ce6727e
Author:Robert Kruszewski
Committer:Robert Kruszewski

fixes

Commit:cb2004d
Author:Robert Kruszewski
Committer:Robert Kruszewski

Use protobuf to serialize scalars

Commit:457c842
Author:Joe Isaacs
Committer:GitHub

Add decimal with storage size i8..i64 to vortex (#3161)

Commit:27596aa
Author:Joe Isaacs

add decimal i8..i64

Commit:74dca0b
Author:Robert Kruszewski
Committer:Robert Kruszewski

Use protobuf to serialize scalars

Commit:69f99c4
Author:Andrew Duffy
Committer:GitHub

feat: Decimal types (#3058) Co-authored-by: Robert Kruszewski <github@robertk.io>

Commit:579a91c
Author:Andrew Duffy

use uint32 for decimal precision in proto

Commit:ceb9366
Author:Andrew Duffy
Committer:Andrew Duffy

closer

Commit:ad7923e
Author:Andrew Duffy
Committer:Andrew Duffy

feat: Decimal types

Commit:857c841
Author:Andrew Duffy

closer

Commit:a677a9e
Author:Andrew Duffy

feat: Decimal types

Commit:67984cc
Author:Joe Isaacs
Committer:GitHub

Add all vortex expressions to proto serde (#2907) Add serde + proto expression for like and between.

Commit:9fbfda9
Author:Andrew Duffy
Committer:GitHub

feat(java): Expression serialization protobufs (#2744)

Commit:c222a4a
Author:Joe Isaacs
Committer:GitHub

Use proto c++ (#2734) Add marshalling from C++ into Expr proto --------- Co-authored-by: Alexander Droste <alexander.droste@protonmail.com>

Commit:05eb71d
Author:Joe Isaacs
Committer:GitHub

Vortex expr protobuf (#2725) Added a first impl sketch for voretx-expr protobufs. I think in the future we will replace the `Kind kind = 3;` with a more extendable system, maybe proto any or json?

Commit:b69d89b
Author:Nicholas Gates
Committer:GitHub

Improve expression performance (#2273) * Only simplify once in the scanner * Manually implement return_dtype instead of expensive Canonical::Empty (FLUP: we should add `return_nullability()` expr too) * Remove `Field::Index` weirdness. * More consistent APIs for Struct{Scalar,Array,DType}

Commit:126c773
Author:Andrew Duffy
Committer:GitHub

chore: remove unused Decimal dtype in proto/fbs (#2156)

Commit:2d439a2
Author:Andrew Duffy
Committer:GitHub

feat: specify the storage_dtype in ExtDType (#1007) Adds `storage_dtype` to `ExtDType`. This PR adds `storage_dtype` to `ExtDType`. This is desirable for a few reasons * Makes it possible to canonicalize an empty chunked ExtensionArray * Makes it possible to determine the storage DType for a ConstantArray without examining its value * Makes it possible for Vortex to reason about externally authored extension types. This is still not fully complete, as an ideal experience would allow extension authors to override IntoCanonical, IntoArrow, Display, etc. To avoid duplicating the nullability, we remove top-level `nullability` from the `DType::Extension` variant, instead nullability is accessed through the inner ExtDType. --------- Co-authored-by: Will Manning <will@willmanning.io>

Commit:47e8c56
Author:Robert Kruszewski
Committer:GitHub

Push filter schema manipulation into layout reader and reuse ipc message writer in file writer (#651) This is done in preparation for pruning as we need to be able to mutate the filters and read columns based on filters

Commit:79d4df2
Author:Andrew Duffy
Committer:GitHub

Lots of things to try and get publishing working (#557)

Commit:192c0eb
Author:Nicholas Gates
Committer:GitHub

Clean up fields / field paths (#353)

Commit:3f8282b
Author:Nicholas Gates
Committer:GitHub

Expression proto serde (#351)

Commit:0e83666
Author:Marko Bakovic
Committer:GitHub

Implement StructValue proto serde without google.protobuf.Value (#343) Move away from google.protobuf.Value. It makes things unnecessary complicated - number is always f64, look at the previous logic for handling struct.... It seems like the Value models JSON value which is not what we need. I considered using google.protobuf wrappers, e.g. BytesValue, Int32Value, instead of primitives but those are also for usage with JSON or with proto2 (before optional was introduced to enable optional primitive fields), so decided to use proto primitives. Adds to proto and try from proto.

Commit:f48d70b
Author:Marko Bakovic
Committer:GitHub

define ScalarValue in VortexScalar protobuf (#323) more aligned with the flatbuffers definition

Commit:01499bd
Author:Nicholas Gates
Committer:GitHub

Proto Refactor (#325)

Commit:6fb0e8a
Author:Nicholas Gates
Committer:GitHub

Add ScalarView (#301) Fixes #290 Makes scalar generic over heap allocated data or serialised scalar data. Serialized scalars will no longer include DType information to avoid duplication meaning they require a DType to deserialise.

Commit:f9dd4f4
Author:Nicholas Gates
Committer:GitHub

DType Serialization (#298) * Clean up DType serde * Create build-vortex package to unify flatbuffer/protobuffer code generation. * Add protobuf DType definitions. FLUP questions: * Should we remove nullable from DType and define a separate `FieldType { dtype: DType, nullable: bool }`? Recursive types such as Struct and List would then use FieldType. It does introduce an interesting quirk of a nullable null... But maybe that's less annoying that duplicating nullability everywhere? * If we don't want a separate FieldType, we could still pull `nullable` up in both flatbuffer and protobuf definitions. Start of #277

Commit:59ef2a7
Author:Pedro Holanda

We dont really have to keep proto files, start of the substrait extension

This commit does not contain any .proto files.

Commit:3666d5b
Author:Pedro Holanda

Adding substrait as a third party and script to update/gen substrait files