Le 14/06/2021 à 10:54, Simon Perkins a écrit :
> The reason why I am being nit-picky here is I think that having a first class type indicates that it should eventually be supported by all reference implementations. An "well known" extension type I think offers less guarantees which makes it seem more suitable for niche types. What are the requirements imposed on downstream projects by adding new types such as Complex Numbers and Intervals? Hypothetically, does a new first-class type impose a requirement to provide full support for it downstream?
This is not a requirement for downstream projects (for example a dataframe implementation or a database connector), but for Arrow implementations, that is (mostly) the code that lives in the Apache Arrow repository. There are a number of them:
https://arrow.apache.org/docs/status.html
Or, does adding a type simply involve exposing a new Arrow Type (the representation) in the respective language (C++/Java/Rust) that downstream projects may choose to support or ignore?
Yes.
Java/Rust may not have a native Complex Type for example, but this isn't Arrow's responsibility -- it simply provides it's own type that the language/project should interpret.
Having a native complex type isn't a requirement. A complex type is trivially expressed in (almost?) any language as a struct, anyway.
Regards Antoine.