Don't use ChainedVector as DictEncoding data array unless necessary (#110)
authorJacob Quinn <quinn.jacobd@gmail.com>
Sat, 23 Jan 2021 04:27:09 +0000 (21:27 -0700)
committerGitHub <noreply@github.com>
Sat, 23 Jan 2021 04:27:09 +0000 (21:27 -0700)
commite7cd867c05233fb0b306d99a528d4a1474b9f8a6
tree5cfc146972ccc0cd1f738825456c39be2fdf6332
parent12eb00a2f6b076094fa408853d98ef2415fce1ea
Don't use ChainedVector as DictEncoding data array unless necessary (#110)

Fixes #109. The issue here was when reading arrow record batches with
dict encoded columns, we eagerly used `ChainedVector` for the underlying
array backing the `DictEncoding` in case there were subsequent
record batches that added additional elements to the dict encoding. This
is too eager though, since it's probably common, like for "feather"
files, where the dict encoding values are always known and provided in
the first record batch. In fact, several language implementations don't
even support these kind of "delta" dict updates in subsequent record
batches. This PR, therefore, uses a regular array for the dict encoding
backing for the first record batch, and only promotes to a ChainedVector
if we happen to get a delta update.
src/table.jl