| <!-- |
| 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. |
| |