# `Arrow.Array.Dictionary`

Dictionary-encoded column. The buffer is just the *indices* (a
primitive integer array referencing entries in a dictionary stored
separately, identified by `dictionary_id`).

The dictionary itself is *not* held on the array. It's transmitted in
the IPC stream as a `DictionaryBatch` message and held in the
decoder's session-level registry — `Arrow.Logical.batches_equal?/3`
and similar comparators that need to resolve the underlying values
take the registry as an additional argument.

# `t`

```elixir
@type t() :: %Arrow.Array.Dictionary{
  dictionary_id: non_neg_integer(),
  indices: Arrow.Array.t()
}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
