ironSource / parquetjs

fully asynchronous, pure JavaScript implementation of the Parquet file format
MIT License
351 stars 174 forks source link

Fix decode schema so it can handle arbitrary depth #43

Open ZJONSSON opened 6 years ago

ZJONSSON commented 6 years ago

closes https://github.com/ironSource/parquetjs/issues/42

As we walk the schemaElements we move the schema pointer to the fields property whenever we have num_children > 0 and move the pointer up to the parent when we have defined all the children. Doing this recursively should support any depth.

I apply a trick here to define variables in the field list that are not enumerable - they will not be visible (i.e. will not show up in Object.keys) but still accessible directly. We could clean them up afterwards, but I did not see any problem leaving them in.

Added test that fails on master but works on this PR