Skip to content

Produce the storage-only EQL v4 number and boolean types: Integer, Bigint, Boolean, Real, Double #1180

Open

Description

@coderdan

Part of #1130, which keeps every type that needs a term or a value kind vitaminc 0.5 lacks.

Problem

The engine can't write any number or boolean EQL type, so a Go field such as Visits int32 has nowhere to go. Most of these types wait for vitaminc 0.6: the order terms, float equality, integer equality (which moves to one shared PRF domain) and the smallint, date, timestamp and numeric kinds. The storage-only types need none of that. They hold a ciphertext and no terms, and vitaminc 0.5 already has their value kinds.

Proposal

  • Make the storage-only EQL v4 types Integer, Bigint, Boolean, Real and Double producible, each from its own plaintext type (Int32, Int64, Bool, Float32, Float64). Each plaintext type seals vitaminc's tagged leaf and opens only its own tag.
  • Refuse a plaintext of another kind or width, through both the typed and the by-name entry points, and in stashgen (int64 into Integer, float64 into Real).
  • Keep IntegerEq and BigintEq unproducible until vitaminc 0.6, and give a reason for every type that stays unproducible.
  • Prove the round trip in PostgreSQL against an eql_v4 install: store each type, read it back, decrypt it, and get "operator is not supported" for a comparison on a storage-only column.

Activity

  1. self-assigned this
    on Oct 13, 2026
  2. added
    StagedDone in the next branch; closes when next merges into main
    on Oct 17, 2026
  3. coderdan commented on Oct 17, 2026

    @coderdan
    ContributorAuthor

    Staged: done in next by #1163. This stays open until next merges into main, which closes it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

SDKStagedDone in the next branch; closes when next merges into mainenhancementNew feature or requestrustPull requests that update Rust code

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions