Big refactoring to simplify code and implement more parts of the spec (#26)
authorJacob Quinn <quinn.jacobd@gmail.com>
Thu, 1 Oct 2020 05:03:14 +0000 (23:03 -0600)
committerJacob Quinn <quinn.jacobd@gmail.com>
Sat, 3 Oct 2020 08:06:24 +0000 (02:06 -0600)
commit2082d454fc23bdad8130e75299537b611b7f6f37
tree0ce627e469879886d77a43172c7579282debd938
parentd90cc595a3e7c0953b23c9eef590d38e624e3b49
Big refactoring to simplify code and implement more parts of the spec (#26)

* Big refactoring to simplify code and implement more parts of the spec

In particular this PR:
  * Changes the flow of writing so that input columns are converted to
  their "arrow" equivalent, most of the time lazily, so that the actual
  writing is much simpler and just deals with each array type
  * Introduces an ArrowTypes module that defines the ArrowType trait,
  which types can overload to signal what kind of arrow type they should
  be converted to. This isn't super fleshed out quite yet as we need to
  figure out the acutal requirements for the different arrow types, but
  it's a start
  * Support reading/writing compressed arrow buffers automatically
  (reading) and via keyword arg (writing, `compress=:lz4` or
  `compress=:zstd`
  * support nested dict encoding (fixes #15)
  * fixes #24; not exactly sure what the issue was, but it doesn't
  happen on this branch
  * reorganizes tests so that for each kind of "table", we do IPC test,
  compressed buffers test, and file test
15 files changed:
.travis.yml
Project.toml
src/Arrow.jl
src/FlatBuffers/FlatBuffers.jl
src/arraytypes.jl
src/arrowtypes.jl [new file with mode: 0644]
src/eltypes.jl
src/metadata/Message.jl
src/metadata/Schema.jl
src/table.jl
src/utils.jl
src/write.jl
test/arrowjson.jl
test/runtests.jl
test/testtables.jl [new file with mode: 0644]