<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
-->

# DataFusion Java 0.1.0 Changelog

This release consists of 48 commits from 2 contributors. See credits at the end of this changelog for more information.

**Breaking changes:**

- feat(udf)!: switch ScalarFunction.evaluate to ColumnarValue API (closes #62) [#64](https://github.com/apache/datafusion-java/pull/64) (andygrove)

**Fixed bugs:**

- fix(udf): declare scalar UDF signatures with Field, not ArrowType [#59](https://github.com/apache/datafusion-java/pull/59) (LantaoJin)

**Implemented enhancements:**

- feat: initial seed of Apache DataFusion Java bindings [#1](https://github.com/apache/datafusion-java/pull/1) (andygrove)
- feat(proto): generate datafusion-proto Java classes at build time [#9](https://github.com/apache/datafusion-java/pull/9) (andygrove)
- feat(parquet): expose ParquetReadOptions via registerParquet and readParquet [#18](https://github.com/apache/datafusion-java/pull/18) (andygrove)
- feat(dataframe): add select/filter/count/show methods [#19](https://github.com/apache/datafusion-java/pull/19) (andygrove)
- feat(proto): execute Java-built protobuf plans via SessionContext [#13](https://github.com/apache/datafusion-java/pull/13) (andygrove)
- feat(csv): expose CsvReadOptions via registerCsv and readCsv [#21](https://github.com/apache/datafusion-java/pull/21) (LantaoJin)
- feat(write): add DataFrame.writeParquet with ParquetWriteOptions [#27](https://github.com/apache/datafusion-java/pull/27) (andygrove)
- feat: configure SessionContext and RuntimeEnv via builder [#28](https://github.com/apache/datafusion-java/pull/28) (andygrove)
- feat(dataframe): add limit, distinct, dropColumns, withColumnRenamed [#30](https://github.com/apache/datafusion-java/pull/30) (andygrove)
- feat(builder): expose ConfigOptions.set/get as setOption / setOptions / getOption [#49](https://github.com/apache/datafusion-java/pull/49) (LantaoJin)
- feat(json): expose NdJsonReadOptions via registerJson and readJson [#47](https://github.com/apache/datafusion-java/pull/47) (LantaoJin)
- feat(dataframe): expose withColumn and unnestColumns [#54](https://github.com/apache/datafusion-java/pull/54) (LantaoJin)
- feat: add Java scalar UDF support [#46](https://github.com/apache/datafusion-java/pull/46) (andygrove)
- feat(arrow): expose Arrow IPC reader via registerArrow and readArrow [#52](https://github.com/apache/datafusion-java/pull/52) (LantaoJin)
- feat(dataframe): add writeCsv with CsvWriteOptions [#53](https://github.com/apache/datafusion-java/pull/53) (LantaoJin)
- feat(dataframe): add executeStream(allocator) for incremental batch iteration [#51](https://github.com/apache/datafusion-java/pull/51) (LantaoJin)
- feat(avro): expose Avro reader via registerAvro and readAvro [#60](https://github.com/apache/datafusion-java/pull/60) (LantaoJin)
- feat(dataframe): add writeJson with JsonWriteOptions [#61](https://github.com/apache/datafusion-java/pull/61) (LantaoJin)
- feat(datasource): add Java-implemented data sources [#65](https://github.com/apache/datafusion-java/pull/65) (andygrove)
- feat(dataframe): add schema, explain, cache, and describe introspection methods [#71](https://github.com/apache/datafusion-java/pull/71) (LantaoJin)
- feat(session): register object_store backends on SessionContextBuilder [#73](https://github.com/apache/datafusion-java/pull/73) (LantaoJin)
- feat(dataframe): add join, joinOn, and JoinType [#72](https://github.com/apache/datafusion-java/pull/72) (LantaoJin)
- feat(dataframe): expose sort and repartition [#66](https://github.com/apache/datafusion-java/pull/66) (LantaoJin)
- feat: typed DataFusionException hierarchy across the JNI boundary [#81](https://github.com/apache/datafusion-java/pull/81) (LantaoJin)
- feat(session): configure DataFusion's built-in CacheManager from Java [#78](https://github.com/apache/datafusion-java/pull/78) (LantaoJin)
- feat(metrics): add SessionContext.memoryUsage and runtimeStats [#85](https://github.com/apache/datafusion-java/pull/85) (LantaoJin)
- feat(loader): bundle native library inside the JAR [#77](https://github.com/apache/datafusion-java/pull/77) (andygrove)

**Documentation updates:**

- docs: replace roadmap with project-status checklist [#20](https://github.com/apache/datafusion-java/pull/20) (andygrove)
- docs: add GitHub issue and PR templates [#23](https://github.com/apache/datafusion-java/pull/23) (andygrove)
- docs: add Sphinx documentation site with user and contributor guides [#24](https://github.com/apache/datafusion-java/pull/24) (andygrove)
- docs: publish Javadoc as part of the User Guide [#31](https://github.com/apache/datafusion-java/pull/31) (andygrove)
- docs: remove project-status checklist [#34](https://github.com/apache/datafusion-java/pull/34) (andygrove)

**Other:**

- chore: remove protected_branches block and format workflow [#7](https://github.com/apache/datafusion-java/pull/7) (andygrove)
- chore(.asf.yaml): null out main branch protection to clear stale rules [#11](https://github.com/apache/datafusion-java/pull/11) (andygrove)
- ci: add build workflow that runs make test [#15](https://github.com/apache/datafusion-java/pull/15) (andygrove)
- ci: replace disallowed third-party actions in build workflow [#16](https://github.com/apache/datafusion-java/pull/16) (andygrove)
- ci: publish docs site to datafusion.apache.org/java/ [#26](https://github.com/apache/datafusion-java/pull/26) (andygrove)
- refactor: pass csv and parquet read options via protobuf [#29](https://github.com/apache/datafusion-java/pull/29) (andygrove)
- build: add examples module on a multi-module Maven build [#32](https://github.com/apache/datafusion-java/pull/32) (andygrove)
- chore(release): add ASF release scripts for source tarballs [#76](https://github.com/apache/datafusion-java/pull/76) (andygrove)
- chore(release): add multi-platform release JAR build pipeline [#87](https://github.com/apache/datafusion-java/pull/87) (andygrove)

## Credits

Thank you to everyone who contributed to this release. Here is a breakdown of commits (PRs merged) per contributor.

```
    31	Andy Grove
    17	Lantao Jin
```

Thank you also to everyone who contributed in other ways such as filing issues, reviewing PRs, and providing feedback on this release.

