You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Produce the storage-only EQL v4 number and boolean types: Integer, Bigint, Boolean, Real, Double #1180
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
coderdan commentedon Oct 17, 2026
Staged: done in
nextby #1163. This stays open untilnextmerges intomain, which closes it.