You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datafusion.apache.org by gi...@apache.org on 2026/05/19 22:06:00 UTC
(datafusion-java) branch asf-site updated: Publish built docs triggered by 89d5496d2d1f008f6c1fe38d1dc75414fb986f64
This is an automated email from the ASF dual-hosted git repository.
github-actions[bot] pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/datafusion-java.git
The following commit(s) were added to refs/heads/asf-site by this push:
new 498944b Publish built docs triggered by 89d5496d2d1f008f6c1fe38d1dc75414fb986f64
498944b is described below
commit 498944b3eeba3fd9c4f721c246696449818249bb
Author: github-actions[bot] <gi...@users.noreply.github.com>
AuthorDate: Tue May 19 22:05:54 2026 +0000
Publish built docs triggered by 89d5496d2d1f008f6c1fe38d1dc75414fb986f64
---
.doctrees/environment.pickle | Bin 48209 -> 51646 bytes
.doctrees/user-guide/index.doctree | Bin 7305 -> 7338 bytes
.doctrees/user-guide/table-provider.doctree | Bin 0 -> 20129 bytes
_sources/user-guide/index.md.txt | 1 +
_sources/user-guide/table-provider.md.txt | 118 ++++++++++++++
api/allclasses-index.html | 89 ++++++----
api/allpackages-index.html | 4 +-
api/help-doc.html | 4 +-
api/index-all.html | 138 +++++++++++++++-
api/index.html | 4 +-
api/member-search-index.js | 2 +-
api/org/apache/datafusion/ArrowReadOptions.html | 4 +-
...{ArrowReadOptions.html => AvroReadOptions.html} | 45 +++---
api/org/apache/datafusion/ColumnarValue.Array.html | 4 +-
.../apache/datafusion/ColumnarValue.Scalar.html | 4 +-
api/org/apache/datafusion/ColumnarValue.html | 4 +-
api/org/apache/datafusion/CsvReadOptions.html | 4 +-
.../{CsvReadOptions.html => CsvWriteOptions.html} | 180 +++++++++++----------
api/org/apache/datafusion/DataFrame.html | 178 +++++++++++++++-----
api/org/apache/datafusion/FileCompressionType.html | 4 +-
...dJsonReadOptions.html => JsonWriteOptions.html} | 97 ++++++-----
api/org/apache/datafusion/NativeLibraryLoader.html | 4 +-
api/org/apache/datafusion/NdJsonReadOptions.html | 4 +-
api/org/apache/datafusion/ParquetReadOptions.html | 4 +-
api/org/apache/datafusion/ParquetWriteOptions.html | 4 +-
api/org/apache/datafusion/ScalarFunction.html | 4 +-
api/org/apache/datafusion/ScalarFunctionArgs.html | 4 +-
api/org/apache/datafusion/ScalarUdf.html | 4 +-
api/org/apache/datafusion/SessionContext.html | 115 +++++++++++--
.../apache/datafusion/SessionContextBuilder.html | 4 +-
...tWriteOptions.html => SimpleTableProvider.html} | 101 +++++++-----
api/org/apache/datafusion/TableProvider.html | 169 +++++++++++++++++++
api/org/apache/datafusion/UnnestOptions.html | 4 +-
api/org/apache/datafusion/Volatility.html | 4 +-
.../datafusion/class-use/ArrowReadOptions.html | 4 +-
...{ArrowReadOptions.html => AvroReadOptions.html} | 41 +++--
.../datafusion/class-use/ColumnarValue.Array.html | 4 +-
.../datafusion/class-use/ColumnarValue.Scalar.html | 4 +-
.../apache/datafusion/class-use/ColumnarValue.html | 4 +-
.../datafusion/class-use/CsvReadOptions.html | 4 +-
.../datafusion/class-use/CsvWriteOptions.html | 136 ++++++++++++++++
api/org/apache/datafusion/class-use/DataFrame.html | 15 +-
.../datafusion/class-use/FileCompressionType.html | 14 +-
...quetWriteOptions.html => JsonWriteOptions.html} | 41 ++---
.../datafusion/class-use/NativeLibraryLoader.html | 4 +-
.../datafusion/class-use/NdJsonReadOptions.html | 4 +-
.../datafusion/class-use/ParquetReadOptions.html | 4 +-
.../datafusion/class-use/ParquetWriteOptions.html | 4 +-
.../datafusion/class-use/ScalarFunction.html | 4 +-
.../datafusion/class-use/ScalarFunctionArgs.html | 4 +-
api/org/apache/datafusion/class-use/ScalarUdf.html | 4 +-
.../datafusion/class-use/SessionContext.html | 4 +-
.../class-use/SessionContextBuilder.html | 4 +-
...LibraryLoader.html => SimpleTableProvider.html} | 14 +-
.../{ScalarFunction.html => TableProvider.html} | 67 +++-----
.../apache/datafusion/class-use/UnnestOptions.html | 4 +-
.../apache/datafusion/class-use/Volatility.html | 4 +-
api/org/apache/datafusion/internal/JniBridge.html | 26 ++-
.../datafusion/internal/class-use/JniBridge.html | 4 +-
.../datafusion/internal/package-summary.html | 4 +-
.../apache/datafusion/internal/package-tree.html | 4 +-
.../apache/datafusion/internal/package-use.html | 4 +-
api/org/apache/datafusion/package-summary.html | 85 ++++++----
api/org/apache/datafusion/package-tree.html | 9 +-
api/org/apache/datafusion/package-use.html | 60 ++++---
.../apache/datafusion/proto/SchemaConverter.html | 4 +-
.../proto/class-use/SchemaConverter.html | 4 +-
.../apache/datafusion/proto/package-summary.html | 4 +-
api/org/apache/datafusion/proto/package-tree.html | 4 +-
api/org/apache/datafusion/proto/package-use.html | 4 +-
api/overview-summary.html | 4 +-
api/overview-tree.html | 9 +-
api/type-search-index.js | 2 +-
objects.inv | Bin 553 -> 577 bytes
searchindex.js | 2 +-
user-guide/api-reference.html | 7 +-
user-guide/dataframe.html | 1 +
user-guide/index.html | 2 +
user-guide/installation.html | 1 +
user-guide/parquet.html | 1 +
user-guide/proto-plans.html | 1 +
user-guide/quickstart.html | 1 +
user-guide/scalar-udf.html | 7 +-
user-guide/sessioncontext.html | 1 +
.../{quickstart.html => table-provider.html} | 158 ++++++++++++------
85 files changed, 1545 insertions(+), 569 deletions(-)
diff --git a/.doctrees/environment.pickle b/.doctrees/environment.pickle
index 7e04775..138a357 100644
Binary files a/.doctrees/environment.pickle and b/.doctrees/environment.pickle differ
diff --git a/.doctrees/user-guide/index.doctree b/.doctrees/user-guide/index.doctree
index 0225657..19d493e 100644
Binary files a/.doctrees/user-guide/index.doctree and b/.doctrees/user-guide/index.doctree differ
diff --git a/.doctrees/user-guide/table-provider.doctree b/.doctrees/user-guide/table-provider.doctree
new file mode 100644
index 0000000..473a098
Binary files /dev/null and b/.doctrees/user-guide/table-provider.doctree differ
diff --git a/_sources/user-guide/index.md.txt b/_sources/user-guide/index.md.txt
index 599340c..85c2bed 100644
--- a/_sources/user-guide/index.md.txt
+++ b/_sources/user-guide/index.md.txt
@@ -38,6 +38,7 @@ dataframe
parquet
proto-plans
scalar-udf
+table-provider
api-reference
```
diff --git a/_sources/user-guide/table-provider.md.txt b/_sources/user-guide/table-provider.md.txt
new file mode 100644
index 0000000..7eed07d
--- /dev/null
+++ b/_sources/user-guide/table-provider.md.txt
@@ -0,0 +1,118 @@
+<!--
+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.
+-->
+
+# Java table providers
+
+`SessionContext.registerTable(name, provider)` registers a Java-implemented
+table. SQL queries that reference `name` call back into your `TableProvider`
+to fetch batches. Data flows from Java to native code via the Arrow C Data
+Interface, so there are no extra copies in the hot path. This is the Java
+counterpart to DataFusion's Rust `SessionContext::register_table`.
+
+## Implement
+
+```java
+import org.apache.arrow.memory.BufferAllocator;
+import org.apache.arrow.vector.ipc.ArrowReader;
+import org.apache.arrow.vector.types.pojo.Schema;
+import org.apache.datafusion.TableProvider;
+
+public final class MyTable implements TableProvider {
+ private final Schema schema;
+
+ public MyTable(Schema schema) {
+ this.schema = schema;
+ }
+
+ @Override public Schema schema() { return schema; }
+
+ @Override
+ public ArrowReader scan(BufferAllocator allocator) {
+ // Return a fresh ArrowReader. The reader must allocate its buffers
+ // from `allocator` (or a child of it) — the framework needs the
+ // allocator hierarchy to share a root.
+ return openMyReader(allocator);
+ }
+}
+```
+
+For the common case of "I have a schema and a function that returns an
+`ArrowReader`," `SimpleTableProvider` packages those two into a ready-made
+`TableProvider` without having to subclass:
+
+```java
+TableProvider t = new SimpleTableProvider(mySchema(), allocator -> openMyReader(allocator));
+ctx.registerTable("t", t);
+```
+
+## Register and query
+
+```java
+try (SessionContext ctx = new SessionContext();
+ BufferAllocator allocator = new RootAllocator()) {
+ ctx.registerTable("t", new MyTable(mySchema()));
+
+ try (DataFrame df = ctx.sql("SELECT * FROM t WHERE x > 10");
+ ArrowReader r = df.collect(allocator)) {
+ while (r.loadNextBatch()) {
+ // ...
+ }
+ }
+}
+```
+
+## Contract
+
+- `schema()` is called exactly once, on the caller's thread, at registration
+ time. Throwing from it aborts registration with the original exception.
+- `scan(allocator)` is called once per SQL query that touches the table, on a
+ worker thread. It must return a fresh, independent `ArrowReader` on every
+ call — this is what makes self-joins and `UNION ALL` over the same table
+ work.
+- The reader returned by `scan` must allocate its buffers from the supplied
+ `allocator` (or a child of it). Arrow Java's `Data.exportArrayStream`
+ requires the reader's allocator and the export allocator to share a root.
+- The returned reader's schema must equal the schema returned by `schema()`.
+ A mismatch fails the query.
+- You do not need to close the returned reader yourself. The framework
+ installs a release callback that closes it when the underlying FFI stream
+ is dropped.
+
+## Errors
+
+Exceptions thrown from `scan()` or from the returned reader surface in the
+`RuntimeException` raised by `collect()`. The error message includes the Java
+exception class and `getMessage()`, in the same format used for scalar UDF
+errors.
+
+## Threading
+
+`SessionContext` is single-threaded, but `scan(allocator)` may be invoked from
+any DataFusion worker thread. If your implementation maintains mutable state
+across scans, synchronise it.
+
+## Limitations (v1)
+
+- Single-partition scans only. DataFusion sees the table as one partition;
+ multi-partition parallelism is a follow-up.
+- No projection or filter pushdown. DataFusion applies projection and
+ filters on top of the batches you return; the Java side always sees the
+ full schema. The interface is intentionally minimal so it can grow these
+ capabilities (as default methods) without breaking existing implementations.
+- No `deregisterTable`. Tables live until the `SessionContext` is closed.
diff --git a/api/allclasses-index.html b/api/allclasses-index.html
index 6279c98..a0a8054 100644
--- a/api/allclasses-index.html
+++ b/api/allclasses-index.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>All Classes and Interfaces (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="class index">
<meta name="generator" content="javadoc/AllClassesIndexWriter">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
@@ -65,23 +65,31 @@ loadScripts(document, 'script');</script>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Configuration knobs for Arrow IPC sources passed to <a href="org/apache/datafusion/SessionContext.html#registerArrow(java.lang.String,java.lang.String,org.apache.datafusion.ArrowReadOptions)"><code>SessionContext.registerArrow(String, String, ArrowReadOptions)</code></a> and <a href="org/apache/datafusion/SessionContext.html#readArrow(java.lang.String,org.apache.datafusion.ArrowReadOptions)"><code>SessionContext.readArrow(String, ArrowReadOptions)</code></a>.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab1"><a href="org/apache/datafusion/ColumnarValue.html" title="interface in org.apache.datafusion">ColumnarValue</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab1">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/datafusion/AvroReadOptions.html" title="class in org.apache.datafusion">AvroReadOptions</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="block">Configuration knobs for Avro sources passed to <a href="org/apache/datafusion/SessionContext.html#registerAvro(java.lang.String,java.lang.String,org.apache.datafusion.AvroReadOptions)"><code>SessionContext.registerAvro(String, String, AvroReadOptions)</code></a> and <a href="org/apache/datafusion/SessionContext.html#readAvro(java.lang.String,org.apache.datafusion.AvroReadOptions)"><code>SessionContext.readAvro(String, AvroReadOptions)</code></a>.</div>
+</div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab1"><a href="org/apache/datafusion/ColumnarValue.html" title="interface in org.apache.datafusion">ColumnarValue</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab1">
<div class="block">The value of a scalar UDF argument or result: either a per-row <a href="org/apache/datafusion/ColumnarValue.Array.html" title="class in org.apache.datafusion"><code>ColumnarValue.Array</code></a> of length <code>
rowCount</code>, or a <a href="org/apache/datafusion/ColumnarValue.Scalar.html" title="class in org.apache.datafusion"><code>ColumnarValue.Scalar</code></a> (length-1 vector) that the framework broadcasts.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab4"><a href="org/apache/datafusion/ColumnarValue.Array.html" title="class in org.apache.datafusion">ColumnarValue.Array</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab4">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab4"><a href="org/apache/datafusion/ColumnarValue.Array.html" title="class in org.apache.datafusion">ColumnarValue.Array</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab4">
<div class="block">Per-row Arrow vector of length equal to the batch row count.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab4"><a href="org/apache/datafusion/ColumnarValue.Scalar.html" title="class in org.apache.datafusion">ColumnarValue.Scalar</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab4">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab4"><a href="org/apache/datafusion/ColumnarValue.Scalar.html" title="class in org.apache.datafusion">ColumnarValue.Scalar</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab4">
<div class="block">Length-1 Arrow vector representing a single value broadcast across all rows.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/datafusion/CsvReadOptions.html" title="class in org.apache.datafusion">CsvReadOptions</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/datafusion/CsvReadOptions.html" title="class in org.apache.datafusion">CsvReadOptions</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Configuration knobs for CSV sources passed to <a href="org/apache/datafusion/SessionContext.html#registerCsv(java.lang.String,java.lang.String,org.apache.datafusion.CsvReadOptions)"><code>SessionContext.registerCsv(String, String, CsvReadOptions)</code></a> and <a href="org/apache/datafusion/SessionContext.html#readCsv(java.lang.String,org.apache.datafusion.CsvReadOptions)"><code>SessionContext.readCsv(String, CsvReadOptions)</code></a>.</div>
</div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/datafusion/CsvWriteOptions.html" title="class in org.apache.datafusion">CsvWriteOptions</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="block">Configuration knobs for writing CSV, passed to <a href="org/apache/datafusion/DataFrame.html#writeCsv(java.lang.String,org.apache.datafusion.CsvWriteOptions)"><code>DataFrame.writeCsv(String, CsvWriteOptions)</code></a>.</div>
+</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/datafusion/DataFrame.html" title="class in org.apache.datafusion">DataFrame</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">A lazy representation of a query plan, mirroring the Rust DataFusion <code>DataFrame</code>.</div>
@@ -94,54 +102,67 @@ loadScripts(document, 'script');</script>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Internal trampoline invoked from native code on every UDF call.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/datafusion/NativeLibraryLoader.html" title="class in org.apache.datafusion">NativeLibraryLoader</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/datafusion/NdJsonReadOptions.html" title="class in org.apache.datafusion">NdJsonReadOptions</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
-<div class="block">Configuration knobs for newline-delimited JSON sources passed to <a href="org/apache/datafusion/SessionContext.html#registerJson(java.lang.String,java.lang.String,org.apache.datafusion.NdJsonReadOptions)"><code>SessionContext.registerJson(String, String, NdJsonReadOptions)</code></a> and <a href="org/apache/datafusion/SessionContext.html#readJson(java.lang.String,org.apache.datafusion.NdJsonReadOptions)"><code>SessionContext.readJson(String, NdJsonReadOptions)</code></ [...]
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/datafusion/JsonWriteOptions.html" title="class in org.apache.datafusion">JsonWriteOptions</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="block">Configuration knobs for writing JSON, passed to <a href="org/apache/datafusion/DataFrame.html#writeJson(java.lang.String,org.apache.datafusion.JsonWriteOptions)"><code>DataFrame.writeJson(String, JsonWriteOptions)</code></a>.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/datafusion/ParquetReadOptions.html" title="class in org.apache.datafusion">ParquetReadOptions</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/datafusion/NativeLibraryLoader.html" title="class in org.apache.datafusion">NativeLibraryLoader</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/datafusion/NdJsonReadOptions.html" title="class in org.apache.datafusion">NdJsonReadOptions</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
-<div class="block">Configuration knobs for parquet sources passed to <a href="org/apache/datafusion/SessionContext.html#registerParquet(java.lang.String,java.lang.String,org.apache.datafusion.ParquetReadOptions)"><code>SessionContext.registerParquet(String, String, ParquetReadOptions)</code></a> and <a href="org/apache/datafusion/SessionContext.html#readParquet(java.lang.String,org.apache.datafusion.ParquetReadOptions)"><code>SessionContext.readParquet(String, ParquetReadOptions)</code>< [...]
+<div class="block">Configuration knobs for newline-delimited JSON sources passed to <a href="org/apache/datafusion/SessionContext.html#registerJson(java.lang.String,java.lang.String,org.apache.datafusion.NdJsonReadOptions)"><code>SessionContext.registerJson(String, String, NdJsonReadOptions)</code></a> and <a href="org/apache/datafusion/SessionContext.html#readJson(java.lang.String,org.apache.datafusion.NdJsonReadOptions)"><code>SessionContext.readJson(String, NdJsonReadOptions)</code></ [...]
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/datafusion/ParquetWriteOptions.html" title="class in org.apache.datafusion">ParquetWriteOptions</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/datafusion/ParquetReadOptions.html" title="class in org.apache.datafusion">ParquetReadOptions</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="block">Configuration knobs for parquet sources passed to <a href="org/apache/datafusion/SessionContext.html#registerParquet(java.lang.String,java.lang.String,org.apache.datafusion.ParquetReadOptions)"><code>SessionContext.registerParquet(String, String, ParquetReadOptions)</code></a> and <a href="org/apache/datafusion/SessionContext.html#readParquet(java.lang.String,org.apache.datafusion.ParquetReadOptions)"><code>SessionContext.readParquet(String, ParquetReadOptions)</code>< [...]
+</div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/datafusion/ParquetWriteOptions.html" title="class in org.apache.datafusion">ParquetWriteOptions</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Configuration knobs for writing parquet, passed to <a href="org/apache/datafusion/DataFrame.html#writeParquet(java.lang.String,org.apache.datafusion.ParquetWriteOptions)"><code>DataFrame.writeParquet(String, ParquetWriteOptions)</code></a>.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab1"><a href="org/apache/datafusion/ScalarFunction.html" title="interface in org.apache.datafusion">ScalarFunction</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab1">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab1"><a href="org/apache/datafusion/ScalarFunction.html" title="interface in org.apache.datafusion">ScalarFunction</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab1">
<div class="block">A Java-implemented scalar SQL function.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab4"><a href="org/apache/datafusion/ScalarFunctionArgs.html" title="class in org.apache.datafusion">ScalarFunctionArgs</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab4">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab4"><a href="org/apache/datafusion/ScalarFunctionArgs.html" title="class in org.apache.datafusion">ScalarFunctionArgs</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab4">
<div class="block">Bundle of inputs passed to <a href="org/apache/datafusion/ScalarFunction.html#evaluate(org.apache.arrow.memory.BufferAllocator,org.apache.datafusion.ScalarFunctionArgs)"><code>ScalarFunction.evaluate(org.apache.arrow.memory.BufferAllocator, org.apache.datafusion.ScalarFunctionArgs)</code></a>: the per-arg <a href="org/apache/datafusion/ColumnarValue.html" title="interface in org.apache.datafusion"><code>ColumnarValue</code></a>s
(in declared order) and the batch row count DataFusion is driving.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/datafusion/ScalarUdf.html" title="class in org.apache.datafusion">ScalarUdf</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/datafusion/ScalarUdf.html" title="class in org.apache.datafusion">ScalarUdf</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">A scalar UDF registration handle: pairs a <a href="org/apache/datafusion/ScalarFunction.html" title="interface in org.apache.datafusion"><code>ScalarFunction</code></a> implementation with the metadata
DataFusion needs to dispatch SQL calls to it.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/datafusion/proto/SchemaConverter.html" title="class in org.apache.datafusion.proto">SchemaConverter</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/datafusion/proto/SchemaConverter.html" title="class in org.apache.datafusion.proto">SchemaConverter</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Convert between Arrow Java <code>Schema</code> and the <code>datafusion_common.Schema</code> protobuf shape
used by DataFusion plan messages such as <code>ListingTableScanNode.schema</code>.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/datafusion/SessionContext.html" title="class in org.apache.datafusion">SessionContext</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/datafusion/SessionContext.html" title="class in org.apache.datafusion">SessionContext</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">A DataFusion session context.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/datafusion/SessionContextBuilder.html" title="class in org.apache.datafusion">SessionContextBuilder</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/datafusion/SessionContextBuilder.html" title="class in org.apache.datafusion">SessionContextBuilder</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Builder for a configured <a href="org/apache/datafusion/SessionContext.html" title="class in org.apache.datafusion"><code>SessionContext</code></a>.</div>
</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/datafusion/UnnestOptions.html" title="class in org.apache.datafusion">UnnestOptions</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/datafusion/SimpleTableProvider.html" title="class in org.apache.datafusion">SimpleTableProvider</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="block">A <a href="org/apache/datafusion/TableProvider.html" title="interface in org.apache.datafusion"><code>TableProvider</code></a> that pairs a fixed <code>Schema</code> with a function that opens a fresh
+ <code>ArrowReader</code> for each scan.</div>
+</div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab1"><a href="org/apache/datafusion/TableProvider.html" title="interface in org.apache.datafusion">TableProvider</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab1">
+<div class="block">A Java-implemented table that can be registered with a <a href="org/apache/datafusion/SessionContext.html" title="class in org.apache.datafusion"><code>SessionContext</code></a> via <a href="org/apache/datafusion/SessionContext.html#registerTable(java.lang.String,org.apache.datafusion.TableProvider)"><code>SessionContext.registerTable(String, TableProvider)</code></a>.</div>
+</div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/datafusion/UnnestOptions.html" title="class in org.apache.datafusion">UnnestOptions</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Configuration knobs for <a href="org/apache/datafusion/DataFrame.html#unnestColumns(org.apache.datafusion.UnnestOptions,java.lang.String...)"><code>DataFrame.unnestColumns(UnnestOptions, String...)</code></a>, mirroring
DataFusion's <code>UnnestOptions</code>.</div>
</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab3"><a href="org/apache/datafusion/Volatility.html" title="enum class in org.apache.datafusion">Volatility</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab3">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab3"><a href="org/apache/datafusion/Volatility.html" title="enum class in org.apache.datafusion">Volatility</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab3">
<div class="block">Volatility classification for a UDF.</div>
</div>
</div>
diff --git a/api/allpackages-index.html b/api/allpackages-index.html
index 717d070..f6a967f 100644
--- a/api/allpackages-index.html
+++ b/api/allpackages-index.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>All Packages (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="package index">
<meta name="generator" content="javadoc/AllPackagesIndexWriter">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
diff --git a/api/help-doc.html b/api/help-doc.html
index cc8995e..cb2457c 100644
--- a/api/help-doc.html
+++ b/api/help-doc.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>API Help (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="help">
<meta name="generator" content="javadoc/HelpWriter">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
diff --git a/api/index-all.html b/api/index-all.html
index b19ad23..588e5f9 100644
--- a/api/index-all.html
+++ b/api/index-all.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>Index (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="index">
<meta name="generator" content="javadoc/IndexWriter">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
@@ -80,6 +80,12 @@ loadScripts(document, 'script');</script>
</dd>
<dt><a href="org/apache/datafusion/ArrowReadOptions.html#%3Cinit%3E()" class="member-name-link">ArrowReadOptions()</a> - Constructor for class org.apache.datafusion.<a href="org/apache/datafusion/ArrowReadOptions.html" title="class in org.apache.datafusion">ArrowReadOptions</a></dt>
<dd> </dd>
+<dt><a href="org/apache/datafusion/AvroReadOptions.html" class="type-name-link" title="class in org.apache.datafusion">AvroReadOptions</a> - Class in <a href="org/apache/datafusion/package-summary.html">org.apache.datafusion</a></dt>
+<dd>
+<div class="block">Configuration knobs for Avro sources passed to <a href="org/apache/datafusion/SessionContext.html#registerAvro(java.lang.String,java.lang.String,org.apache.datafusion.AvroReadOptions)"><code>SessionContext.registerAvro(String, String, AvroReadOptions)</code></a> and <a href="org/apache/datafusion/SessionContext.html#readAvro(java.lang.String,org.apache.datafusion.AvroReadOptions)"><code>SessionContext.readAvro(String, AvroReadOptions)</code></a>.</div>
+</dd>
+<dt><a href="org/apache/datafusion/AvroReadOptions.html#%3Cinit%3E()" class="member-name-link">AvroReadOptions()</a> - Constructor for class org.apache.datafusion.<a href="org/apache/datafusion/AvroReadOptions.html" title="class in org.apache.datafusion">AvroReadOptions</a></dt>
+<dd> </dd>
</dl>
<h2 class="title" id="I:B">B</h2>
<dl class="index">
@@ -141,6 +147,12 @@ loadScripts(document, 'script');</script>
</dd>
<dt><a href="org/apache/datafusion/CsvReadOptions.html#%3Cinit%3E()" class="member-name-link">CsvReadOptions()</a> - Constructor for class org.apache.datafusion.<a href="org/apache/datafusion/CsvReadOptions.html" title="class in org.apache.datafusion">CsvReadOptions</a></dt>
<dd> </dd>
+<dt><a href="org/apache/datafusion/CsvWriteOptions.html" class="type-name-link" title="class in org.apache.datafusion">CsvWriteOptions</a> - Class in <a href="org/apache/datafusion/package-summary.html">org.apache.datafusion</a></dt>
+<dd>
+<div class="block">Configuration knobs for writing CSV, passed to <a href="org/apache/datafusion/DataFrame.html#writeCsv(java.lang.String,org.apache.datafusion.CsvWriteOptions)"><code>DataFrame.writeCsv(String, CsvWriteOptions)</code></a>.</div>
+</dd>
+<dt><a href="org/apache/datafusion/CsvWriteOptions.html#%3Cinit%3E()" class="member-name-link">CsvWriteOptions()</a> - Constructor for class org.apache.datafusion.<a href="org/apache/datafusion/CsvWriteOptions.html" title="class in org.apache.datafusion">CsvWriteOptions</a></dt>
+<dd> </dd>
</dl>
<h2 class="title" id="I:D">D</h2>
<dl class="index">
@@ -154,6 +166,10 @@ loadScripts(document, 'script');</script>
</dd>
<dt><a href="org/apache/datafusion/CsvReadOptions.html#delimiter(byte)" class="member-name-link">delimiter(byte)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/CsvReadOptions.html" title="class in org.apache.datafusion">CsvReadOptions</a></dt>
<dd> </dd>
+<dt><a href="org/apache/datafusion/CsvWriteOptions.html#delimiter(byte)" class="member-name-link">delimiter(byte)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/CsvWriteOptions.html" title="class in org.apache.datafusion">CsvWriteOptions</a></dt>
+<dd>
+<div class="block">Field delimiter byte.</div>
+</dd>
<dt><a href="org/apache/datafusion/DataFrame.html#distinct()" class="member-name-link">distinct()</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/DataFrame.html" title="class in org.apache.datafusion">DataFrame</a></dt>
<dd>
<div class="block">Deduplicate rows across all columns.</div>
@@ -179,15 +195,31 @@ loadScripts(document, 'script');</script>
</dd>
<dt><a href="org/apache/datafusion/CsvReadOptions.html#escape(byte)" class="member-name-link">escape(byte)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/CsvReadOptions.html" title="class in org.apache.datafusion">CsvReadOptions</a></dt>
<dd> </dd>
+<dt><a href="org/apache/datafusion/CsvWriteOptions.html#escape(byte)" class="member-name-link">escape(byte)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/CsvWriteOptions.html" title="class in org.apache.datafusion">CsvWriteOptions</a></dt>
+<dd>
+<div class="block">Escape character byte.</div>
+</dd>
<dt><a href="org/apache/datafusion/ScalarFunction.html#evaluate(org.apache.arrow.memory.BufferAllocator,org.apache.datafusion.ScalarFunctionArgs)" class="member-name-link">evaluate(BufferAllocator, ScalarFunctionArgs)</a> - Method in interface org.apache.datafusion.<a href="org/apache/datafusion/ScalarFunction.html" title="interface in org.apache.datafusion">ScalarFunction</a></dt>
<dd>
<div class="block">Compute the function result for one input batch.</div>
</dd>
+<dt><a href="org/apache/datafusion/DataFrame.html#executeStream(org.apache.arrow.memory.BufferAllocator)" class="member-name-link">executeStream(BufferAllocator)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/DataFrame.html" title="class in org.apache.datafusion">DataFrame</a></dt>
+<dd>
+<div class="block">Execute the plan and return its record batches as a streaming <code>ArrowReader</code>.</div>
+</dd>
</dl>
<h2 class="title" id="I:F">F</h2>
<dl class="index">
<dt><a href="org/apache/datafusion/CsvReadOptions.html#fileCompressionType(org.apache.datafusion.FileCompressionType)" class="member-name-link">fileCompressionType(FileCompressionType)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/CsvReadOptions.html" title="class in org.apache.datafusion">CsvReadOptions</a></dt>
<dd> </dd>
+<dt><a href="org/apache/datafusion/CsvWriteOptions.html#fileCompressionType(org.apache.datafusion.FileCompressionType)" class="member-name-link">fileCompressionType(FileCompressionType)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/CsvWriteOptions.html" title="class in org.apache.datafusion">CsvWriteOptions</a></dt>
+<dd>
+<div class="block">Output compression codec.</div>
+</dd>
+<dt><a href="org/apache/datafusion/JsonWriteOptions.html#fileCompressionType(org.apache.datafusion.FileCompressionType)" class="member-name-link">fileCompressionType(FileCompressionType)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/JsonWriteOptions.html" title="class in org.apache.datafusion">JsonWriteOptions</a></dt>
+<dd>
+<div class="block">Output compression codec.</div>
+</dd>
<dt><a href="org/apache/datafusion/NdJsonReadOptions.html#fileCompressionType(org.apache.datafusion.FileCompressionType)" class="member-name-link">fileCompressionType(FileCompressionType)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/NdJsonReadOptions.html" title="class in org.apache.datafusion">NdJsonReadOptions</a></dt>
<dd> </dd>
<dt><a href="org/apache/datafusion/FileCompressionType.html" class="type-name-link" title="enum class in org.apache.datafusion">FileCompressionType</a> - Enum Class in <a href="org/apache/datafusion/package-summary.html">org.apache.datafusion</a></dt>
@@ -196,6 +228,8 @@ loadScripts(document, 'script');</script>
</dd>
<dt><a href="org/apache/datafusion/ArrowReadOptions.html#fileExtension(java.lang.String)" class="member-name-link">fileExtension(String)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/ArrowReadOptions.html" title="class in org.apache.datafusion">ArrowReadOptions</a></dt>
<dd> </dd>
+<dt><a href="org/apache/datafusion/AvroReadOptions.html#fileExtension(java.lang.String)" class="member-name-link">fileExtension(String)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/AvroReadOptions.html" title="class in org.apache.datafusion">AvroReadOptions</a></dt>
+<dd> </dd>
<dt><a href="org/apache/datafusion/CsvReadOptions.html#fileExtension(java.lang.String)" class="member-name-link">fileExtension(String)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/CsvReadOptions.html" title="class in org.apache.datafusion">CsvReadOptions</a></dt>
<dd> </dd>
<dt><a href="org/apache/datafusion/NdJsonReadOptions.html#fileExtension(java.lang.String)" class="member-name-link">fileExtension(String)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/NdJsonReadOptions.html" title="class in org.apache.datafusion">NdJsonReadOptions</a></dt>
@@ -242,6 +276,10 @@ loadScripts(document, 'script');</script>
</dd>
<dt><a href="org/apache/datafusion/CsvReadOptions.html#hasHeader(boolean)" class="member-name-link">hasHeader(boolean)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/CsvReadOptions.html" title="class in org.apache.datafusion">CsvReadOptions</a></dt>
<dd> </dd>
+<dt><a href="org/apache/datafusion/CsvWriteOptions.html#hasHeader(boolean)" class="member-name-link">hasHeader(boolean)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/CsvWriteOptions.html" title="class in org.apache.datafusion">CsvWriteOptions</a></dt>
+<dd>
+<div class="block">Whether to write a header row.</div>
+</dd>
</dl>
<h2 class="title" id="I:I">I</h2>
<dl class="index">
@@ -257,6 +295,11 @@ loadScripts(document, 'script');</script>
<dd>
<div class="block">Invoke a scalar UDF for one batch.</div>
</dd>
+<dt><a href="org/apache/datafusion/internal/JniBridge.html#invokeTableScan(org.apache.datafusion.TableProvider,long)" class="member-name-link">invokeTableScan(TableProvider, long)</a> - Static method in class org.apache.datafusion.internal.<a href="org/apache/datafusion/internal/JniBridge.html" title="class in org.apache.datafusion.internal">JniBridge</a></dt>
+<dd>
+<div class="block">Open a fresh batch stream from a Java <a href="org/apache/datafusion/TableProvider.html" title="interface in org.apache.datafusion"><code>TableProvider</code></a> and export it through the supplied
+ Arrow C Data Interface address.</div>
+</dd>
</dl>
<h2 class="title" id="I:J">J</h2>
<dl class="index">
@@ -264,6 +307,12 @@ loadScripts(document, 'script');</script>
<dd>
<div class="block">Internal trampoline invoked from native code on every UDF call.</div>
</dd>
+<dt><a href="org/apache/datafusion/JsonWriteOptions.html" class="type-name-link" title="class in org.apache.datafusion">JsonWriteOptions</a> - Class in <a href="org/apache/datafusion/package-summary.html">org.apache.datafusion</a></dt>
+<dd>
+<div class="block">Configuration knobs for writing JSON, passed to <a href="org/apache/datafusion/DataFrame.html#writeJson(java.lang.String,org.apache.datafusion.JsonWriteOptions)"><code>DataFrame.writeJson(String, JsonWriteOptions)</code></a>.</div>
+</dd>
+<dt><a href="org/apache/datafusion/JsonWriteOptions.html#%3Cinit%3E()" class="member-name-link">JsonWriteOptions()</a> - Constructor for class org.apache.datafusion.<a href="org/apache/datafusion/JsonWriteOptions.html" title="class in org.apache.datafusion">JsonWriteOptions</a></dt>
+<dd> </dd>
</dl>
<h2 class="title" id="I:L">L</h2>
<dl class="index">
@@ -307,6 +356,10 @@ loadScripts(document, 'script');</script>
<dd> </dd>
<dt><a href="org/apache/datafusion/CsvReadOptions.html#newlinesInValues(boolean)" class="member-name-link">newlinesInValues(boolean)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/CsvReadOptions.html" title="class in org.apache.datafusion">CsvReadOptions</a></dt>
<dd> </dd>
+<dt><a href="org/apache/datafusion/CsvWriteOptions.html#nullValue(java.lang.String)" class="member-name-link">nullValue(String)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/CsvWriteOptions.html" title="class in org.apache.datafusion">CsvWriteOptions</a></dt>
+<dd>
+<div class="block">String to write for SQL NULL values.</div>
+</dd>
</dl>
<h2 class="title" id="I:O">O</h2>
<dl class="index">
@@ -333,6 +386,14 @@ loadScripts(document, 'script');</script>
</dd>
<dt><a href="org/apache/datafusion/ParquetWriteOptions.html#%3Cinit%3E()" class="member-name-link">ParquetWriteOptions()</a> - Constructor for class org.apache.datafusion.<a href="org/apache/datafusion/ParquetWriteOptions.html" title="class in org.apache.datafusion">ParquetWriteOptions</a></dt>
<dd> </dd>
+<dt><a href="org/apache/datafusion/CsvWriteOptions.html#partitionCols(java.lang.String...)" class="member-name-link">partitionCols(String...)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/CsvWriteOptions.html" title="class in org.apache.datafusion">CsvWriteOptions</a></dt>
+<dd>
+<div class="block">Hive-style partition columns.</div>
+</dd>
+<dt><a href="org/apache/datafusion/JsonWriteOptions.html#partitionCols(java.lang.String...)" class="member-name-link">partitionCols(String...)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/JsonWriteOptions.html" title="class in org.apache.datafusion">JsonWriteOptions</a></dt>
+<dd>
+<div class="block">Hive-style partition columns.</div>
+</dd>
<dt><a href="org/apache/datafusion/UnnestOptions.html#preserveNulls()" class="member-name-link">preserveNulls()</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/UnnestOptions.html" title="class in org.apache.datafusion">UnnestOptions</a></dt>
<dd>
<div class="block">The current <code>preserveNulls</code> setting.</div>
@@ -347,6 +408,10 @@ loadScripts(document, 'script');</script>
<dl class="index">
<dt><a href="org/apache/datafusion/CsvReadOptions.html#quote(byte)" class="member-name-link">quote(byte)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/CsvReadOptions.html" title="class in org.apache.datafusion">CsvReadOptions</a></dt>
<dd> </dd>
+<dt><a href="org/apache/datafusion/CsvWriteOptions.html#quote(byte)" class="member-name-link">quote(byte)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/CsvWriteOptions.html" title="class in org.apache.datafusion">CsvWriteOptions</a></dt>
+<dd>
+<div class="block">Quote character byte.</div>
+</dd>
</dl>
<h2 class="title" id="I:R">R</h2>
<dl class="index">
@@ -358,6 +423,14 @@ loadScripts(document, 'script');</script>
<dd>
<div class="block">Read an Arrow IPC file as a <a href="org/apache/datafusion/DataFrame.html" title="class in org.apache.datafusion"><code>DataFrame</code></a> with the supplied <a href="org/apache/datafusion/ArrowReadOptions.html" title="class in org.apache.datafusion"><code>ArrowReadOptions</code></a>.</div>
</dd>
+<dt><a href="org/apache/datafusion/SessionContext.html#readAvro(java.lang.String)" class="member-name-link">readAvro(String)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/SessionContext.html" title="class in org.apache.datafusion">SessionContext</a></dt>
+<dd>
+<div class="block">Read an Avro file as a <a href="org/apache/datafusion/DataFrame.html" title="class in org.apache.datafusion"><code>DataFrame</code></a> without registering it.</div>
+</dd>
+<dt><a href="org/apache/datafusion/SessionContext.html#readAvro(java.lang.String,org.apache.datafusion.AvroReadOptions)" class="member-name-link">readAvro(String, AvroReadOptions)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/SessionContext.html" title="class in org.apache.datafusion">SessionContext</a></dt>
+<dd>
+<div class="block">Read an Avro file as a <a href="org/apache/datafusion/DataFrame.html" title="class in org.apache.datafusion"><code>DataFrame</code></a> with the supplied <a href="org/apache/datafusion/AvroReadOptions.html" title="class in org.apache.datafusion"><code>AvroReadOptions</code></a>.</div>
+</dd>
<dt><a href="org/apache/datafusion/SessionContext.html#readCsv(java.lang.String)" class="member-name-link">readCsv(String)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/SessionContext.html" title="class in org.apache.datafusion">SessionContext</a></dt>
<dd>
<div class="block">Read a CSV file as a <a href="org/apache/datafusion/DataFrame.html" title="class in org.apache.datafusion"><code>DataFrame</code></a> without registering it.</div>
@@ -391,6 +464,14 @@ loadScripts(document, 'script');</script>
<div class="block">Register an Arrow IPC file (or directory of Arrow IPC files) as a table with the supplied
<a href="org/apache/datafusion/ArrowReadOptions.html" title="class in org.apache.datafusion"><code>ArrowReadOptions</code></a>.</div>
</dd>
+<dt><a href="org/apache/datafusion/SessionContext.html#registerAvro(java.lang.String,java.lang.String)" class="member-name-link">registerAvro(String, String)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/SessionContext.html" title="class in org.apache.datafusion">SessionContext</a></dt>
+<dd>
+<div class="block">Register an Avro file (or directory of Avro files) as a table.</div>
+</dd>
+<dt><a href="org/apache/datafusion/SessionContext.html#registerAvro(java.lang.String,java.lang.String,org.apache.datafusion.AvroReadOptions)" class="member-name-link">registerAvro(String, String, AvroReadOptions)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/SessionContext.html" title="class in org.apache.datafusion">SessionContext</a></dt>
+<dd>
+<div class="block">Register an Avro file (or directory of Avro files) as a table with the supplied <a href="org/apache/datafusion/AvroReadOptions.html" title="class in org.apache.datafusion"><code>AvroReadOptions</code></a>.</div>
+</dd>
<dt><a href="org/apache/datafusion/SessionContext.html#registerCsv(java.lang.String,java.lang.String)" class="member-name-link">registerCsv(String, String)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/SessionContext.html" title="class in org.apache.datafusion">SessionContext</a></dt>
<dd> </dd>
<dt><a href="org/apache/datafusion/SessionContext.html#registerCsv(java.lang.String,java.lang.String,org.apache.datafusion.CsvReadOptions)" class="member-name-link">registerCsv(String, String, CsvReadOptions)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/SessionContext.html" title="class in org.apache.datafusion">SessionContext</a></dt>
@@ -410,6 +491,10 @@ loadScripts(document, 'script');</script>
<dd>
<div class="block">Register a parquet file as a table with the supplied <a href="org/apache/datafusion/ParquetReadOptions.html" title="class in org.apache.datafusion"><code>ParquetReadOptions</code></a>.</div>
</dd>
+<dt><a href="org/apache/datafusion/SessionContext.html#registerTable(java.lang.String,org.apache.datafusion.TableProvider)" class="member-name-link">registerTable(String, TableProvider)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/SessionContext.html" title="class in org.apache.datafusion">SessionContext</a></dt>
+<dd>
+<div class="block">Register a Java-implemented <a href="org/apache/datafusion/TableProvider.html" title="interface in org.apache.datafusion"><code>TableProvider</code></a> under <code>name</code>.</div>
+</dd>
<dt><a href="org/apache/datafusion/SessionContext.html#registerUdf(org.apache.datafusion.ScalarUdf)" class="member-name-link">registerUdf(ScalarUdf)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/SessionContext.html" title="class in org.apache.datafusion">SessionContext</a></dt>
<dd>
<div class="block">Register a Java-implemented scalar UDF.</div>
@@ -459,8 +544,22 @@ loadScripts(document, 'script');</script>
<dd>
<div class="block">Wrap a <a href="org/apache/datafusion/ScalarFunction.html" title="interface in org.apache.datafusion"><code>ScalarFunction</code></a> for registration.</div>
</dd>
+<dt><a href="org/apache/datafusion/SimpleTableProvider.html#scan(org.apache.arrow.memory.BufferAllocator)" class="member-name-link">scan(BufferAllocator)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/SimpleTableProvider.html" title="class in org.apache.datafusion">SimpleTableProvider</a></dt>
+<dd> </dd>
+<dt><a href="org/apache/datafusion/TableProvider.html#scan(org.apache.arrow.memory.BufferAllocator)" class="member-name-link">scan(BufferAllocator)</a> - Method in interface org.apache.datafusion.<a href="org/apache/datafusion/TableProvider.html" title="interface in org.apache.datafusion">TableProvider</a></dt>
+<dd>
+<div class="block">Open a fresh batch stream for this table.</div>
+</dd>
+<dt><a href="org/apache/datafusion/SimpleTableProvider.html#schema()" class="member-name-link">schema()</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/SimpleTableProvider.html" title="class in org.apache.datafusion">SimpleTableProvider</a></dt>
+<dd> </dd>
+<dt><a href="org/apache/datafusion/TableProvider.html#schema()" class="member-name-link">schema()</a> - Method in interface org.apache.datafusion.<a href="org/apache/datafusion/TableProvider.html" title="interface in org.apache.datafusion">TableProvider</a></dt>
+<dd>
+<div class="block">The fixed schema of this table.</div>
+</dd>
<dt><a href="org/apache/datafusion/ArrowReadOptions.html#schema(org.apache.arrow.vector.types.pojo.Schema)" class="member-name-link">schema(Schema)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/ArrowReadOptions.html" title="class in org.apache.datafusion">ArrowReadOptions</a></dt>
<dd> </dd>
+<dt><a href="org/apache/datafusion/AvroReadOptions.html#schema(org.apache.arrow.vector.types.pojo.Schema)" class="member-name-link">schema(Schema)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/AvroReadOptions.html" title="class in org.apache.datafusion">AvroReadOptions</a></dt>
+<dd> </dd>
<dt><a href="org/apache/datafusion/CsvReadOptions.html#schema(org.apache.arrow.vector.types.pojo.Schema)" class="member-name-link">schema(Schema)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/CsvReadOptions.html" title="class in org.apache.datafusion">CsvReadOptions</a></dt>
<dd> </dd>
<dt><a href="org/apache/datafusion/NdJsonReadOptions.html#schema(org.apache.arrow.vector.types.pojo.Schema)" class="member-name-link">schema(Schema)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/NdJsonReadOptions.html" title="class in org.apache.datafusion">NdJsonReadOptions</a></dt>
@@ -510,6 +609,21 @@ loadScripts(document, 'script');</script>
<dd>
<div class="block">Execute the plan and print the first <code>limit</code> rows to native stdout.</div>
</dd>
+<dt><a href="org/apache/datafusion/SimpleTableProvider.html" class="type-name-link" title="class in org.apache.datafusion">SimpleTableProvider</a> - Class in <a href="org/apache/datafusion/package-summary.html">org.apache.datafusion</a></dt>
+<dd>
+<div class="block">A <a href="org/apache/datafusion/TableProvider.html" title="interface in org.apache.datafusion"><code>TableProvider</code></a> that pairs a fixed <code>Schema</code> with a function that opens a fresh
+ <code>ArrowReader</code> for each scan.</div>
+</dd>
+<dt><a href="org/apache/datafusion/SimpleTableProvider.html#%3Cinit%3E(org.apache.arrow.vector.types.pojo.Schema,java.util.function.Function)" class="member-name-link">SimpleTableProvider(Schema, Function<BufferAllocator, ArrowReader>)</a> - Constructor for class org.apache.datafusion.<a href="org/apache/datafusion/SimpleTableProvider.html" title="class in org.apache.datafusion">SimpleTableProvider</a></dt>
+<dd> </dd>
+<dt><a href="org/apache/datafusion/CsvWriteOptions.html#singleFileOutput(boolean)" class="member-name-link">singleFileOutput(boolean)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/CsvWriteOptions.html" title="class in org.apache.datafusion">CsvWriteOptions</a></dt>
+<dd>
+<div class="block">When <code>true</code>, write to a single file at the supplied path.</div>
+</dd>
+<dt><a href="org/apache/datafusion/JsonWriteOptions.html#singleFileOutput(boolean)" class="member-name-link">singleFileOutput(boolean)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/JsonWriteOptions.html" title="class in org.apache.datafusion">JsonWriteOptions</a></dt>
+<dd>
+<div class="block">When <code>true</code>, write to a single file at the supplied path.</div>
+</dd>
<dt><a href="org/apache/datafusion/ParquetWriteOptions.html#singleFileOutput(boolean)" class="member-name-link">singleFileOutput(boolean)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/ParquetWriteOptions.html" title="class in org.apache.datafusion">ParquetWriteOptions</a></dt>
<dd>
<div class="block">When <code>true</code>, write to a single file at the supplied path.</div>
@@ -525,6 +639,10 @@ loadScripts(document, 'script');</script>
</dl>
<h2 class="title" id="I:T">T</h2>
<dl class="index">
+<dt><a href="org/apache/datafusion/TableProvider.html" class="type-name-link" title="interface in org.apache.datafusion">TableProvider</a> - Interface in <a href="org/apache/datafusion/package-summary.html">org.apache.datafusion</a></dt>
+<dd>
+<div class="block">A Java-implemented table that can be registered with a <a href="org/apache/datafusion/SessionContext.html" title="class in org.apache.datafusion"><code>SessionContext</code></a> via <a href="org/apache/datafusion/SessionContext.html#registerTable(java.lang.String,org.apache.datafusion.TableProvider)"><code>SessionContext.registerTable(String, TableProvider)</code></a>.</div>
+</dd>
<dt><a href="org/apache/datafusion/SessionContext.html#tableSchema(java.lang.String)" class="member-name-link">tableSchema(String)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/SessionContext.html" title="class in org.apache.datafusion">SessionContext</a></dt>
<dd>
<div class="block">Return the Arrow <code>Schema</code> of a registered table.</div>
@@ -629,6 +747,22 @@ the order they are declared.</div>
<dd>
<div class="block">Rename a column.</div>
</dd>
+<dt><a href="org/apache/datafusion/DataFrame.html#writeCsv(java.lang.String)" class="member-name-link">writeCsv(String)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/DataFrame.html" title="class in org.apache.datafusion">DataFrame</a></dt>
+<dd>
+<div class="block">Materialize this DataFrame as CSV at <code>path</code>.</div>
+</dd>
+<dt><a href="org/apache/datafusion/DataFrame.html#writeCsv(java.lang.String,org.apache.datafusion.CsvWriteOptions)" class="member-name-link">writeCsv(String, CsvWriteOptions)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/DataFrame.html" title="class in org.apache.datafusion">DataFrame</a></dt>
+<dd>
+<div class="block">Materialize this DataFrame as CSV at <code>path</code> with the supplied <a href="org/apache/datafusion/CsvWriteOptions.html" title="class in org.apache.datafusion"><code>CsvWriteOptions</code></a>.</div>
+</dd>
+<dt><a href="org/apache/datafusion/DataFrame.html#writeJson(java.lang.String)" class="member-name-link">writeJson(String)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/DataFrame.html" title="class in org.apache.datafusion">DataFrame</a></dt>
+<dd>
+<div class="block">Materialize this DataFrame as newline-delimited JSON at <code>path</code>.</div>
+</dd>
+<dt><a href="org/apache/datafusion/DataFrame.html#writeJson(java.lang.String,org.apache.datafusion.JsonWriteOptions)" class="member-name-link">writeJson(String, JsonWriteOptions)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/DataFrame.html" title="class in org.apache.datafusion">DataFrame</a></dt>
+<dd>
+<div class="block">Materialize this DataFrame as newline-delimited JSON at <code>path</code> with the supplied <a href="org/apache/datafusion/JsonWriteOptions.html" title="class in org.apache.datafusion"><code>JsonWriteOptions</code></a>.</div>
+</dd>
<dt><a href="org/apache/datafusion/DataFrame.html#writeParquet(java.lang.String)" class="member-name-link">writeParquet(String)</a> - Method in class org.apache.datafusion.<a href="org/apache/datafusion/DataFrame.html" title="class in org.apache.datafusion">DataFrame</a></dt>
<dd>
<div class="block">Materialize this DataFrame as Parquet at <code>path</code>.</div>
diff --git a/api/index.html b/api/index.html
index dcff985..6b86e04 100644
--- a/api/index.html
+++ b/api/index.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>Overview (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="package index">
<meta name="generator" content="javadoc/PackageIndexWriter">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
diff --git a/api/member-search-index.js b/api/member-search-index.js
index e638200..6068ff5 100644
--- a/api/member-search-index.js
+++ b/api/member-search-index.js
@@ -1 +1 @@
-memberSearchIndex = [{"p":"org.apache.datafusion","c":"ScalarFunctionArgs","l":"args()"},{"p":"org.apache.datafusion","c":"ScalarFunction","l":"argTypes()"},{"p":"org.apache.datafusion","c":"ScalarUdf","l":"argTypes()"},{"p":"org.apache.datafusion","c":"ColumnarValue","l":"array(FieldVector)","u":"array(org.apache.arrow.vector.FieldVector)"},{"p":"org.apache.datafusion","c":"ColumnarValue.Array","l":"Array(FieldVector)","u":"%3Cinit%3E(org.apache.arrow.vector.FieldVector)"},{"p":"org.apa [...]
\ No newline at end of file
+memberSearchIndex = [{"p":"org.apache.datafusion","c":"ScalarFunctionArgs","l":"args()"},{"p":"org.apache.datafusion","c":"ScalarFunction","l":"argTypes()"},{"p":"org.apache.datafusion","c":"ScalarUdf","l":"argTypes()"},{"p":"org.apache.datafusion","c":"ColumnarValue","l":"array(FieldVector)","u":"array(org.apache.arrow.vector.FieldVector)"},{"p":"org.apache.datafusion","c":"ColumnarValue.Array","l":"Array(FieldVector)","u":"%3Cinit%3E(org.apache.arrow.vector.FieldVector)"},{"p":"org.apa [...]
\ No newline at end of file
diff --git a/api/org/apache/datafusion/ArrowReadOptions.html b/api/org/apache/datafusion/ArrowReadOptions.html
index 7029192..67d4511 100644
--- a/api/org/apache/datafusion/ArrowReadOptions.html
+++ b/api/org/apache/datafusion/ArrowReadOptions.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>ArrowReadOptions (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="declaration: package: org.apache.datafusion, class: ArrowReadOptions">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
diff --git a/api/org/apache/datafusion/ArrowReadOptions.html b/api/org/apache/datafusion/AvroReadOptions.html
similarity index 79%
copy from api/org/apache/datafusion/ArrowReadOptions.html
copy to api/org/apache/datafusion/AvroReadOptions.html
index 7029192..840b73f 100644
--- a/api/org/apache/datafusion/ArrowReadOptions.html
+++ b/api/org/apache/datafusion/AvroReadOptions.html
@@ -1,12 +1,12 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
-<title>ArrowReadOptions (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
+<title>AvroReadOptions (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
-<meta name="description" content="declaration: package: org.apache.datafusion, class: ArrowReadOptions">
+<meta name="dc.created" content="2026-05-19">
+<meta name="description" content="declaration: package: org.apache.datafusion, class: AvroReadOptions">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../script-dir/jquery-ui.min.css" title="Style">
@@ -35,7 +35,7 @@ loadScripts(document, 'script');</script>
<li><a href="../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
-<li><a href="class-use/ArrowReadOptions.html">Use</a></li>
+<li><a href="class-use/AvroReadOptions.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html#class">Help</a></li>
@@ -70,24 +70,25 @@ loadScripts(document, 'script');</script>
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span> <a href="package-summary.html">org.apache.datafusion</a></div>
-<h1 title="Class ArrowReadOptions" class="title">Class ArrowReadOptions</h1>
+<h1 title="Class AvroReadOptions" class="title">Class AvroReadOptions</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
-<div class="inheritance">org.apache.datafusion.ArrowReadOptions</div>
+<div class="inheritance">org.apache.datafusion.AvroReadOptions</div>
</div>
<section class="class-description" id="class-description">
<hr>
-<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">ArrowReadOptions</span>
+<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">AvroReadOptions</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
-<div class="block">Configuration knobs for Arrow IPC sources passed to <a href="SessionContext.html#registerArrow(java.lang.String,java.lang.String,org.apache.datafusion.ArrowReadOptions)"><code>SessionContext.registerArrow(String, String, ArrowReadOptions)</code></a> and <a href="SessionContext.html#readArrow(java.lang.String,org.apache.datafusion.ArrowReadOptions)"><code>SessionContext.readArrow(String, ArrowReadOptions)</code></a>.
+<div class="block">Configuration knobs for Avro sources passed to <a href="SessionContext.html#registerAvro(java.lang.String,java.lang.String,org.apache.datafusion.AvroReadOptions)"><code>SessionContext.registerAvro(String, String, AvroReadOptions)</code></a> and <a href="SessionContext.html#readAvro(java.lang.String,org.apache.datafusion.AvroReadOptions)"><code>SessionContext.readAvro(String, AvroReadOptions)</code></a>.
- <p>Mirrors the subset of DataFusion's <code>ArrowReadOptions</code> that maps onto the Java surface
- today: <code>fileExtension</code> (default <code>".arrow"</code>) and an explicit Arrow <code>schema</code> that
- bypasses on-read schema inference. <code>tablePartitionCols</code> is intentionally deferred --
- neither Parquet nor CSV expose Hive-style partitioning on the Java side yet.
+ <p>Mirrors the subset of DataFusion's <code>AvroReadOptions</code> that maps onto the Java surface
+ today: <code>fileExtension</code> (default <code>".avro"</code>) and an explicit Arrow <code>schema</code> that
+ bypasses on-read schema inference. <code>tablePartitionCols</code> is intentionally deferred -- no
+ other Java reader exposes Hive-style partitioning yet.
- <p>Arrow IPC files carry their own body compression (LZ4_FRAME / ZSTD per-buffer) inside the file
- format itself, so unlike CSV / NDJSON there is no <code>FileCompressionType</code> setter.</div>
+ <p>Avro carries its own per-block compression (snappy, deflate, bzip2, xz, zstandard) inside the
+ object container itself, negotiated when the file is written, so unlike CSV / NDJSON there is no
+ <code>FileCompressionType</code> setter.</div>
</section>
<section class="summary">
<ul class="summary-list">
@@ -99,7 +100,7 @@ loadScripts(document, 'script');</script>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
-<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">ArrowReadOptions</a>()</code></div>
+<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">AvroReadOptions</a>()</code></div>
<div class="col-last even-row-color"> </div>
</div>
</section>
@@ -115,10 +116,10 @@ loadScripts(document, 'script');</script>
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="ArrowReadOptions.html" title="class in org.apache.datafusion">ArrowReadOptions</a></code></div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="AvroReadOptions.html" title="class in org.apache.datafusion">AvroReadOptions</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#fileExtension(java.lang.String)" class="member-name-link">fileExtension</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> ext)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="ArrowReadOptions.html" title="class in org.apache.datafusion">ArrowReadOptions</a></code></div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="AvroReadOptions.html" title="class in org.apache.datafusion">AvroReadOptions</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#schema(org.apache.arrow.vector.types.pojo.Schema)" class="member-name-link">schema</a><wbr>(org.apache.arrow.vector.types.pojo.Schema schema)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
</div>
@@ -140,8 +141,8 @@ loadScripts(document, 'script');</script>
<ul class="member-list">
<li>
<section class="detail" id="<init>()">
-<h3>ArrowReadOptions</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="element-name">ArrowReadOptions</span>()</div>
+<h3>AvroReadOptions</h3>
+<div class="member-signature"><span class="modifiers">public</span> <span class="element-name">AvroReadOptions</span>()</div>
</section>
</li>
</ul>
@@ -155,13 +156,13 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="fileExtension(java.lang.String)">
<h3>fileExtension</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="ArrowReadOptions.html" title="class in org.apache.datafusion">ArrowReadOptions</a></span> <span class="element-name">fileExtension</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> ext)</span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="AvroReadOptions.html" title="class in org.apache.datafusion">AvroReadOptions</a></span> <span class="element-name">fileExtension</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> ext)</span></div>
</section>
</li>
<li>
<section class="detail" id="schema(org.apache.arrow.vector.types.pojo.Schema)">
<h3>schema</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="ArrowReadOptions.html" title="class in org.apache.datafusion">ArrowReadOptions</a></span> <span class="element-name">schema</span><wbr><span class="parameters">(org.apache.arrow.vector.types.pojo.Schema schema)</span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="AvroReadOptions.html" title="class in org.apache.datafusion">AvroReadOptions</a></span> <span class="element-name">schema</span><wbr><span class="parameters">(org.apache.arrow.vector.types.pojo.Schema schema)</span></div>
</section>
</li>
</ul>
diff --git a/api/org/apache/datafusion/ColumnarValue.Array.html b/api/org/apache/datafusion/ColumnarValue.Array.html
index 1c3511c..e1ec7c7 100644
--- a/api/org/apache/datafusion/ColumnarValue.Array.html
+++ b/api/org/apache/datafusion/ColumnarValue.Array.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>ColumnarValue.Array (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="declaration: package: org.apache.datafusion, interface: ColumnarValue, record: Array">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
diff --git a/api/org/apache/datafusion/ColumnarValue.Scalar.html b/api/org/apache/datafusion/ColumnarValue.Scalar.html
index fd22ed1..1013565 100644
--- a/api/org/apache/datafusion/ColumnarValue.Scalar.html
+++ b/api/org/apache/datafusion/ColumnarValue.Scalar.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>ColumnarValue.Scalar (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="declaration: package: org.apache.datafusion, interface: ColumnarValue, record: Scalar">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
diff --git a/api/org/apache/datafusion/ColumnarValue.html b/api/org/apache/datafusion/ColumnarValue.html
index cb95183..31dc2b7 100644
--- a/api/org/apache/datafusion/ColumnarValue.html
+++ b/api/org/apache/datafusion/ColumnarValue.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>ColumnarValue (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="declaration: package: org.apache.datafusion, interface: ColumnarValue">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
diff --git a/api/org/apache/datafusion/CsvReadOptions.html b/api/org/apache/datafusion/CsvReadOptions.html
index c9d18b8..d48fffb 100644
--- a/api/org/apache/datafusion/CsvReadOptions.html
+++ b/api/org/apache/datafusion/CsvReadOptions.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>CsvReadOptions (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="declaration: package: org.apache.datafusion, class: CsvReadOptions">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
diff --git a/api/org/apache/datafusion/CsvReadOptions.html b/api/org/apache/datafusion/CsvWriteOptions.html
similarity index 57%
copy from api/org/apache/datafusion/CsvReadOptions.html
copy to api/org/apache/datafusion/CsvWriteOptions.html
index c9d18b8..ca1e9ae 100644
--- a/api/org/apache/datafusion/CsvReadOptions.html
+++ b/api/org/apache/datafusion/CsvWriteOptions.html
@@ -1,12 +1,12 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
-<title>CsvReadOptions (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
+<title>CsvWriteOptions (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
-<meta name="description" content="declaration: package: org.apache.datafusion, class: CsvReadOptions">
+<meta name="dc.created" content="2026-05-19">
+<meta name="description" content="declaration: package: org.apache.datafusion, class: CsvWriteOptions">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../script-dir/jquery-ui.min.css" title="Style">
@@ -35,7 +35,7 @@ loadScripts(document, 'script');</script>
<li><a href="../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
-<li><a href="class-use/CsvReadOptions.html">Use</a></li>
+<li><a href="class-use/CsvWriteOptions.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html#class">Help</a></li>
@@ -70,22 +70,28 @@ loadScripts(document, 'script');</script>
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span> <a href="package-summary.html">org.apache.datafusion</a></div>
-<h1 title="Class CsvReadOptions" class="title">Class CsvReadOptions</h1>
+<h1 title="Class CsvWriteOptions" class="title">Class CsvWriteOptions</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
-<div class="inheritance">org.apache.datafusion.CsvReadOptions</div>
+<div class="inheritance">org.apache.datafusion.CsvWriteOptions</div>
</div>
<section class="class-description" id="class-description">
<hr>
-<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">CsvReadOptions</span>
+<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">CsvWriteOptions</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
-<div class="block">Configuration knobs for CSV sources passed to <a href="SessionContext.html#registerCsv(java.lang.String,java.lang.String,org.apache.datafusion.CsvReadOptions)"><code>SessionContext.registerCsv(String, String, CsvReadOptions)</code></a> and <a href="SessionContext.html#readCsv(java.lang.String,org.apache.datafusion.CsvReadOptions)"><code>SessionContext.readCsv(String, CsvReadOptions)</code></a>.
+<div class="block">Configuration knobs for writing CSV, passed to <a href="DataFrame.html#writeCsv(java.lang.String,org.apache.datafusion.CsvWriteOptions)"><code>DataFrame.writeCsv(String, CsvWriteOptions)</code></a>.
- <p>Mirrors a subset of DataFusion's <code>CsvReadOptions</code>. All setters return <code>this</code> for
- fluent chaining. Defaults match the Rust struct: <code>hasHeader = true</code>, <code>delimiter =
- ','</code>, <code>quote = '"'</code>, <code>fileExtension = ".csv"</code>, <code>fileCompressionType =
- UNCOMPRESSED</code>, all other fields <code>null</code> (meaning the DataFusion default is used, or the
- schema is inferred from the file).</div>
+ <p>Mirrors a subset of DataFusion's <code>DataFrameWriteOptions</code> and the writer-side <code>
+ CsvOptions</code>. All setters return <code>this</code> for fluent chaining. Defaults: every field <code>
+ null</code> or empty (meaning the DataFusion default is used).
+
+ <p>Path semantics: when <a href="#singleFileOutput(boolean)"><code>singleFileOutput(boolean)</code></a> is <code>true</code>, the path passed to
+ <code>writeCsv</code> is the literal output filename. When left unset (the default) and there are no
+ partition columns, the path is treated as a directory that DataFusion populates with one or more
+ part-files.
+
+ <p>Compression reuses <a href="FileCompressionType.html" title="enum class in org.apache.datafusion"><code>FileCompressionType</code></a> -- both the read and write sides accept the
+ same codec set (<code>UNCOMPRESSED</code>, <code>GZIP</code>, <code>BZIP2</code>, <code>XZ</code>, <code>ZSTD</code>).</div>
</section>
<section class="summary">
<ul class="summary-list">
@@ -97,7 +103,7 @@ loadScripts(document, 'script');</script>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
-<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">CsvReadOptions</a>()</code></div>
+<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">CsvWriteOptions</a>()</code></div>
<div class="col-last even-row-color"> </div>
</div>
</section>
@@ -113,39 +119,46 @@ loadScripts(document, 'script');</script>
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="CsvReadOptions.html" title="class in org.apache.datafusion">CsvReadOptions</a></code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#comment(byte)" class="member-name-link">comment</a><wbr>(byte b)</code></div>
-<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="CsvReadOptions.html" title="class in org.apache.datafusion">CsvReadOptions</a></code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#delimiter(byte)" class="member-name-link">delimiter</a><wbr>(byte b)</code></div>
-<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="CsvReadOptions.html" title="class in org.apache.datafusion">CsvReadOptions</a></code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#escape(byte)" class="member-name-link">escape</a><wbr>(byte b)</code></div>
-<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="CsvReadOptions.html" title="class in org.apache.datafusion">CsvReadOptions</a></code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#fileCompressionType(org.apache.datafusion.FileCompressionType)" class="member-name-link">fileCompressionType</a><wbr>(<a href="FileCompressionType.html" title="enum class in org.apache.datafusion">FileCompressionType</a> t)</code></div>
-<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="CsvReadOptions.html" title="class in org.apache.datafusion">CsvReadOptions</a></code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#fileExtension(java.lang.String)" class="member-name-link">fileExtension</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> ext)</code></div>
-<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="CsvReadOptions.html" title="class in org.apache.datafusion">CsvReadOptions</a></code></div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="CsvWriteOptions.html" title="class in org.apache.datafusion">CsvWriteOptions</a></code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#delimiter(byte)" class="member-name-link">delimiter</a><wbr>(byte b)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="block">Field delimiter byte.</div>
+</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="CsvWriteOptions.html" title="class in org.apache.datafusion">CsvWriteOptions</a></code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#escape(byte)" class="member-name-link">escape</a><wbr>(byte b)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="block">Escape character byte.</div>
+</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="CsvWriteOptions.html" title="class in org.apache.datafusion">CsvWriteOptions</a></code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#fileCompressionType(org.apache.datafusion.FileCompressionType)" class="member-name-link">fileCompressionType</a><wbr>(<a href="FileCompressionType.html" title="enum class in org.apache.datafusion">FileCompressionType</a> t)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="block">Output compression codec.</div>
+</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="CsvWriteOptions.html" title="class in org.apache.datafusion">CsvWriteOptions</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hasHeader(boolean)" class="member-name-link">hasHeader</a><wbr>(boolean v)</code></div>
-<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="CsvReadOptions.html" title="class in org.apache.datafusion">CsvReadOptions</a></code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#newlinesInValues(boolean)" class="member-name-link">newlinesInValues</a><wbr>(boolean v)</code></div>
-<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="CsvReadOptions.html" title="class in org.apache.datafusion">CsvReadOptions</a></code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#quote(byte)" class="member-name-link">quote</a><wbr>(byte b)</code></div>
-<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="CsvReadOptions.html" title="class in org.apache.datafusion">CsvReadOptions</a></code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#schema(org.apache.arrow.vector.types.pojo.Schema)" class="member-name-link">schema</a><wbr>(org.apache.arrow.vector.types.pojo.Schema schema)</code></div>
-<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="CsvReadOptions.html" title="class in org.apache.datafusion">CsvReadOptions</a></code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#schemaInferMaxRecords(long)" class="member-name-link">schemaInferMaxRecords</a><wbr>(long n)</code></div>
-<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="CsvReadOptions.html" title="class in org.apache.datafusion">CsvReadOptions</a></code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#terminator(byte)" class="member-name-link">terminator</a><wbr>(byte b)</code></div>
-<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="block">Whether to write a header row.</div>
+</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="CsvWriteOptions.html" title="class in org.apache.datafusion">CsvWriteOptions</a></code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#nullValue(java.lang.String)" class="member-name-link">nullValue</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> s)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="block">String to write for SQL NULL values.</div>
+</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="CsvWriteOptions.html" title="class in org.apache.datafusion">CsvWriteOptions</a></code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#partitionCols(java.lang.String...)" class="member-name-link">partitionCols</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>... cols)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="block">Hive-style partition columns.</div>
+</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="CsvWriteOptions.html" title="class in org.apache.datafusion">CsvWriteOptions</a></code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#quote(byte)" class="member-name-link">quote</a><wbr>(byte b)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="block">Quote character byte.</div>
+</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="CsvWriteOptions.html" title="class in org.apache.datafusion">CsvWriteOptions</a></code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#singleFileOutput(boolean)" class="member-name-link">singleFileOutput</a><wbr>(boolean v)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="block">When <code>true</code>, write to a single file at the supplied path.</div>
+</div>
</div>
</div>
</div>
@@ -165,8 +178,8 @@ loadScripts(document, 'script');</script>
<ul class="member-list">
<li>
<section class="detail" id="<init>()">
-<h3>CsvReadOptions</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="element-name">CsvReadOptions</span>()</div>
+<h3>CsvWriteOptions</h3>
+<div class="member-signature"><span class="modifiers">public</span> <span class="element-name">CsvWriteOptions</span>()</div>
</section>
</li>
</ul>
@@ -178,69 +191,62 @@ loadScripts(document, 'script');</script>
<h2>Method Details</h2>
<ul class="member-list">
<li>
+<section class="detail" id="singleFileOutput(boolean)">
+<h3>singleFileOutput</h3>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="CsvWriteOptions.html" title="class in org.apache.datafusion">CsvWriteOptions</a></span> <span class="element-name">singleFileOutput</span><wbr><span class="parameters">(boolean v)</span></div>
+<div class="block">When <code>true</code>, write to a single file at the supplied path. When left unset (the default)
+ and no partition columns are configured, the path is treated as a directory and DataFusion
+ writes one or more part-files.</div>
+</section>
+</li>
+<li>
+<section class="detail" id="partitionCols(java.lang.String...)">
+<h3>partitionCols</h3>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="CsvWriteOptions.html" title="class in org.apache.datafusion">CsvWriteOptions</a></span> <span class="element-name">partitionCols</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>... cols)</span></div>
+<div class="block">Hive-style partition columns. Each column listed here is removed from the data rows and encoded
+ into the directory layout (one subdirectory per distinct value). Mutually exclusive with <a href="#singleFileOutput(boolean)"><code>singleFileOutput(boolean)</code></a> -- DataFusion rejects the combination at write time.</div>
+</section>
+</li>
+<li>
<section class="detail" id="hasHeader(boolean)">
<h3>hasHeader</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="CsvReadOptions.html" title="class in org.apache.datafusion">CsvReadOptions</a></span> <span class="element-name">hasHeader</span><wbr><span class="parameters">(boolean v)</span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="CsvWriteOptions.html" title="class in org.apache.datafusion">CsvWriteOptions</a></span> <span class="element-name">hasHeader</span><wbr><span class="parameters">(boolean v)</span></div>
+<div class="block">Whether to write a header row. Defaults to DataFusion's setting (typically <code>true</code>).</div>
</section>
</li>
<li>
<section class="detail" id="delimiter(byte)">
<h3>delimiter</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="CsvReadOptions.html" title="class in org.apache.datafusion">CsvReadOptions</a></span> <span class="element-name">delimiter</span><wbr><span class="parameters">(byte b)</span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="CsvWriteOptions.html" title="class in org.apache.datafusion">CsvWriteOptions</a></span> <span class="element-name">delimiter</span><wbr><span class="parameters">(byte b)</span></div>
+<div class="block">Field delimiter byte. Defaults to <code>','</code>.</div>
</section>
</li>
<li>
<section class="detail" id="quote(byte)">
<h3>quote</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="CsvReadOptions.html" title="class in org.apache.datafusion">CsvReadOptions</a></span> <span class="element-name">quote</span><wbr><span class="parameters">(byte b)</span></div>
-</section>
-</li>
-<li>
-<section class="detail" id="terminator(byte)">
-<h3>terminator</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="CsvReadOptions.html" title="class in org.apache.datafusion">CsvReadOptions</a></span> <span class="element-name">terminator</span><wbr><span class="parameters">(byte b)</span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="CsvWriteOptions.html" title="class in org.apache.datafusion">CsvWriteOptions</a></span> <span class="element-name">quote</span><wbr><span class="parameters">(byte b)</span></div>
+<div class="block">Quote character byte. Defaults to <code>'"'</code>.</div>
</section>
</li>
<li>
<section class="detail" id="escape(byte)">
<h3>escape</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="CsvReadOptions.html" title="class in org.apache.datafusion">CsvReadOptions</a></span> <span class="element-name">escape</span><wbr><span class="parameters">(byte b)</span></div>
-</section>
-</li>
-<li>
-<section class="detail" id="comment(byte)">
-<h3>comment</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="CsvReadOptions.html" title="class in org.apache.datafusion">CsvReadOptions</a></span> <span class="element-name">comment</span><wbr><span class="parameters">(byte b)</span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="CsvWriteOptions.html" title="class in org.apache.datafusion">CsvWriteOptions</a></span> <span class="element-name">escape</span><wbr><span class="parameters">(byte b)</span></div>
+<div class="block">Escape character byte. Defaults to none.</div>
</section>
</li>
<li>
-<section class="detail" id="newlinesInValues(boolean)">
-<h3>newlinesInValues</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="CsvReadOptions.html" title="class in org.apache.datafusion">CsvReadOptions</a></span> <span class="element-name">newlinesInValues</span><wbr><span class="parameters">(boolean v)</span></div>
-</section>
-</li>
-<li>
-<section class="detail" id="schemaInferMaxRecords(long)">
-<h3>schemaInferMaxRecords</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="CsvReadOptions.html" title="class in org.apache.datafusion">CsvReadOptions</a></span> <span class="element-name">schemaInferMaxRecords</span><wbr><span class="parameters">(long n)</span></div>
-</section>
-</li>
-<li>
-<section class="detail" id="fileExtension(java.lang.String)">
-<h3>fileExtension</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="CsvReadOptions.html" title="class in org.apache.datafusion">CsvReadOptions</a></span> <span class="element-name">fileExtension</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> ext)</span></div>
+<section class="detail" id="nullValue(java.lang.String)">
+<h3>nullValue</h3>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="CsvWriteOptions.html" title="class in org.apache.datafusion">CsvWriteOptions</a></span> <span class="element-name">nullValue</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> s)</span></div>
+<div class="block">String to write for SQL NULL values. Defaults to the empty string.</div>
</section>
</li>
<li>
<section class="detail" id="fileCompressionType(org.apache.datafusion.FileCompressionType)">
<h3>fileCompressionType</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="CsvReadOptions.html" title="class in org.apache.datafusion">CsvReadOptions</a></span> <span class="element-name">fileCompressionType</span><wbr><span class="parameters">(<a href="FileCompressionType.html" title="enum class in org.apache.datafusion">FileCompressionType</a> t)</span></div>
-</section>
-</li>
-<li>
-<section class="detail" id="schema(org.apache.arrow.vector.types.pojo.Schema)">
-<h3>schema</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="CsvReadOptions.html" title="class in org.apache.datafusion">CsvReadOptions</a></span> <span class="element-name">schema</span><wbr><span class="parameters">(org.apache.arrow.vector.types.pojo.Schema schema)</span></div>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="CsvWriteOptions.html" title="class in org.apache.datafusion">CsvWriteOptions</a></span> <span class="element-name">fileCompressionType</span><wbr><span class="parameters">(<a href="FileCompressionType.html" title="enum class in org.apache.datafusion">FileCompressionType</a> t)</span></div>
+<div class="block">Output compression codec. Defaults to uncompressed.</div>
</section>
</li>
</ul>
diff --git a/api/org/apache/datafusion/DataFrame.html b/api/org/apache/datafusion/DataFrame.html
index 995ffa2..ef6994c 100644
--- a/api/org/apache/datafusion/DataFrame.html
+++ b/api/org/apache/datafusion/DataFrame.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>DataFrame (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="declaration: package: org.apache.datafusion, class: DataFrame">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
@@ -85,11 +85,12 @@ loadScripts(document, 'script');</script>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html" title="class or interface in java.lang" class="external-link">AutoCloseable</a></span></div>
<div class="block">A lazy representation of a query plan, mirroring the Rust DataFusion <code>DataFrame</code>. Created
- by <a href="SessionContext.html#sql(java.lang.String)"><code>SessionContext.sql(String)</code></a> or other planning entry points and executed by <a href="#collect(org.apache.arrow.memory.BufferAllocator)"><code>collect(org.apache.arrow.memory.BufferAllocator)</code></a>.
+ by <a href="SessionContext.html#sql(java.lang.String)"><code>SessionContext.sql(String)</code></a> or other planning entry points and executed by either
+ <a href="#collect(org.apache.arrow.memory.BufferAllocator)"><code>collect(org.apache.arrow.memory.BufferAllocator)</code></a> (materializes every batch on the native heap before returning) or <a href="#executeStream(org.apache.arrow.memory.BufferAllocator)"><code>executeStream(org.apache.arrow.memory.BufferAllocator)</code></a> (yields one batch at a time as Java drains the reader).
- <p>Instances are <strong>not thread-safe</strong> and must be closed. <a href="#collect(org.apache.arrow.memory.BufferAllocator)"><code>collect(org.apache.arrow.memory.BufferAllocator)</code></a> consumes
- the DataFrame: a successfully collected DataFrame cannot be collected again, and <a href="#close()"><code>close()</code></a>
- on an already-collected instance is a no-op.</div>
+ <p>Instances are <strong>not thread-safe</strong> and must be closed. Both <a href="#collect(org.apache.arrow.memory.BufferAllocator)"><code>collect(org.apache.arrow.memory.BufferAllocator)</code></a> and
+ <a href="#executeStream(org.apache.arrow.memory.BufferAllocator)"><code>executeStream(org.apache.arrow.memory.BufferAllocator)</code></a> consume the DataFrame: a successfully consumed DataFrame cannot be
+ consumed again by either method (or by other executors such as <a href="#count()"><code>count()</code></a>), and <a href="#close()"><code>close()</code></a> on an already-consumed instance is a no-op.</div>
</section>
<section class="summary">
<ul class="summary-list">
@@ -127,69 +128,96 @@ implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Drop the named columns.</div>
</div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="DataFrame.html" title="class in org.apache.datafusion">DataFrame</a></code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#filter(java.lang.String)" class="member-name-link">filter</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> predicate)</code></div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>org.apache.arrow.vector.ipc.ArrowReader</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#executeStream(org.apache.arrow.memory.BufferAllocator)" class="member-name-link">executeStream</a><wbr>(org.apache.arrow.memory.BufferAllocator allocator)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
-<div class="block">Apply a SQL predicate to produce a filtered DataFrame.</div>
+<div class="block">Execute the plan and return its record batches as a streaming <code>ArrowReader</code>.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="DataFrame.html" title="class in org.apache.datafusion">DataFrame</a></code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#limit(int)" class="member-name-link">limit</a><wbr>(int fetch)</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#filter(java.lang.String)" class="member-name-link">filter</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> predicate)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
-<div class="block">Take the first <code>fetch</code> rows.</div>
+<div class="block">Apply a SQL predicate to produce a filtered DataFrame.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="DataFrame.html" title="class in org.apache.datafusion">DataFrame</a></code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#limit(int,int)" class="member-name-link">limit</a><wbr>(int skip,
- int fetch)</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#limit(int)" class="member-name-link">limit</a><wbr>(int fetch)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
-<div class="block">Skip <code>skip</code> rows, then take the next <code>fetch</code> rows.</div>
+<div class="block">Take the first <code>fetch</code> rows.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="DataFrame.html" title="class in org.apache.datafusion">DataFrame</a></code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#select(java.lang.String...)" class="member-name-link">select</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>... columnNames)</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#limit(int,int)" class="member-name-link">limit</a><wbr>(int skip,
+ int fetch)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
-<div class="block">Project the listed columns into a new DataFrame.</div>
+<div class="block">Skip <code>skip</code> rows, then take the next <code>fetch</code> rows.</div>
</div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#show()" class="member-name-link">show</a>()</code></div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="DataFrame.html" title="class in org.apache.datafusion">DataFrame</a></code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#select(java.lang.String...)" class="member-name-link">select</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>... columnNames)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
-<div class="block">Execute the plan and print formatted batches to native stdout.</div>
+<div class="block">Project the listed columns into a new DataFrame.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#show(int)" class="member-name-link">show</a><wbr>(int limit)</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#show()" class="member-name-link">show</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
-<div class="block">Execute the plan and print the first <code>limit</code> rows to native stdout.</div>
+<div class="block">Execute the plan and print formatted batches to native stdout.</div>
</div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="DataFrame.html" title="class in org.apache.datafusion">DataFrame</a></code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#unnestColumns(java.lang.String...)" class="member-name-link">unnestColumns</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>... columns)</code></div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#show(int)" class="member-name-link">show</a><wbr>(int limit)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
-<div class="block">Expand list or struct columns into rows or fields, with default <a href="UnnestOptions.html" title="class in org.apache.datafusion"><code>UnnestOptions</code></a> (i.e.</div>
+<div class="block">Execute the plan and print the first <code>limit</code> rows to native stdout.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="DataFrame.html" title="class in org.apache.datafusion">DataFrame</a></code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#unnestColumns(org.apache.datafusion.UnnestOptions,java.lang.String...)" class="member-name-link">unnestColumns</a><wbr>(<a href="UnnestOptions.html" title="class in org.apache.datafusion">UnnestOptions</a> options,
- <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>... columns)</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#unnestColumns(java.lang.String...)" class="member-name-link">unnestColumns</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>... columns)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
-<div class="block">Expand list or struct columns into rows or fields with the supplied <a href="UnnestOptions.html" title="class in org.apache.datafusion"><code>UnnestOptions</code></a>.</div>
+<div class="block">Expand list or struct columns into rows or fields, with default <a href="UnnestOptions.html" title="class in org.apache.datafusion"><code>UnnestOptions</code></a> (i.e.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="DataFrame.html" title="class in org.apache.datafusion">DataFrame</a></code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#withColumn(java.lang.String,java.lang.String)" class="member-name-link">withColumn</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> name,
- <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> expr)</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#unnestColumns(org.apache.datafusion.UnnestOptions,java.lang.String...)" class="member-name-link">unnestColumns</a><wbr>(<a href="UnnestOptions.html" title="class in org.apache.datafusion">UnnestOptions</a> options,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>... columns)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
-<div class="block">Add a column to this DataFrame computed from a SQL expression.</div>
+<div class="block">Expand list or struct columns into rows or fields with the supplied <a href="UnnestOptions.html" title="class in org.apache.datafusion"><code>UnnestOptions</code></a>.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="DataFrame.html" title="class in org.apache.datafusion">DataFrame</a></code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#withColumnRenamed(java.lang.String,java.lang.String)" class="member-name-link">withColumnRenamed</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> oldName,
- <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> newName)</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#withColumn(java.lang.String,java.lang.String)" class="member-name-link">withColumn</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> name,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> expr)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="block">Add a column to this DataFrame computed from a SQL expression.</div>
+</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="DataFrame.html" title="class in org.apache.datafusion">DataFrame</a></code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#withColumnRenamed(java.lang.String,java.lang.String)" class="member-name-link">withColumnRenamed</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> oldName,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> newName)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Rename a column.</div>
</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#writeCsv(java.lang.String)" class="member-name-link">writeCsv</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> path)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="block">Materialize this DataFrame as CSV at <code>path</code>.</div>
+</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#writeParquet(java.lang.String)" class="member-name-link">writeParquet</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> path)</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#writeCsv(java.lang.String,org.apache.datafusion.CsvWriteOptions)" class="member-name-link">writeCsv</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> path,
+ <a href="CsvWriteOptions.html" title="class in org.apache.datafusion">CsvWriteOptions</a> options)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
-<div class="block">Materialize this DataFrame as Parquet at <code>path</code>.</div>
+<div class="block">Materialize this DataFrame as CSV at <code>path</code> with the supplied <a href="CsvWriteOptions.html" title="class in org.apache.datafusion"><code>CsvWriteOptions</code></a>.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#writeParquet(java.lang.String,org.apache.datafusion.ParquetWriteOptions)" class="member-name-link">writeParquet</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> path,
- <a href="ParquetWriteOptions.html" title="class in org.apache.datafusion">ParquetWriteOptions</a> options)</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#writeJson(java.lang.String)" class="member-name-link">writeJson</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> path)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="block">Materialize this DataFrame as newline-delimited JSON at <code>path</code>.</div>
+</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#writeJson(java.lang.String,org.apache.datafusion.JsonWriteOptions)" class="member-name-link">writeJson</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> path,
+ <a href="JsonWriteOptions.html" title="class in org.apache.datafusion">JsonWriteOptions</a> options)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="block">Materialize this DataFrame as newline-delimited JSON at <code>path</code> with the supplied <a href="JsonWriteOptions.html" title="class in org.apache.datafusion"><code>JsonWriteOptions</code></a>.</div>
+</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#writeParquet(java.lang.String)" class="member-name-link">writeParquet</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> path)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="block">Materialize this DataFrame as Parquet at <code>path</code>.</div>
+</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#writeParquet(java.lang.String,org.apache.datafusion.ParquetWriteOptions)" class="member-name-link">writeParquet</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> path,
+ <a href="ParquetWriteOptions.html" title="class in org.apache.datafusion">ParquetWriteOptions</a> options)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Materialize this DataFrame as Parquet at <code>path</code> with the supplied <a href="ParquetWriteOptions.html" title="class in org.apache.datafusion"><code>ParquetWriteOptions</code></a>.</div>
</div>
</div>
@@ -217,7 +245,28 @@ implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base
<p>Consumes this DataFrame: the native plan is released as soon as the stream is established.
The caller is responsible for closing the returned reader, and the supplied allocator must
- outlive it.</div>
+ outlive it.
+
+ <p>This method materializes every batch on the native heap before the first batch crosses the
+ FFI boundary, which can OOM the Rust side for unbounded or very large result sets. Prefer
+ <a href="#executeStream(org.apache.arrow.memory.BufferAllocator)"><code>executeStream(BufferAllocator)</code></a> for analytics-scale queries.</div>
+</section>
+</li>
+<li>
+<section class="detail" id="executeStream(org.apache.arrow.memory.BufferAllocator)">
+<h3>executeStream</h3>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">org.apache.arrow.vector.ipc.ArrowReader</span> <span class="element-name">executeStream</span><wbr><span class="parameters">(org.apache.arrow.memory.BufferAllocator allocator)</span></div>
+<div class="block">Execute the plan and return its record batches as a streaming <code>ArrowReader</code>. Each call to
+ <code>ArrowReader.loadNextBatch()</code> drives one async <code>stream.next()</code> on the native side, so
+ memory pressure stays bounded by the executor pipeline plus one in-flight batch instead of the
+ full result set.
+
+ <p>Consumes this DataFrame with the same lifecycle rules as <a href="#collect(org.apache.arrow.memory.BufferAllocator)"><code>collect(BufferAllocator)</code></a>:
+ the native plan is released as soon as the stream is established, the caller closes the
+ returned reader, and the supplied allocator must outlive it.
+
+ <p>For result sets that fit comfortably in native memory and are read in their entirety, <a href="#collect(org.apache.arrow.memory.BufferAllocator)"><code>collect(BufferAllocator)</code></a> remains a reasonable choice. For TB-scale or unbounded result sets,
+ use this method.</div>
</section>
</li>
<li>
@@ -361,6 +410,61 @@ implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base
</section>
</li>
<li>
+<section class="detail" id="writeCsv(java.lang.String)">
+<h3>writeCsv</h3>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">writeCsv</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> path)</span></div>
+<div class="block">Materialize this DataFrame as CSV at <code>path</code>. The path is treated as a directory unless
+ overridden via <a href="CsvWriteOptions.html#singleFileOutput(boolean)"><code>CsvWriteOptions.singleFileOutput(boolean)</code></a>. The receiver remains usable
+ and must still be closed independently.</div>
+<dl class="notes">
+<dt>Throws:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">RuntimeException</a></code> - if the write fails.</dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="writeCsv(java.lang.String,org.apache.datafusion.CsvWriteOptions)">
+<h3>writeCsv</h3>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">writeCsv</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> path,
+ <a href="CsvWriteOptions.html" title="class in org.apache.datafusion">CsvWriteOptions</a> options)</span></div>
+<div class="block">Materialize this DataFrame as CSV at <code>path</code> with the supplied <a href="CsvWriteOptions.html" title="class in org.apache.datafusion"><code>CsvWriteOptions</code></a>.
+ The receiver remains usable and must still be closed independently.</div>
+<dl class="notes">
+<dt>Throws:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - if <code>path</code> or <code>options</code> is <code>null</code>.</dd>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">RuntimeException</a></code> - if the write fails (path inaccessible, invalid compression spec,
+ etc.).</dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="writeJson(java.lang.String)">
+<h3>writeJson</h3>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">writeJson</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> path)</span></div>
+<div class="block">Materialize this DataFrame as newline-delimited JSON at <code>path</code>. The path is treated as a
+ directory unless overridden via <a href="JsonWriteOptions.html#singleFileOutput(boolean)"><code>JsonWriteOptions.singleFileOutput(boolean)</code></a>. The
+ receiver remains usable and must still be closed independently.</div>
+<dl class="notes">
+<dt>Throws:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">RuntimeException</a></code> - if the write fails.</dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="writeJson(java.lang.String,org.apache.datafusion.JsonWriteOptions)">
+<h3>writeJson</h3>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">writeJson</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> path,
+ <a href="JsonWriteOptions.html" title="class in org.apache.datafusion">JsonWriteOptions</a> options)</span></div>
+<div class="block">Materialize this DataFrame as newline-delimited JSON at <code>path</code> with the supplied <a href="JsonWriteOptions.html" title="class in org.apache.datafusion"><code>JsonWriteOptions</code></a>. The receiver remains usable and must still be closed independently.</div>
+<dl class="notes">
+<dt>Throws:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - if <code>path</code> or <code>options</code> is <code>null</code>.</dd>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">RuntimeException</a></code> - if the write fails (path inaccessible, invalid compression spec,
+ etc.).</dd>
+</dl>
+</section>
+</li>
+<li>
<section class="detail" id="close()">
<h3>close</h3>
<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">close</span>()</div>
diff --git a/api/org/apache/datafusion/FileCompressionType.html b/api/org/apache/datafusion/FileCompressionType.html
index 73770cc..f738721 100644
--- a/api/org/apache/datafusion/FileCompressionType.html
+++ b/api/org/apache/datafusion/FileCompressionType.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>FileCompressionType (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="declaration: package: org.apache.datafusion, enum: FileCompressionType">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
diff --git a/api/org/apache/datafusion/NdJsonReadOptions.html b/api/org/apache/datafusion/JsonWriteOptions.html
similarity index 65%
copy from api/org/apache/datafusion/NdJsonReadOptions.html
copy to api/org/apache/datafusion/JsonWriteOptions.html
index dec2e73..b22176a 100644
--- a/api/org/apache/datafusion/NdJsonReadOptions.html
+++ b/api/org/apache/datafusion/JsonWriteOptions.html
@@ -1,12 +1,12 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
-<title>NdJsonReadOptions (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
+<title>JsonWriteOptions (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
-<meta name="description" content="declaration: package: org.apache.datafusion, class: NdJsonReadOptions">
+<meta name="dc.created" content="2026-05-19">
+<meta name="description" content="declaration: package: org.apache.datafusion, class: JsonWriteOptions">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../script-dir/jquery-ui.min.css" title="Style">
@@ -35,7 +35,7 @@ loadScripts(document, 'script');</script>
<li><a href="../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
-<li><a href="class-use/NdJsonReadOptions.html">Use</a></li>
+<li><a href="class-use/JsonWriteOptions.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html#class">Help</a></li>
@@ -70,21 +70,31 @@ loadScripts(document, 'script');</script>
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span> <a href="package-summary.html">org.apache.datafusion</a></div>
-<h1 title="Class NdJsonReadOptions" class="title">Class NdJsonReadOptions</h1>
+<h1 title="Class JsonWriteOptions" class="title">Class JsonWriteOptions</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
-<div class="inheritance">org.apache.datafusion.NdJsonReadOptions</div>
+<div class="inheritance">org.apache.datafusion.JsonWriteOptions</div>
</div>
<section class="class-description" id="class-description">
<hr>
-<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">NdJsonReadOptions</span>
+<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">JsonWriteOptions</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
-<div class="block">Configuration knobs for newline-delimited JSON sources passed to <a href="SessionContext.html#registerJson(java.lang.String,java.lang.String,org.apache.datafusion.NdJsonReadOptions)"><code>SessionContext.registerJson(String, String, NdJsonReadOptions)</code></a> and <a href="SessionContext.html#readJson(java.lang.String,org.apache.datafusion.NdJsonReadOptions)"><code>SessionContext.readJson(String, NdJsonReadOptions)</code></a>.
+<div class="block">Configuration knobs for writing JSON, passed to <a href="DataFrame.html#writeJson(java.lang.String,org.apache.datafusion.JsonWriteOptions)"><code>DataFrame.writeJson(String, JsonWriteOptions)</code></a>.
- <p>Mirrors a subset of DataFusion's <code>NdJsonReadOptions</code>. All setters return <code>this</code>
- for fluent chaining. Defaults match the Rust struct: <code>fileExtension = ".json"</code>, <code>
- fileCompressionType = UNCOMPRESSED</code>; <code>schemaInferMaxRecords</code> unset (the DataFusion default
- is used).</div>
+ <p>Mirrors a subset of DataFusion's <code>DataFrameWriteOptions</code> and the writer-side <code>
+ JsonOptions</code>. All setters return <code>this</code> for fluent chaining. Defaults: every field <code>
+ null</code> or empty (meaning the DataFusion default is used).
+
+ <p>Path semantics: when <a href="#singleFileOutput(boolean)"><code>singleFileOutput(boolean)</code></a> is <code>true</code>, the path passed to
+ <code>writeJson</code> is the literal output filename. When left unset (the default) and there are no
+ partition columns, the path is treated as a directory that DataFusion populates with one or more
+ part-files.
+
+ <p>The output is always newline-delimited JSON (NDJSON). DataFusion's JSON writer does not emit
+ the bracketed array form, so there is no toggle for it here.
+
+ <p>Compression reuses <a href="FileCompressionType.html" title="enum class in org.apache.datafusion"><code>FileCompressionType</code></a> -- the same codec set (<code>UNCOMPRESSED</code>,
+ <code>GZIP</code>, <code>BZIP2</code>, <code>XZ</code>, <code>ZSTD</code>) the read side and the CSV writer accept.</div>
</section>
<section class="summary">
<ul class="summary-list">
@@ -96,7 +106,7 @@ loadScripts(document, 'script');</script>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
-<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">NdJsonReadOptions</a>()</code></div>
+<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">JsonWriteOptions</a>()</code></div>
<div class="col-last even-row-color"> </div>
</div>
</section>
@@ -112,18 +122,21 @@ loadScripts(document, 'script');</script>
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="NdJsonReadOptions.html" title="class in org.apache.datafusion">NdJsonReadOptions</a></code></div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="JsonWriteOptions.html" title="class in org.apache.datafusion">JsonWriteOptions</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#fileCompressionType(org.apache.datafusion.FileCompressionType)" class="member-name-link">fileCompressionType</a><wbr>(<a href="FileCompressionType.html" title="enum class in org.apache.datafusion">FileCompressionType</a> t)</code></div>
-<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="NdJsonReadOptions.html" title="class in org.apache.datafusion">NdJsonReadOptions</a></code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#fileExtension(java.lang.String)" class="member-name-link">fileExtension</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> ext)</code></div>
-<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="NdJsonReadOptions.html" title="class in org.apache.datafusion">NdJsonReadOptions</a></code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#schema(org.apache.arrow.vector.types.pojo.Schema)" class="member-name-link">schema</a><wbr>(org.apache.arrow.vector.types.pojo.Schema schema)</code></div>
-<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="NdJsonReadOptions.html" title="class in org.apache.datafusion">NdJsonReadOptions</a></code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#schemaInferMaxRecords(long)" class="member-name-link">schemaInferMaxRecords</a><wbr>(long n)</code></div>
-<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="block">Output compression codec.</div>
+</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="JsonWriteOptions.html" title="class in org.apache.datafusion">JsonWriteOptions</a></code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#partitionCols(java.lang.String...)" class="member-name-link">partitionCols</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>... cols)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="block">Hive-style partition columns.</div>
+</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="JsonWriteOptions.html" title="class in org.apache.datafusion">JsonWriteOptions</a></code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#singleFileOutput(boolean)" class="member-name-link">singleFileOutput</a><wbr>(boolean v)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="block">When <code>true</code>, write to a single file at the supplied path.</div>
+</div>
</div>
</div>
</div>
@@ -143,8 +156,8 @@ loadScripts(document, 'script');</script>
<ul class="member-list">
<li>
<section class="detail" id="<init>()">
-<h3>NdJsonReadOptions</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="element-name">NdJsonReadOptions</span>()</div>
+<h3>JsonWriteOptions</h3>
+<div class="member-signature"><span class="modifiers">public</span> <span class="element-name">JsonWriteOptions</span>()</div>
</section>
</li>
</ul>
@@ -156,27 +169,27 @@ loadScripts(document, 'script');</script>
<h2>Method Details</h2>
<ul class="member-list">
<li>
-<section class="detail" id="fileExtension(java.lang.String)">
-<h3>fileExtension</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="NdJsonReadOptions.html" title="class in org.apache.datafusion">NdJsonReadOptions</a></span> <span class="element-name">fileExtension</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> ext)</span></div>
+<section class="detail" id="singleFileOutput(boolean)">
+<h3>singleFileOutput</h3>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="JsonWriteOptions.html" title="class in org.apache.datafusion">JsonWriteOptions</a></span> <span class="element-name">singleFileOutput</span><wbr><span class="parameters">(boolean v)</span></div>
+<div class="block">When <code>true</code>, write to a single file at the supplied path. When left unset (the default)
+ and no partition columns are configured, the path is treated as a directory and DataFusion
+ writes one or more part-files.</div>
</section>
</li>
<li>
-<section class="detail" id="fileCompressionType(org.apache.datafusion.FileCompressionType)">
-<h3>fileCompressionType</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="NdJsonReadOptions.html" title="class in org.apache.datafusion">NdJsonReadOptions</a></span> <span class="element-name">fileCompressionType</span><wbr><span class="parameters">(<a href="FileCompressionType.html" title="enum class in org.apache.datafusion">FileCompressionType</a> t)</span></div>
-</section>
-</li>
-<li>
-<section class="detail" id="schemaInferMaxRecords(long)">
-<h3>schemaInferMaxRecords</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="NdJsonReadOptions.html" title="class in org.apache.datafusion">NdJsonReadOptions</a></span> <span class="element-name">schemaInferMaxRecords</span><wbr><span class="parameters">(long n)</span></div>
+<section class="detail" id="partitionCols(java.lang.String...)">
+<h3>partitionCols</h3>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="JsonWriteOptions.html" title="class in org.apache.datafusion">JsonWriteOptions</a></span> <span class="element-name">partitionCols</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>... cols)</span></div>
+<div class="block">Hive-style partition columns. Each column listed here is removed from the data rows and encoded
+ into the directory layout (one subdirectory per distinct value). Mutually exclusive with <a href="#singleFileOutput(boolean)"><code>singleFileOutput(boolean)</code></a> -- DataFusion rejects the combination at write time.</div>
</section>
</li>
<li>
-<section class="detail" id="schema(org.apache.arrow.vector.types.pojo.Schema)">
-<h3>schema</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="NdJsonReadOptions.html" title="class in org.apache.datafusion">NdJsonReadOptions</a></span> <span class="element-name">schema</span><wbr><span class="parameters">(org.apache.arrow.vector.types.pojo.Schema schema)</span></div>
+<section class="detail" id="fileCompressionType(org.apache.datafusion.FileCompressionType)">
+<h3>fileCompressionType</h3>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="JsonWriteOptions.html" title="class in org.apache.datafusion">JsonWriteOptions</a></span> <span class="element-name">fileCompressionType</span><wbr><span class="parameters">(<a href="FileCompressionType.html" title="enum class in org.apache.datafusion">FileCompressionType</a> t)</span></div>
+<div class="block">Output compression codec. Defaults to uncompressed.</div>
</section>
</li>
</ul>
diff --git a/api/org/apache/datafusion/NativeLibraryLoader.html b/api/org/apache/datafusion/NativeLibraryLoader.html
index 26c3917..e5a3cde 100644
--- a/api/org/apache/datafusion/NativeLibraryLoader.html
+++ b/api/org/apache/datafusion/NativeLibraryLoader.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>NativeLibraryLoader (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="declaration: package: org.apache.datafusion, class: NativeLibraryLoader">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
diff --git a/api/org/apache/datafusion/NdJsonReadOptions.html b/api/org/apache/datafusion/NdJsonReadOptions.html
index dec2e73..e6fff95 100644
--- a/api/org/apache/datafusion/NdJsonReadOptions.html
+++ b/api/org/apache/datafusion/NdJsonReadOptions.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>NdJsonReadOptions (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="declaration: package: org.apache.datafusion, class: NdJsonReadOptions">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
diff --git a/api/org/apache/datafusion/ParquetReadOptions.html b/api/org/apache/datafusion/ParquetReadOptions.html
index e5caa98..cb6ad6d 100644
--- a/api/org/apache/datafusion/ParquetReadOptions.html
+++ b/api/org/apache/datafusion/ParquetReadOptions.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>ParquetReadOptions (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="declaration: package: org.apache.datafusion, class: ParquetReadOptions">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
diff --git a/api/org/apache/datafusion/ParquetWriteOptions.html b/api/org/apache/datafusion/ParquetWriteOptions.html
index 6f9087b..fb914c2 100644
--- a/api/org/apache/datafusion/ParquetWriteOptions.html
+++ b/api/org/apache/datafusion/ParquetWriteOptions.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>ParquetWriteOptions (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="declaration: package: org.apache.datafusion, class: ParquetWriteOptions">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
diff --git a/api/org/apache/datafusion/ScalarFunction.html b/api/org/apache/datafusion/ScalarFunction.html
index ea4c2eb..eb32ea8 100644
--- a/api/org/apache/datafusion/ScalarFunction.html
+++ b/api/org/apache/datafusion/ScalarFunction.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>ScalarFunction (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="declaration: package: org.apache.datafusion, interface: ScalarFunction">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
diff --git a/api/org/apache/datafusion/ScalarFunctionArgs.html b/api/org/apache/datafusion/ScalarFunctionArgs.html
index e1dbef9..9b551df 100644
--- a/api/org/apache/datafusion/ScalarFunctionArgs.html
+++ b/api/org/apache/datafusion/ScalarFunctionArgs.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>ScalarFunctionArgs (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="declaration: package: org.apache.datafusion, record: ScalarFunctionArgs">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
diff --git a/api/org/apache/datafusion/ScalarUdf.html b/api/org/apache/datafusion/ScalarUdf.html
index 135aed4..dd562d7 100644
--- a/api/org/apache/datafusion/ScalarUdf.html
+++ b/api/org/apache/datafusion/ScalarUdf.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>ScalarUdf (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="declaration: package: org.apache.datafusion, class: ScalarUdf">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
diff --git a/api/org/apache/datafusion/SessionContext.html b/api/org/apache/datafusion/SessionContext.html
index 19db9e0..335462d 100644
--- a/api/org/apache/datafusion/SessionContext.html
+++ b/api/org/apache/datafusion/SessionContext.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>SessionContext (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="declaration: package: org.apache.datafusion, class: SessionContext">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
@@ -147,6 +147,17 @@ implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base
<div class="block">Read an Arrow IPC file as a <a href="DataFrame.html" title="class in org.apache.datafusion"><code>DataFrame</code></a> with the supplied <a href="ArrowReadOptions.html" title="class in org.apache.datafusion"><code>ArrowReadOptions</code></a>.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="DataFrame.html" title="class in org.apache.datafusion">DataFrame</a></code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#readAvro(java.lang.String)" class="member-name-link">readAvro</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> path)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="block">Read an Avro file as a <a href="DataFrame.html" title="class in org.apache.datafusion"><code>DataFrame</code></a> without registering it.</div>
+</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="DataFrame.html" title="class in org.apache.datafusion">DataFrame</a></code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#readAvro(java.lang.String,org.apache.datafusion.AvroReadOptions)" class="member-name-link">readAvro</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> path,
+ <a href="AvroReadOptions.html" title="class in org.apache.datafusion">AvroReadOptions</a> options)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="block">Read an Avro file as a <a href="DataFrame.html" title="class in org.apache.datafusion"><code>DataFrame</code></a> with the supplied <a href="AvroReadOptions.html" title="class in org.apache.datafusion"><code>AvroReadOptions</code></a>.</div>
+</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="DataFrame.html" title="class in org.apache.datafusion">DataFrame</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#readCsv(java.lang.String)" class="member-name-link">readCsv</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> path)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Read a CSV file as a <a href="DataFrame.html" title="class in org.apache.datafusion"><code>DataFrame</code></a> without registering it.</div>
@@ -194,6 +205,19 @@ implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base
<a href="ArrowReadOptions.html" title="class in org.apache.datafusion"><code>ArrowReadOptions</code></a>.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#registerAvro(java.lang.String,java.lang.String)" class="member-name-link">registerAvro</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> name,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> path)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="block">Register an Avro file (or directory of Avro files) as a table.</div>
+</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#registerAvro(java.lang.String,java.lang.String,org.apache.datafusion.AvroReadOptions)" class="member-name-link">registerAvro</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> name,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> path,
+ <a href="AvroReadOptions.html" title="class in org.apache.datafusion">AvroReadOptions</a> options)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="block">Register an Avro file (or directory of Avro files) as a table with the supplied <a href="AvroReadOptions.html" title="class in org.apache.datafusion"><code>AvroReadOptions</code></a>.</div>
+</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#registerCsv(java.lang.String,java.lang.String)" class="member-name-link">registerCsv</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> name,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> path)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
@@ -228,18 +252,24 @@ implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base
<div class="block">Register a parquet file as a table with the supplied <a href="ParquetReadOptions.html" title="class in org.apache.datafusion"><code>ParquetReadOptions</code></a>.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#registerUdf(org.apache.datafusion.ScalarUdf)" class="member-name-link">registerUdf</a><wbr>(<a href="ScalarUdf.html" title="class in org.apache.datafusion">ScalarUdf</a> udf)</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#registerTable(java.lang.String,org.apache.datafusion.TableProvider)" class="member-name-link">registerTable</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> name,
+ <a href="TableProvider.html" title="interface in org.apache.datafusion">TableProvider</a> provider)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
-<div class="block">Register a Java-implemented scalar UDF.</div>
+<div class="block">Register a Java-implemented <a href="TableProvider.html" title="interface in org.apache.datafusion"><code>TableProvider</code></a> under <code>name</code>.</div>
</div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="DataFrame.html" title="class in org.apache.datafusion">DataFrame</a></code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#sql(java.lang.String)" class="member-name-link">sql</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> query)</code></div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#registerUdf(org.apache.datafusion.ScalarUdf)" class="member-name-link">registerUdf</a><wbr>(<a href="ScalarUdf.html" title="class in org.apache.datafusion">ScalarUdf</a> udf)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
-<div class="block">Parse and plan <code>query</code>, returning a lazy <a href="DataFrame.html" title="class in org.apache.datafusion"><code>DataFrame</code></a>.</div>
+<div class="block">Register a Java-implemented scalar UDF.</div>
</div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>org.apache.arrow.vector.types.pojo.Schema</code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#tableSchema(java.lang.String)" class="member-name-link">tableSchema</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> tableName)</code></div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="DataFrame.html" title="class in org.apache.datafusion">DataFrame</a></code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#sql(java.lang.String)" class="member-name-link">sql</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> query)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="block">Parse and plan <code>query</code>, returning a lazy <a href="DataFrame.html" title="class in org.apache.datafusion"><code>DataFrame</code></a>.</div>
+</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>org.apache.arrow.vector.types.pojo.Schema</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#tableSchema(java.lang.String)" class="member-name-link">tableSchema</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> tableName)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Return the Arrow <code>Schema</code> of a registered table.</div>
</div>
</div>
@@ -501,6 +531,49 @@ implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base
</section>
</li>
<li>
+<section class="detail" id="registerAvro(java.lang.String,java.lang.String)">
+<h3>registerAvro</h3>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">registerAvro</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> name,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> path)</span></div>
+<div class="block">Register an Avro file (or directory of Avro files) as a table.</div>
+</section>
+</li>
+<li>
+<section class="detail" id="registerAvro(java.lang.String,java.lang.String,org.apache.datafusion.AvroReadOptions)">
+<h3>registerAvro</h3>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">registerAvro</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> name,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> path,
+ <a href="AvroReadOptions.html" title="class in org.apache.datafusion">AvroReadOptions</a> options)</span></div>
+<div class="block">Register an Avro file (or directory of Avro files) as a table with the supplied <a href="AvroReadOptions.html" title="class in org.apache.datafusion"><code>AvroReadOptions</code></a>.</div>
+<dl class="notes">
+<dt>Throws:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - if any of <code>name</code>, <code>path</code>, or <code>options</code> is
+ <code>null</code>.</dd>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">RuntimeException</a></code> - if registration fails (path not found, schema mismatch, etc.).</dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="readAvro(java.lang.String)">
+<h3>readAvro</h3>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="DataFrame.html" title="class in org.apache.datafusion">DataFrame</a></span> <span class="element-name">readAvro</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> path)</span></div>
+<div class="block">Read an Avro file as a <a href="DataFrame.html" title="class in org.apache.datafusion"><code>DataFrame</code></a> without registering it.</div>
+</section>
+</li>
+<li>
+<section class="detail" id="readAvro(java.lang.String,org.apache.datafusion.AvroReadOptions)">
+<h3>readAvro</h3>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="DataFrame.html" title="class in org.apache.datafusion">DataFrame</a></span> <span class="element-name">readAvro</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> path,
+ <a href="AvroReadOptions.html" title="class in org.apache.datafusion">AvroReadOptions</a> options)</span></div>
+<div class="block">Read an Avro file as a <a href="DataFrame.html" title="class in org.apache.datafusion"><code>DataFrame</code></a> with the supplied <a href="AvroReadOptions.html" title="class in org.apache.datafusion"><code>AvroReadOptions</code></a>.</div>
+<dl class="notes">
+<dt>Throws:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - if <code>path</code> or <code>options</code> is <code>null</code>.</dd>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">RuntimeException</a></code> - if the read fails.</dd>
+</dl>
+</section>
+</li>
+<li>
<section class="detail" id="registerUdf(org.apache.datafusion.ScalarUdf)">
<h3>registerUdf</h3>
<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">registerUdf</span><wbr><span class="parameters">(<a href="ScalarUdf.html" title="class in org.apache.datafusion">ScalarUdf</a> udf)</span></div>
@@ -517,6 +590,30 @@ implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base
</section>
</li>
<li>
+<section class="detail" id="registerTable(java.lang.String,org.apache.datafusion.TableProvider)">
+<h3>registerTable</h3>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">registerTable</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> name,
+ <a href="TableProvider.html" title="interface in org.apache.datafusion">TableProvider</a> provider)</span></div>
+<div class="block">Register a Java-implemented <a href="TableProvider.html" title="interface in org.apache.datafusion"><code>TableProvider</code></a> under <code>name</code>. SQL queries that
+ reference <code>name</code> call back into <code>provider</code> to fetch batches.
+
+ <p><a href="TableProvider.html#schema()"><code>TableProvider.schema()</code></a> is called once here, on the calling thread, and cached on the
+ native side. <a href="TableProvider.html#scan(org.apache.arrow.memory.BufferAllocator)"><code>TableProvider.scan(org.apache.arrow.memory.BufferAllocator)</code></a> is called once
+ per query that touches the table, on a Tokio worker thread; it must return a fresh, independent
+ <code>ArrowReader</code> on every call, with its buffers allocated from
+ the <code>BufferAllocator</code> the framework supplies.
+
+ <p>This is the Java counterpart to DataFusion's Rust <code>SessionContext::register_table</code>.</div>
+<dl class="notes">
+<dt>Throws:</dt>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - if <code>name</code> or <code>provider</code> is <code>null</code>.</dd>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalStateException.html" title="class or interface in java.lang" class="external-link">IllegalStateException</a></code> - if <code>provider.schema()</code> returns <code>null</code>, or this
+ context is closed.</dd>
+<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">RuntimeException</a></code> - if native registration fails.</dd>
+</dl>
+</section>
+</li>
+<li>
<section class="detail" id="close()">
<h3>close</h3>
<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">close</span>()</div>
diff --git a/api/org/apache/datafusion/SessionContextBuilder.html b/api/org/apache/datafusion/SessionContextBuilder.html
index 17e9f8a..b848c45 100644
--- a/api/org/apache/datafusion/SessionContextBuilder.html
+++ b/api/org/apache/datafusion/SessionContextBuilder.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>SessionContextBuilder (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="declaration: package: org.apache.datafusion, class: SessionContextBuilder">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
diff --git a/api/org/apache/datafusion/ParquetWriteOptions.html b/api/org/apache/datafusion/SimpleTableProvider.html
similarity index 59%
copy from api/org/apache/datafusion/ParquetWriteOptions.html
copy to api/org/apache/datafusion/SimpleTableProvider.html
index 6f9087b..ad883f0 100644
--- a/api/org/apache/datafusion/ParquetWriteOptions.html
+++ b/api/org/apache/datafusion/SimpleTableProvider.html
@@ -1,12 +1,12 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
-<title>ParquetWriteOptions (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
+<title>SimpleTableProvider (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
-<meta name="description" content="declaration: package: org.apache.datafusion, class: ParquetWriteOptions">
+<meta name="dc.created" content="2026-05-19">
+<meta name="description" content="declaration: package: org.apache.datafusion, class: SimpleTableProvider">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../script-dir/jquery-ui.min.css" title="Style">
@@ -35,7 +35,7 @@ loadScripts(document, 'script');</script>
<li><a href="../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
-<li><a href="class-use/ParquetWriteOptions.html">Use</a></li>
+<li><a href="class-use/SimpleTableProvider.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html#class">Help</a></li>
@@ -70,24 +70,30 @@ loadScripts(document, 'script');</script>
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span> <a href="package-summary.html">org.apache.datafusion</a></div>
-<h1 title="Class ParquetWriteOptions" class="title">Class ParquetWriteOptions</h1>
+<h1 title="Class SimpleTableProvider" class="title">Class SimpleTableProvider</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
-<div class="inheritance">org.apache.datafusion.ParquetWriteOptions</div>
+<div class="inheritance">org.apache.datafusion.SimpleTableProvider</div>
</div>
<section class="class-description" id="class-description">
+<dl class="notes">
+<dt>All Implemented Interfaces:</dt>
+<dd><code><a href="TableProvider.html" title="interface in org.apache.datafusion">TableProvider</a></code></dd>
+</dl>
<hr>
-<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">ParquetWriteOptions</span>
-<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
-<div class="block">Configuration knobs for writing parquet, passed to <a href="DataFrame.html#writeParquet(java.lang.String,org.apache.datafusion.ParquetWriteOptions)"><code>DataFrame.writeParquet(String, ParquetWriteOptions)</code></a>.
+<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">SimpleTableProvider</span>
+<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
+implements <a href="TableProvider.html" title="interface in org.apache.datafusion">TableProvider</a></span></div>
+<div class="block">A <a href="TableProvider.html" title="interface in org.apache.datafusion"><code>TableProvider</code></a> that pairs a fixed <code>Schema</code> with a function that opens a fresh
+ <code>ArrowReader</code> for each scan. Provided as a convenience for the common case where there is
+ no projection / filter pushdown to implement.
- <p>Mirrors a subset of DataFusion's <code>DataFrameWriteOptions</code> and <code>
- TableParquetOptions</code>. All setters return <code>this</code> for fluent chaining. Defaults: all fields
- <code>null</code> (meaning the DataFusion default is used).
+ <p>Each call to <a href="#scan(org.apache.arrow.memory.BufferAllocator)"><code>scan(BufferAllocator)</code></a> invokes the supplied function and returns whatever
+ <code>ArrowReader</code> it produces, so the function MUST return a fresh, independent reader on every
+ invocation (see the contract on <a href="TableProvider.html#scan(org.apache.arrow.memory.BufferAllocator)"><code>TableProvider.scan(BufferAllocator)</code></a>).
- <p>Path semantics: when <a href="#singleFileOutput(boolean)"><code>singleFileOutput(boolean)</code></a> is <code>true</code>, the path passed to
- <code>writeParquet</code> is the literal output filename. When left unset (the default), the path is a
- directory that DataFusion populates with one or more part-files.</div>
+ <p>As <a href="TableProvider.html" title="interface in org.apache.datafusion"><code>TableProvider</code></a> grows additional methods in the future, this class will provide
+ defaults so existing callers keep working without changes.</div>
</section>
<section class="summary">
<ul class="summary-list">
@@ -99,7 +105,8 @@ loadScripts(document, 'script');</script>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
-<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">ParquetWriteOptions</a>()</code></div>
+<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(org.apache.arrow.vector.types.pojo.Schema,java.util.function.Function)" class="member-name-link">SimpleTableProvider</a><wbr>(org.apache.arrow.vector.types.pojo.Schema schema,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a><org.apache.arrow.memory.BufferAllocator,<wbr>org.apache.arrow.vector.ipc.ArrowReader> scanFn)</code></div>
<div class="col-last even-row-color"> </div>
</div>
</section>
@@ -115,15 +122,15 @@ loadScripts(document, 'script');</script>
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="ParquetWriteOptions.html" title="class in org.apache.datafusion">ParquetWriteOptions</a></code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#compression(java.lang.String)" class="member-name-link">compression</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> spec)</code></div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>org.apache.arrow.vector.ipc.ArrowReader</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#scan(org.apache.arrow.memory.BufferAllocator)" class="member-name-link">scan</a><wbr>(org.apache.arrow.memory.BufferAllocator allocator)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
-<div class="block">Compression codec spec, passed verbatim to DataFusion.</div>
+<div class="block">Open a fresh batch stream for this table.</div>
</div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="ParquetWriteOptions.html" title="class in org.apache.datafusion">ParquetWriteOptions</a></code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#singleFileOutput(boolean)" class="member-name-link">singleFileOutput</a><wbr>(boolean v)</code></div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>org.apache.arrow.vector.types.pojo.Schema</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#schema()" class="member-name-link">schema</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
-<div class="block">When <code>true</code>, write to a single file at the supplied path.</div>
+<div class="block">The fixed schema of this table.</div>
</div>
</div>
</div>
@@ -143,9 +150,16 @@ loadScripts(document, 'script');</script>
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
-<section class="detail" id="<init>()">
-<h3>ParquetWriteOptions</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="element-name">ParquetWriteOptions</span>()</div>
+<section class="detail" id="<init>(org.apache.arrow.vector.types.pojo.Schema,java.util.function.Function)">
+<h3>SimpleTableProvider</h3>
+<div class="member-signature"><span class="modifiers">public</span> <span class="element-name">SimpleTableProvider</span><wbr><span class="parameters">(org.apache.arrow.vector.types.pojo.Schema schema,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a><org.apache.arrow.memory.BufferAllocator,<wbr>org.apache.arrow.vector.ipc.ArrowReader> scanFn)</span></div>
+<dl class="notes">
+<dt>Parameters:</dt>
+<dd><code>schema</code> - the table schema; returned as-is from <a href="#schema()"><code>schema()</code></a></dd>
+<dd><code>scanFn</code> - called on every <a href="#scan(org.apache.arrow.memory.BufferAllocator)"><code>scan(BufferAllocator)</code></a> with the framework-supplied
+ allocator; must return a fresh, independent <code>ArrowReader</code> each time</dd>
+</dl>
</section>
</li>
</ul>
@@ -157,20 +171,33 @@ loadScripts(document, 'script');</script>
<h2>Method Details</h2>
<ul class="member-list">
<li>
-<section class="detail" id="compression(java.lang.String)">
-<h3>compression</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="ParquetWriteOptions.html" title="class in org.apache.datafusion">ParquetWriteOptions</a></span> <span class="element-name">compression</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> spec)</span></div>
-<div class="block">Compression codec spec, passed verbatim to DataFusion. Examples: <code>"snappy"</code>, <code>
- "zstd(3)"</code>, <code>"gzip(6)"</code>, <code>"lz4"</code>, <code>"uncompressed"</code>. Invalid values surface as
- <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link"><code>RuntimeException</code></a> at write time.</div>
+<section class="detail" id="schema()">
+<h3>schema</h3>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">org.apache.arrow.vector.types.pojo.Schema</span> <span class="element-name">schema</span>()</div>
+<div class="block"><span class="descfrm-type-label">Description copied from interface: <code><a href="TableProvider.html#schema()">TableProvider</a></code></span></div>
+<div class="block">The fixed schema of this table. Called once, at registration time.</div>
+<dl class="notes">
+<dt>Specified by:</dt>
+<dd><code><a href="TableProvider.html#schema()">schema</a></code> in interface <code><a href="TableProvider.html" title="interface in org.apache.datafusion">TableProvider</a></code></dd>
+</dl>
</section>
</li>
<li>
-<section class="detail" id="singleFileOutput(boolean)">
-<h3>singleFileOutput</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="ParquetWriteOptions.html" title="class in org.apache.datafusion">ParquetWriteOptions</a></span> <span class="element-name">singleFileOutput</span><wbr><span class="parameters">(boolean v)</span></div>
-<div class="block">When <code>true</code>, write to a single file at the supplied path. When left unset (the default),
- the path is treated as a directory and DataFusion writes one or more part-files.</div>
+<section class="detail" id="scan(org.apache.arrow.memory.BufferAllocator)">
+<h3>scan</h3>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">org.apache.arrow.vector.ipc.ArrowReader</span> <span class="element-name">scan</span><wbr><span class="parameters">(org.apache.arrow.memory.BufferAllocator allocator)</span></div>
+<div class="block"><span class="descfrm-type-label">Description copied from interface: <code><a href="TableProvider.html#scan(org.apache.arrow.memory.BufferAllocator)">TableProvider</a></code></span></div>
+<div class="block">Open a fresh batch stream for this table. Called once per physical scan of the table — a single
+ query may invoke this more than once (self-joins, <code>UNION ALL</code> over the same table, etc.).
+
+ <p>Each invocation MUST return an independent <code>ArrowReader</code>. The reader's schema MUST
+ equal <a href="TableProvider.html#schema()"><code>TableProvider.schema()</code></a>. The reader's buffers MUST be allocated from <code>allocator</code> (or from
+ a child of it) — the framework needs the reader's allocator hierarchy to share a root with the
+ one it passes here. The allocator contract mirrors the one on <a href="ScalarFunction.html#evaluate(org.apache.arrow.memory.BufferAllocator,org.apache.datafusion.ScalarFunctionArgs)"><code>ScalarFunction.evaluate(org.apache.arrow.memory.BufferAllocator, org.apache.datafusion.ScalarFunctionArgs)</code></a>.</div>
+<dl class="notes">
+<dt>Specified by:</dt>
+<dd><code><a href="TableProvider.html#scan(org.apache.arrow.memory.BufferAllocator)">scan</a></code> in interface <code><a href="TableProvider.html" title="interface in org.apache.datafusion">TableProvider</a></code></dd>
+</dl>
</section>
</li>
</ul>
diff --git a/api/org/apache/datafusion/TableProvider.html b/api/org/apache/datafusion/TableProvider.html
new file mode 100644
index 0000000..81d0e95
--- /dev/null
+++ b/api/org/apache/datafusion/TableProvider.html
@@ -0,0 +1,169 @@
+<!DOCTYPE HTML>
+<html lang>
+<head>
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
+<title>TableProvider (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="dc.created" content="2026-05-19">
+<meta name="description" content="declaration: package: org.apache.datafusion, interface: TableProvider">
+<meta name="generator" content="javadoc/ClassWriterImpl">
+<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../script.js"></script>
+<script type="text/javascript" src="../../../script-dir/jquery-3.7.1.min.js"></script>
+<script type="text/javascript" src="../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-declaration-page">
+<script type="text/javascript">var evenRowColor = "even-row-color";
+var oddRowColor = "odd-row-color";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+var pathtoroot = "../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../index.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="nav-bar-cell1-rev">Class</li>
+<li><a href="class-use/TableProvider.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../index-all.html">Index</a></li>
+<li><a href="../../../help-doc.html#class">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div>
+<ul class="sub-nav-list">
+<li>Summary: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li>Constr | </li>
+<li><a href="#method-summary">Method</a></li>
+</ul>
+<ul class="sub-nav-list">
+<li>Detail: </li>
+<li>Field | </li>
+<li>Constr | </li>
+<li><a href="#method-detail">Method</a></li>
+</ul>
+</div>
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="sub-title"><span class="package-label-in-type">Package</span> <a href="package-summary.html">org.apache.datafusion</a></div>
+<h1 title="Interface TableProvider" class="title">Interface TableProvider</h1>
+</div>
+<section class="class-description" id="class-description">
+<dl class="notes">
+<dt>All Known Implementing Classes:</dt>
+<dd><code><a href="SimpleTableProvider.html" title="class in org.apache.datafusion">SimpleTableProvider</a></code></dd>
+</dl>
+<hr>
+<div class="type-signature"><span class="modifiers">public interface </span><span class="element-name type-name-label">TableProvider</span></div>
+<div class="block">A Java-implemented table that can be registered with a <a href="SessionContext.html" title="class in org.apache.datafusion"><code>SessionContext</code></a> via <a href="SessionContext.html#registerTable(java.lang.String,org.apache.datafusion.TableProvider)"><code>SessionContext.registerTable(String, TableProvider)</code></a>. Mirrors the role of DataFusion's Rust
+ <code>TableProvider</code> trait, but at present only exposes the methods needed for a full table
+ scan; future versions may add filter/projection pushdown and multi-partition support as default
+ methods so existing implementations keep working.
+
+ <p><a href="SimpleTableProvider.html" title="class in org.apache.datafusion"><code>SimpleTableProvider</code></a> is a ready-made implementation for the common case of "I have a
+ schema and a function that returns an <code>ArrowReader</code>".
+
+ <p>Each call to <a href="#scan(org.apache.arrow.memory.BufferAllocator)"><code>scan(BufferAllocator)</code></a> must return a fresh, independent <code>ArrowReader</code> so that queries which touch the table more than once (self-joins, <code>UNION ALL</code>,
+ repeated reads) work correctly. The returned reader is closed by the framework when the stream
+ ends.
+
+ <p>The schema returned by <a href="#schema()"><code>schema()</code></a> is captured once at registration time. Every batch
+ produced by every <code>ArrowReader</code> returned from <a href="#scan(org.apache.arrow.memory.BufferAllocator)"><code>scan(BufferAllocator)</code></a> must conform
+ to it; a mismatch fails the query.</div>
+</section>
+<section class="summary">
+<ul class="summary-list">
+<!-- ========== METHOD SUMMARY =========== -->
+<li>
+<section class="method-summary" id="method-summary">
+<h2>Method Summary</h2>
+<div id="method-summary-table">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab( [...]
+<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
+<div class="summary-table three-column-summary">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>org.apache.arrow.vector.ipc.ArrowReader</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#scan(org.apache.arrow.memory.BufferAllocator)" class="member-name-link">scan</a><wbr>(org.apache.arrow.memory.BufferAllocator allocator)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
+<div class="block">Open a fresh batch stream for this table.</div>
+</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>org.apache.arrow.vector.types.pojo.Schema</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#schema()" class="member-name-link">schema</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
+<div class="block">The fixed schema of this table.</div>
+</div>
+</div>
+</div>
+</div>
+</section>
+</li>
+</ul>
+</section>
+<section class="details">
+<ul class="details-list">
+<!-- ============ METHOD DETAIL ========== -->
+<li>
+<section class="method-details" id="method-detail">
+<h2>Method Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="schema()">
+<h3>schema</h3>
+<div class="member-signature"><span class="return-type">org.apache.arrow.vector.types.pojo.Schema</span> <span class="element-name">schema</span>()</div>
+<div class="block">The fixed schema of this table. Called once, at registration time.</div>
+</section>
+</li>
+<li>
+<section class="detail" id="scan(org.apache.arrow.memory.BufferAllocator)">
+<h3>scan</h3>
+<div class="member-signature"><span class="return-type">org.apache.arrow.vector.ipc.ArrowReader</span> <span class="element-name">scan</span><wbr><span class="parameters">(org.apache.arrow.memory.BufferAllocator allocator)</span></div>
+<div class="block">Open a fresh batch stream for this table. Called once per physical scan of the table — a single
+ query may invoke this more than once (self-joins, <code>UNION ALL</code> over the same table, etc.).
+
+ <p>Each invocation MUST return an independent <code>ArrowReader</code>. The reader's schema MUST
+ equal <a href="#schema()"><code>schema()</code></a>. The reader's buffers MUST be allocated from <code>allocator</code> (or from
+ a child of it) — the framework needs the reader's allocator hierarchy to share a root with the
+ one it passes here. The allocator contract mirrors the one on <a href="ScalarFunction.html#evaluate(org.apache.arrow.memory.BufferAllocator,org.apache.datafusion.ScalarFunctionArgs)"><code>ScalarFunction.evaluate(org.apache.arrow.memory.BufferAllocator, org.apache.datafusion.ScalarFunctionArgs)</code></a>.</div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+<!-- ========= END OF CLASS DATA ========= -->
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright © 2026. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/api/org/apache/datafusion/UnnestOptions.html b/api/org/apache/datafusion/UnnestOptions.html
index 60c1fe4..4b58fe7 100644
--- a/api/org/apache/datafusion/UnnestOptions.html
+++ b/api/org/apache/datafusion/UnnestOptions.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>UnnestOptions (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="declaration: package: org.apache.datafusion, class: UnnestOptions">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
diff --git a/api/org/apache/datafusion/Volatility.html b/api/org/apache/datafusion/Volatility.html
index 953dab1..41df3b7 100644
--- a/api/org/apache/datafusion/Volatility.html
+++ b/api/org/apache/datafusion/Volatility.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>Volatility (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="declaration: package: org.apache.datafusion, enum: Volatility">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
diff --git a/api/org/apache/datafusion/class-use/ArrowReadOptions.html b/api/org/apache/datafusion/class-use/ArrowReadOptions.html
index 89dc779..cfbe597 100644
--- a/api/org/apache/datafusion/class-use/ArrowReadOptions.html
+++ b/api/org/apache/datafusion/class-use/ArrowReadOptions.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>Uses of Class org.apache.datafusion.ArrowReadOptions (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="use: package: org.apache.datafusion, class: ArrowReadOptions">
<meta name="generator" content="javadoc/ClassUseWriter">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
diff --git a/api/org/apache/datafusion/class-use/ArrowReadOptions.html b/api/org/apache/datafusion/class-use/AvroReadOptions.html
similarity index 57%
copy from api/org/apache/datafusion/class-use/ArrowReadOptions.html
copy to api/org/apache/datafusion/class-use/AvroReadOptions.html
index 89dc779..661da20 100644
--- a/api/org/apache/datafusion/class-use/ArrowReadOptions.html
+++ b/api/org/apache/datafusion/class-use/AvroReadOptions.html
@@ -1,12 +1,12 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
-<title>Uses of Class org.apache.datafusion.ArrowReadOptions (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
+<title>Uses of Class org.apache.datafusion.AvroReadOptions (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
-<meta name="description" content="use: package: org.apache.datafusion, class: ArrowReadOptions">
+<meta name="dc.created" content="2026-05-19">
+<meta name="description" content="use: package: org.apache.datafusion, class: AvroReadOptions">
<meta name="generator" content="javadoc/ClassUseWriter">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
@@ -30,7 +30,7 @@ loadScripts(document, 'script');</script>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="../package-summary.html">Package</a></li>
-<li><a href="../ArrowReadOptions.html" title="class in org.apache.datafusion">Class</a></li>
+<li><a href="../AvroReadOptions.html" title="class in org.apache.datafusion">Class</a></li>
<li class="nav-bar-cell1-rev">Use</li>
<li><a href="../package-tree.html">Tree</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
@@ -49,9 +49,9 @@ loadScripts(document, 'script');</script>
<div class="flex-content">
<main role="main">
<div class="header">
-<h1 title="Uses of Class org.apache.datafusion.ArrowReadOptions" class="title">Uses of Class<br>org.apache.datafusion.ArrowReadOptions</h1>
+<h1 title="Uses of Class org.apache.datafusion.AvroReadOptions" class="title">Uses of Class<br>org.apache.datafusion.AvroReadOptions</h1>
</div>
-<div class="caption"><span>Packages that use <a href="../ArrowReadOptions.html" title="class in org.apache.datafusion">ArrowReadOptions</a></span></div>
+<div class="caption"><span>Packages that use <a href="../AvroReadOptions.html" title="class in org.apache.datafusion">AvroReadOptions</a></span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Package</div>
<div class="table-header col-last">Description</div>
@@ -62,37 +62,36 @@ loadScripts(document, 'script');</script>
<ul class="block-list">
<li>
<section class="detail" id="org.apache.datafusion">
-<h2>Uses of <a href="../ArrowReadOptions.html" title="class in org.apache.datafusion">ArrowReadOptions</a> in <a href="../package-summary.html">org.apache.datafusion</a></h2>
-<div class="caption"><span>Methods in <a href="../package-summary.html">org.apache.datafusion</a> that return <a href="../ArrowReadOptions.html" title="class in org.apache.datafusion">ArrowReadOptions</a></span></div>
+<h2>Uses of <a href="../AvroReadOptions.html" title="class in org.apache.datafusion">AvroReadOptions</a> in <a href="../package-summary.html">org.apache.datafusion</a></h2>
+<div class="caption"><span>Methods in <a href="../package-summary.html">org.apache.datafusion</a> that return <a href="../AvroReadOptions.html" title="class in org.apache.datafusion">AvroReadOptions</a></span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
-<div class="col-first even-row-color"><code><a href="../ArrowReadOptions.html" title="class in org.apache.datafusion">ArrowReadOptions</a></code></div>
-<div class="col-second even-row-color"><span class="type-name-label">ArrowReadOptions.</span><code><a href="../ArrowReadOptions.html#fileExtension(java.lang.String)" class="member-name-link">fileExtension</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> ext)</code></div>
+<div class="col-first even-row-color"><code><a href="../AvroReadOptions.html" title="class in org.apache.datafusion">AvroReadOptions</a></code></div>
+<div class="col-second even-row-color"><span class="type-name-label">AvroReadOptions.</span><code><a href="../AvroReadOptions.html#fileExtension(java.lang.String)" class="member-name-link">fileExtension</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> ext)</code></div>
<div class="col-last even-row-color"> </div>
-<div class="col-first odd-row-color"><code><a href="../ArrowReadOptions.html" title="class in org.apache.datafusion">ArrowReadOptions</a></code></div>
-<div class="col-second odd-row-color"><span class="type-name-label">ArrowReadOptions.</span><code><a href="../ArrowReadOptions.html#schema(org.apache.arrow.vector.types.pojo.Schema)" class="member-name-link">schema</a><wbr>(org.apache.arrow.vector.types.pojo.Schema schema)</code></div>
+<div class="col-first odd-row-color"><code><a href="../AvroReadOptions.html" title="class in org.apache.datafusion">AvroReadOptions</a></code></div>
+<div class="col-second odd-row-color"><span class="type-name-label">AvroReadOptions.</span><code><a href="../AvroReadOptions.html#schema(org.apache.arrow.vector.types.pojo.Schema)" class="member-name-link">schema</a><wbr>(org.apache.arrow.vector.types.pojo.Schema schema)</code></div>
<div class="col-last odd-row-color"> </div>
</div>
-<div class="caption"><span>Methods in <a href="../package-summary.html">org.apache.datafusion</a> with parameters of type <a href="../ArrowReadOptions.html" title="class in org.apache.datafusion">ArrowReadOptions</a></span></div>
+<div class="caption"><span>Methods in <a href="../package-summary.html">org.apache.datafusion</a> with parameters of type <a href="../AvroReadOptions.html" title="class in org.apache.datafusion">AvroReadOptions</a></span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code><a href="../DataFrame.html" title="class in org.apache.datafusion">DataFrame</a></code></div>
-<div class="col-second even-row-color"><span class="type-name-label">SessionContext.</span><code><a href="../SessionContext.html#readArrow(java.lang.String,org.apache.datafusion.ArrowReadOptions)" class="member-name-link">readArrow</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> path,
- <a href="../ArrowReadOptions.html" title="class in org.apache.datafusion">ArrowReadOptions</a> options)</code></div>
+<div class="col-second even-row-color"><span class="type-name-label">SessionContext.</span><code><a href="../SessionContext.html#readAvro(java.lang.String,org.apache.datafusion.AvroReadOptions)" class="member-name-link">readAvro</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> path,
+ <a href="../AvroReadOptions.html" title="class in org.apache.datafusion">AvroReadOptions</a> options)</code></div>
<div class="col-last even-row-color">
-<div class="block">Read an Arrow IPC file as a <a href="../DataFrame.html" title="class in org.apache.datafusion"><code>DataFrame</code></a> with the supplied <a href="../ArrowReadOptions.html" title="class in org.apache.datafusion"><code>ArrowReadOptions</code></a>.</div>
+<div class="block">Read an Avro file as a <a href="../DataFrame.html" title="class in org.apache.datafusion"><code>DataFrame</code></a> with the supplied <a href="../AvroReadOptions.html" title="class in org.apache.datafusion"><code>AvroReadOptions</code></a>.</div>
</div>
<div class="col-first odd-row-color"><code>void</code></div>
-<div class="col-second odd-row-color"><span class="type-name-label">SessionContext.</span><code><a href="../SessionContext.html#registerArrow(java.lang.String,java.lang.String,org.apache.datafusion.ArrowReadOptions)" class="member-name-link">registerArrow</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> name,
+<div class="col-second odd-row-color"><span class="type-name-label">SessionContext.</span><code><a href="../SessionContext.html#registerAvro(java.lang.String,java.lang.String,org.apache.datafusion.AvroReadOptions)" class="member-name-link">registerAvro</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> name,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> path,
- <a href="../ArrowReadOptions.html" title="class in org.apache.datafusion">ArrowReadOptions</a> options)</code></div>
+ <a href="../AvroReadOptions.html" title="class in org.apache.datafusion">AvroReadOptions</a> options)</code></div>
<div class="col-last odd-row-color">
-<div class="block">Register an Arrow IPC file (or directory of Arrow IPC files) as a table with the supplied
- <a href="../ArrowReadOptions.html" title="class in org.apache.datafusion"><code>ArrowReadOptions</code></a>.</div>
+<div class="block">Register an Avro file (or directory of Avro files) as a table with the supplied <a href="../AvroReadOptions.html" title="class in org.apache.datafusion"><code>AvroReadOptions</code></a>.</div>
</div>
</div>
</section>
diff --git a/api/org/apache/datafusion/class-use/ColumnarValue.Array.html b/api/org/apache/datafusion/class-use/ColumnarValue.Array.html
index fd5761e..8ff6006 100644
--- a/api/org/apache/datafusion/class-use/ColumnarValue.Array.html
+++ b/api/org/apache/datafusion/class-use/ColumnarValue.Array.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>Uses of Record Class org.apache.datafusion.ColumnarValue.Array (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="use: package: org.apache.datafusion, interface: ColumnarValue, record: Array">
<meta name="generator" content="javadoc/ClassUseWriter">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
diff --git a/api/org/apache/datafusion/class-use/ColumnarValue.Scalar.html b/api/org/apache/datafusion/class-use/ColumnarValue.Scalar.html
index 21f6d13..1a14747 100644
--- a/api/org/apache/datafusion/class-use/ColumnarValue.Scalar.html
+++ b/api/org/apache/datafusion/class-use/ColumnarValue.Scalar.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>Uses of Record Class org.apache.datafusion.ColumnarValue.Scalar (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="use: package: org.apache.datafusion, interface: ColumnarValue, record: Scalar">
<meta name="generator" content="javadoc/ClassUseWriter">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
diff --git a/api/org/apache/datafusion/class-use/ColumnarValue.html b/api/org/apache/datafusion/class-use/ColumnarValue.html
index 880f3fc..89b0207 100644
--- a/api/org/apache/datafusion/class-use/ColumnarValue.html
+++ b/api/org/apache/datafusion/class-use/ColumnarValue.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>Uses of Interface org.apache.datafusion.ColumnarValue (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="use: package: org.apache.datafusion, interface: ColumnarValue">
<meta name="generator" content="javadoc/ClassUseWriter">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
diff --git a/api/org/apache/datafusion/class-use/CsvReadOptions.html b/api/org/apache/datafusion/class-use/CsvReadOptions.html
index db7a20b..c06ce99 100644
--- a/api/org/apache/datafusion/class-use/CsvReadOptions.html
+++ b/api/org/apache/datafusion/class-use/CsvReadOptions.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>Uses of Class org.apache.datafusion.CsvReadOptions (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="use: package: org.apache.datafusion, class: CsvReadOptions">
<meta name="generator" content="javadoc/ClassUseWriter">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
diff --git a/api/org/apache/datafusion/class-use/CsvWriteOptions.html b/api/org/apache/datafusion/class-use/CsvWriteOptions.html
new file mode 100644
index 0000000..b6d62a0
--- /dev/null
+++ b/api/org/apache/datafusion/class-use/CsvWriteOptions.html
@@ -0,0 +1,136 @@
+<!DOCTYPE HTML>
+<html lang>
+<head>
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
+<title>Uses of Class org.apache.datafusion.CsvWriteOptions (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="dc.created" content="2026-05-19">
+<meta name="description" content="use: package: org.apache.datafusion, class: CsvWriteOptions">
+<meta name="generator" content="javadoc/ClassUseWriter">
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+<script type="text/javascript" src="../../../../script-dir/jquery-3.7.1.min.js"></script>
+<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
+</head>
+<body class="class-use-page">
+<script type="text/javascript">var pathtoroot = "../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<div class="flex-box">
+<header role="banner" class="flex-header">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../index.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../CsvWriteOptions.html" title="class in org.apache.datafusion">Class</a></li>
+<li class="nav-bar-cell1-rev">Use</li>
+<li><a href="../package-tree.html">Tree</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html#use">Help</a></li>
+</ul>
+</div>
+<div class="sub-nav">
+<div class="nav-list-search"><label for="search-input">SEARCH:</label>
+<input type="text" id="search-input" value="search" disabled="disabled">
+<input type="reset" id="reset-button" value="reset" disabled="disabled">
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="flex-content">
+<main role="main">
+<div class="header">
+<h1 title="Uses of Class org.apache.datafusion.CsvWriteOptions" class="title">Uses of Class<br>org.apache.datafusion.CsvWriteOptions</h1>
+</div>
+<div class="caption"><span>Packages that use <a href="../CsvWriteOptions.html" title="class in org.apache.datafusion">CsvWriteOptions</a></span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Package</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><a href="#org.apache.datafusion">org.apache.datafusion</a></div>
+<div class="col-last even-row-color"> </div>
+</div>
+<section class="class-uses">
+<ul class="block-list">
+<li>
+<section class="detail" id="org.apache.datafusion">
+<h2>Uses of <a href="../CsvWriteOptions.html" title="class in org.apache.datafusion">CsvWriteOptions</a> in <a href="../package-summary.html">org.apache.datafusion</a></h2>
+<div class="caption"><span>Methods in <a href="../package-summary.html">org.apache.datafusion</a> that return <a href="../CsvWriteOptions.html" title="class in org.apache.datafusion">CsvWriteOptions</a></span></div>
+<div class="summary-table three-column-summary">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><code><a href="../CsvWriteOptions.html" title="class in org.apache.datafusion">CsvWriteOptions</a></code></div>
+<div class="col-second even-row-color"><span class="type-name-label">CsvWriteOptions.</span><code><a href="../CsvWriteOptions.html#delimiter(byte)" class="member-name-link">delimiter</a><wbr>(byte b)</code></div>
+<div class="col-last even-row-color">
+<div class="block">Field delimiter byte.</div>
+</div>
+<div class="col-first odd-row-color"><code><a href="../CsvWriteOptions.html" title="class in org.apache.datafusion">CsvWriteOptions</a></code></div>
+<div class="col-second odd-row-color"><span class="type-name-label">CsvWriteOptions.</span><code><a href="../CsvWriteOptions.html#escape(byte)" class="member-name-link">escape</a><wbr>(byte b)</code></div>
+<div class="col-last odd-row-color">
+<div class="block">Escape character byte.</div>
+</div>
+<div class="col-first even-row-color"><code><a href="../CsvWriteOptions.html" title="class in org.apache.datafusion">CsvWriteOptions</a></code></div>
+<div class="col-second even-row-color"><span class="type-name-label">CsvWriteOptions.</span><code><a href="../CsvWriteOptions.html#fileCompressionType(org.apache.datafusion.FileCompressionType)" class="member-name-link">fileCompressionType</a><wbr>(<a href="../FileCompressionType.html" title="enum class in org.apache.datafusion">FileCompressionType</a> t)</code></div>
+<div class="col-last even-row-color">
+<div class="block">Output compression codec.</div>
+</div>
+<div class="col-first odd-row-color"><code><a href="../CsvWriteOptions.html" title="class in org.apache.datafusion">CsvWriteOptions</a></code></div>
+<div class="col-second odd-row-color"><span class="type-name-label">CsvWriteOptions.</span><code><a href="../CsvWriteOptions.html#hasHeader(boolean)" class="member-name-link">hasHeader</a><wbr>(boolean v)</code></div>
+<div class="col-last odd-row-color">
+<div class="block">Whether to write a header row.</div>
+</div>
+<div class="col-first even-row-color"><code><a href="../CsvWriteOptions.html" title="class in org.apache.datafusion">CsvWriteOptions</a></code></div>
+<div class="col-second even-row-color"><span class="type-name-label">CsvWriteOptions.</span><code><a href="../CsvWriteOptions.html#nullValue(java.lang.String)" class="member-name-link">nullValue</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> s)</code></div>
+<div class="col-last even-row-color">
+<div class="block">String to write for SQL NULL values.</div>
+</div>
+<div class="col-first odd-row-color"><code><a href="../CsvWriteOptions.html" title="class in org.apache.datafusion">CsvWriteOptions</a></code></div>
+<div class="col-second odd-row-color"><span class="type-name-label">CsvWriteOptions.</span><code><a href="../CsvWriteOptions.html#partitionCols(java.lang.String...)" class="member-name-link">partitionCols</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>... cols)</code></div>
+<div class="col-last odd-row-color">
+<div class="block">Hive-style partition columns.</div>
+</div>
+<div class="col-first even-row-color"><code><a href="../CsvWriteOptions.html" title="class in org.apache.datafusion">CsvWriteOptions</a></code></div>
+<div class="col-second even-row-color"><span class="type-name-label">CsvWriteOptions.</span><code><a href="../CsvWriteOptions.html#quote(byte)" class="member-name-link">quote</a><wbr>(byte b)</code></div>
+<div class="col-last even-row-color">
+<div class="block">Quote character byte.</div>
+</div>
+<div class="col-first odd-row-color"><code><a href="../CsvWriteOptions.html" title="class in org.apache.datafusion">CsvWriteOptions</a></code></div>
+<div class="col-second odd-row-color"><span class="type-name-label">CsvWriteOptions.</span><code><a href="../CsvWriteOptions.html#singleFileOutput(boolean)" class="member-name-link">singleFileOutput</a><wbr>(boolean v)</code></div>
+<div class="col-last odd-row-color">
+<div class="block">When <code>true</code>, write to a single file at the supplied path.</div>
+</div>
+</div>
+<div class="caption"><span>Methods in <a href="../package-summary.html">org.apache.datafusion</a> with parameters of type <a href="../CsvWriteOptions.html" title="class in org.apache.datafusion">CsvWriteOptions</a></span></div>
+<div class="summary-table three-column-summary">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><code>void</code></div>
+<div class="col-second even-row-color"><span class="type-name-label">DataFrame.</span><code><a href="../DataFrame.html#writeCsv(java.lang.String,org.apache.datafusion.CsvWriteOptions)" class="member-name-link">writeCsv</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> path,
+ <a href="../CsvWriteOptions.html" title="class in org.apache.datafusion">CsvWriteOptions</a> options)</code></div>
+<div class="col-last even-row-color">
+<div class="block">Materialize this DataFrame as CSV at <code>path</code> with the supplied <a href="../CsvWriteOptions.html" title="class in org.apache.datafusion"><code>CsvWriteOptions</code></a>.</div>
+</div>
+</div>
+</section>
+</li>
+</ul>
+</section>
+</main>
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright © 2026. All rights reserved.</small></p>
+</footer>
+</div>
+</div>
+</body>
+</html>
diff --git a/api/org/apache/datafusion/class-use/DataFrame.html b/api/org/apache/datafusion/class-use/DataFrame.html
index e546f54..2b4364b 100644
--- a/api/org/apache/datafusion/class-use/DataFrame.html
+++ b/api/org/apache/datafusion/class-use/DataFrame.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>Uses of Class org.apache.datafusion.DataFrame (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="use: package: org.apache.datafusion, class: DataFrame">
<meta name="generator" content="javadoc/ClassUseWriter">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
@@ -111,6 +111,17 @@ loadScripts(document, 'script');</script>
<div class="block">Read an Arrow IPC file as a <a href="../DataFrame.html" title="class in org.apache.datafusion"><code>DataFrame</code></a> with the supplied <a href="../ArrowReadOptions.html" title="class in org.apache.datafusion"><code>ArrowReadOptions</code></a>.</div>
</div>
<div class="col-first even-row-color"><code><a href="../DataFrame.html" title="class in org.apache.datafusion">DataFrame</a></code></div>
+<div class="col-second even-row-color"><span class="type-name-label">SessionContext.</span><code><a href="../SessionContext.html#readAvro(java.lang.String)" class="member-name-link">readAvro</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> path)</code></div>
+<div class="col-last even-row-color">
+<div class="block">Read an Avro file as a <a href="../DataFrame.html" title="class in org.apache.datafusion"><code>DataFrame</code></a> without registering it.</div>
+</div>
+<div class="col-first odd-row-color"><code><a href="../DataFrame.html" title="class in org.apache.datafusion">DataFrame</a></code></div>
+<div class="col-second odd-row-color"><span class="type-name-label">SessionContext.</span><code><a href="../SessionContext.html#readAvro(java.lang.String,org.apache.datafusion.AvroReadOptions)" class="member-name-link">readAvro</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> path,
+ <a href="../AvroReadOptions.html" title="class in org.apache.datafusion">AvroReadOptions</a> options)</code></div>
+<div class="col-last odd-row-color">
+<div class="block">Read an Avro file as a <a href="../DataFrame.html" title="class in org.apache.datafusion"><code>DataFrame</code></a> with the supplied <a href="../AvroReadOptions.html" title="class in org.apache.datafusion"><code>AvroReadOptions</code></a>.</div>
+</div>
+<div class="col-first even-row-color"><code><a href="../DataFrame.html" title="class in org.apache.datafusion">DataFrame</a></code></div>
<div class="col-second even-row-color"><span class="type-name-label">SessionContext.</span><code><a href="../SessionContext.html#readCsv(java.lang.String)" class="member-name-link">readCsv</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> path)</code></div>
<div class="col-last even-row-color">
<div class="block">Read a CSV file as a <a href="../DataFrame.html" title="class in org.apache.datafusion"><code>DataFrame</code></a> without registering it.</div>
diff --git a/api/org/apache/datafusion/class-use/FileCompressionType.html b/api/org/apache/datafusion/class-use/FileCompressionType.html
index dbd1df7..de73281 100644
--- a/api/org/apache/datafusion/class-use/FileCompressionType.html
+++ b/api/org/apache/datafusion/class-use/FileCompressionType.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>Uses of Enum Class org.apache.datafusion.FileCompressionType (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="use: package: org.apache.datafusion, enum: FileCompressionType">
<meta name="generator" content="javadoc/ClassUseWriter">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
@@ -88,6 +88,16 @@ the order they are declared.</div>
<div class="col-first even-row-color"><code><a href="../CsvReadOptions.html" title="class in org.apache.datafusion">CsvReadOptions</a></code></div>
<div class="col-second even-row-color"><span class="type-name-label">CsvReadOptions.</span><code><a href="../CsvReadOptions.html#fileCompressionType(org.apache.datafusion.FileCompressionType)" class="member-name-link">fileCompressionType</a><wbr>(<a href="../FileCompressionType.html" title="enum class in org.apache.datafusion">FileCompressionType</a> t)</code></div>
<div class="col-last even-row-color"> </div>
+<div class="col-first odd-row-color"><code><a href="../CsvWriteOptions.html" title="class in org.apache.datafusion">CsvWriteOptions</a></code></div>
+<div class="col-second odd-row-color"><span class="type-name-label">CsvWriteOptions.</span><code><a href="../CsvWriteOptions.html#fileCompressionType(org.apache.datafusion.FileCompressionType)" class="member-name-link">fileCompressionType</a><wbr>(<a href="../FileCompressionType.html" title="enum class in org.apache.datafusion">FileCompressionType</a> t)</code></div>
+<div class="col-last odd-row-color">
+<div class="block">Output compression codec.</div>
+</div>
+<div class="col-first even-row-color"><code><a href="../JsonWriteOptions.html" title="class in org.apache.datafusion">JsonWriteOptions</a></code></div>
+<div class="col-second even-row-color"><span class="type-name-label">JsonWriteOptions.</span><code><a href="../JsonWriteOptions.html#fileCompressionType(org.apache.datafusion.FileCompressionType)" class="member-name-link">fileCompressionType</a><wbr>(<a href="../FileCompressionType.html" title="enum class in org.apache.datafusion">FileCompressionType</a> t)</code></div>
+<div class="col-last even-row-color">
+<div class="block">Output compression codec.</div>
+</div>
<div class="col-first odd-row-color"><code><a href="../NdJsonReadOptions.html" title="class in org.apache.datafusion">NdJsonReadOptions</a></code></div>
<div class="col-second odd-row-color"><span class="type-name-label">NdJsonReadOptions.</span><code><a href="../NdJsonReadOptions.html#fileCompressionType(org.apache.datafusion.FileCompressionType)" class="member-name-link">fileCompressionType</a><wbr>(<a href="../FileCompressionType.html" title="enum class in org.apache.datafusion">FileCompressionType</a> t)</code></div>
<div class="col-last odd-row-color"> </div>
diff --git a/api/org/apache/datafusion/class-use/ParquetWriteOptions.html b/api/org/apache/datafusion/class-use/JsonWriteOptions.html
similarity index 55%
copy from api/org/apache/datafusion/class-use/ParquetWriteOptions.html
copy to api/org/apache/datafusion/class-use/JsonWriteOptions.html
index b37afcf..575cac7 100644
--- a/api/org/apache/datafusion/class-use/ParquetWriteOptions.html
+++ b/api/org/apache/datafusion/class-use/JsonWriteOptions.html
@@ -1,12 +1,12 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
-<title>Uses of Class org.apache.datafusion.ParquetWriteOptions (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
+<title>Uses of Class org.apache.datafusion.JsonWriteOptions (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
-<meta name="description" content="use: package: org.apache.datafusion, class: ParquetWriteOptions">
+<meta name="dc.created" content="2026-05-19">
+<meta name="description" content="use: package: org.apache.datafusion, class: JsonWriteOptions">
<meta name="generator" content="javadoc/ClassUseWriter">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
@@ -30,7 +30,7 @@ loadScripts(document, 'script');</script>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="../package-summary.html">Package</a></li>
-<li><a href="../ParquetWriteOptions.html" title="class in org.apache.datafusion">Class</a></li>
+<li><a href="../JsonWriteOptions.html" title="class in org.apache.datafusion">Class</a></li>
<li class="nav-bar-cell1-rev">Use</li>
<li><a href="../package-tree.html">Tree</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
@@ -49,9 +49,9 @@ loadScripts(document, 'script');</script>
<div class="flex-content">
<main role="main">
<div class="header">
-<h1 title="Uses of Class org.apache.datafusion.ParquetWriteOptions" class="title">Uses of Class<br>org.apache.datafusion.ParquetWriteOptions</h1>
+<h1 title="Uses of Class org.apache.datafusion.JsonWriteOptions" class="title">Uses of Class<br>org.apache.datafusion.JsonWriteOptions</h1>
</div>
-<div class="caption"><span>Packages that use <a href="../ParquetWriteOptions.html" title="class in org.apache.datafusion">ParquetWriteOptions</a></span></div>
+<div class="caption"><span>Packages that use <a href="../JsonWriteOptions.html" title="class in org.apache.datafusion">JsonWriteOptions</a></span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Package</div>
<div class="table-header col-last">Description</div>
@@ -62,33 +62,38 @@ loadScripts(document, 'script');</script>
<ul class="block-list">
<li>
<section class="detail" id="org.apache.datafusion">
-<h2>Uses of <a href="../ParquetWriteOptions.html" title="class in org.apache.datafusion">ParquetWriteOptions</a> in <a href="../package-summary.html">org.apache.datafusion</a></h2>
-<div class="caption"><span>Methods in <a href="../package-summary.html">org.apache.datafusion</a> that return <a href="../ParquetWriteOptions.html" title="class in org.apache.datafusion">ParquetWriteOptions</a></span></div>
+<h2>Uses of <a href="../JsonWriteOptions.html" title="class in org.apache.datafusion">JsonWriteOptions</a> in <a href="../package-summary.html">org.apache.datafusion</a></h2>
+<div class="caption"><span>Methods in <a href="../package-summary.html">org.apache.datafusion</a> that return <a href="../JsonWriteOptions.html" title="class in org.apache.datafusion">JsonWriteOptions</a></span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
-<div class="col-first even-row-color"><code><a href="../ParquetWriteOptions.html" title="class in org.apache.datafusion">ParquetWriteOptions</a></code></div>
-<div class="col-second even-row-color"><span class="type-name-label">ParquetWriteOptions.</span><code><a href="../ParquetWriteOptions.html#compression(java.lang.String)" class="member-name-link">compression</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> spec)</code></div>
+<div class="col-first even-row-color"><code><a href="../JsonWriteOptions.html" title="class in org.apache.datafusion">JsonWriteOptions</a></code></div>
+<div class="col-second even-row-color"><span class="type-name-label">JsonWriteOptions.</span><code><a href="../JsonWriteOptions.html#fileCompressionType(org.apache.datafusion.FileCompressionType)" class="member-name-link">fileCompressionType</a><wbr>(<a href="../FileCompressionType.html" title="enum class in org.apache.datafusion">FileCompressionType</a> t)</code></div>
<div class="col-last even-row-color">
-<div class="block">Compression codec spec, passed verbatim to DataFusion.</div>
+<div class="block">Output compression codec.</div>
</div>
-<div class="col-first odd-row-color"><code><a href="../ParquetWriteOptions.html" title="class in org.apache.datafusion">ParquetWriteOptions</a></code></div>
-<div class="col-second odd-row-color"><span class="type-name-label">ParquetWriteOptions.</span><code><a href="../ParquetWriteOptions.html#singleFileOutput(boolean)" class="member-name-link">singleFileOutput</a><wbr>(boolean v)</code></div>
+<div class="col-first odd-row-color"><code><a href="../JsonWriteOptions.html" title="class in org.apache.datafusion">JsonWriteOptions</a></code></div>
+<div class="col-second odd-row-color"><span class="type-name-label">JsonWriteOptions.</span><code><a href="../JsonWriteOptions.html#partitionCols(java.lang.String...)" class="member-name-link">partitionCols</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>... cols)</code></div>
<div class="col-last odd-row-color">
+<div class="block">Hive-style partition columns.</div>
+</div>
+<div class="col-first even-row-color"><code><a href="../JsonWriteOptions.html" title="class in org.apache.datafusion">JsonWriteOptions</a></code></div>
+<div class="col-second even-row-color"><span class="type-name-label">JsonWriteOptions.</span><code><a href="../JsonWriteOptions.html#singleFileOutput(boolean)" class="member-name-link">singleFileOutput</a><wbr>(boolean v)</code></div>
+<div class="col-last even-row-color">
<div class="block">When <code>true</code>, write to a single file at the supplied path.</div>
</div>
</div>
-<div class="caption"><span>Methods in <a href="../package-summary.html">org.apache.datafusion</a> with parameters of type <a href="../ParquetWriteOptions.html" title="class in org.apache.datafusion">ParquetWriteOptions</a></span></div>
+<div class="caption"><span>Methods in <a href="../package-summary.html">org.apache.datafusion</a> with parameters of type <a href="../JsonWriteOptions.html" title="class in org.apache.datafusion">JsonWriteOptions</a></span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>void</code></div>
-<div class="col-second even-row-color"><span class="type-name-label">DataFrame.</span><code><a href="../DataFrame.html#writeParquet(java.lang.String,org.apache.datafusion.ParquetWriteOptions)" class="member-name-link">writeParquet</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> path,
- <a href="../ParquetWriteOptions.html" title="class in org.apache.datafusion">ParquetWriteOptions</a> options)</code></div>
+<div class="col-second even-row-color"><span class="type-name-label">DataFrame.</span><code><a href="../DataFrame.html#writeJson(java.lang.String,org.apache.datafusion.JsonWriteOptions)" class="member-name-link">writeJson</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> path,
+ <a href="../JsonWriteOptions.html" title="class in org.apache.datafusion">JsonWriteOptions</a> options)</code></div>
<div class="col-last even-row-color">
-<div class="block">Materialize this DataFrame as Parquet at <code>path</code> with the supplied <a href="../ParquetWriteOptions.html" title="class in org.apache.datafusion"><code>ParquetWriteOptions</code></a>.</div>
+<div class="block">Materialize this DataFrame as newline-delimited JSON at <code>path</code> with the supplied <a href="../JsonWriteOptions.html" title="class in org.apache.datafusion"><code>JsonWriteOptions</code></a>.</div>
</div>
</div>
</section>
diff --git a/api/org/apache/datafusion/class-use/NativeLibraryLoader.html b/api/org/apache/datafusion/class-use/NativeLibraryLoader.html
index ab23f07..219e87d 100644
--- a/api/org/apache/datafusion/class-use/NativeLibraryLoader.html
+++ b/api/org/apache/datafusion/class-use/NativeLibraryLoader.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>Uses of Class org.apache.datafusion.NativeLibraryLoader (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="use: package: org.apache.datafusion, class: NativeLibraryLoader">
<meta name="generator" content="javadoc/ClassUseWriter">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
diff --git a/api/org/apache/datafusion/class-use/NdJsonReadOptions.html b/api/org/apache/datafusion/class-use/NdJsonReadOptions.html
index 6206719..09c975c 100644
--- a/api/org/apache/datafusion/class-use/NdJsonReadOptions.html
+++ b/api/org/apache/datafusion/class-use/NdJsonReadOptions.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>Uses of Class org.apache.datafusion.NdJsonReadOptions (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="use: package: org.apache.datafusion, class: NdJsonReadOptions">
<meta name="generator" content="javadoc/ClassUseWriter">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
diff --git a/api/org/apache/datafusion/class-use/ParquetReadOptions.html b/api/org/apache/datafusion/class-use/ParquetReadOptions.html
index 3debbce..813f1e2 100644
--- a/api/org/apache/datafusion/class-use/ParquetReadOptions.html
+++ b/api/org/apache/datafusion/class-use/ParquetReadOptions.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>Uses of Class org.apache.datafusion.ParquetReadOptions (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="use: package: org.apache.datafusion, class: ParquetReadOptions">
<meta name="generator" content="javadoc/ClassUseWriter">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
diff --git a/api/org/apache/datafusion/class-use/ParquetWriteOptions.html b/api/org/apache/datafusion/class-use/ParquetWriteOptions.html
index b37afcf..6185862 100644
--- a/api/org/apache/datafusion/class-use/ParquetWriteOptions.html
+++ b/api/org/apache/datafusion/class-use/ParquetWriteOptions.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>Uses of Class org.apache.datafusion.ParquetWriteOptions (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="use: package: org.apache.datafusion, class: ParquetWriteOptions">
<meta name="generator" content="javadoc/ClassUseWriter">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
diff --git a/api/org/apache/datafusion/class-use/ScalarFunction.html b/api/org/apache/datafusion/class-use/ScalarFunction.html
index 397a578..a857463 100644
--- a/api/org/apache/datafusion/class-use/ScalarFunction.html
+++ b/api/org/apache/datafusion/class-use/ScalarFunction.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>Uses of Interface org.apache.datafusion.ScalarFunction (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="use: package: org.apache.datafusion, interface: ScalarFunction">
<meta name="generator" content="javadoc/ClassUseWriter">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
diff --git a/api/org/apache/datafusion/class-use/ScalarFunctionArgs.html b/api/org/apache/datafusion/class-use/ScalarFunctionArgs.html
index 73a3c80..f9c802c 100644
--- a/api/org/apache/datafusion/class-use/ScalarFunctionArgs.html
+++ b/api/org/apache/datafusion/class-use/ScalarFunctionArgs.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>Uses of Record Class org.apache.datafusion.ScalarFunctionArgs (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="use: package: org.apache.datafusion, record: ScalarFunctionArgs">
<meta name="generator" content="javadoc/ClassUseWriter">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
diff --git a/api/org/apache/datafusion/class-use/ScalarUdf.html b/api/org/apache/datafusion/class-use/ScalarUdf.html
index e241c91..185a2b0 100644
--- a/api/org/apache/datafusion/class-use/ScalarUdf.html
+++ b/api/org/apache/datafusion/class-use/ScalarUdf.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>Uses of Class org.apache.datafusion.ScalarUdf (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="use: package: org.apache.datafusion, class: ScalarUdf">
<meta name="generator" content="javadoc/ClassUseWriter">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
diff --git a/api/org/apache/datafusion/class-use/SessionContext.html b/api/org/apache/datafusion/class-use/SessionContext.html
index c014fd5..59b9015 100644
--- a/api/org/apache/datafusion/class-use/SessionContext.html
+++ b/api/org/apache/datafusion/class-use/SessionContext.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>Uses of Class org.apache.datafusion.SessionContext (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="use: package: org.apache.datafusion, class: SessionContext">
<meta name="generator" content="javadoc/ClassUseWriter">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
diff --git a/api/org/apache/datafusion/class-use/SessionContextBuilder.html b/api/org/apache/datafusion/class-use/SessionContextBuilder.html
index 14e333e..7ae6919 100644
--- a/api/org/apache/datafusion/class-use/SessionContextBuilder.html
+++ b/api/org/apache/datafusion/class-use/SessionContextBuilder.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>Uses of Class org.apache.datafusion.SessionContextBuilder (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="use: package: org.apache.datafusion, class: SessionContextBuilder">
<meta name="generator" content="javadoc/ClassUseWriter">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
diff --git a/api/org/apache/datafusion/class-use/NativeLibraryLoader.html b/api/org/apache/datafusion/class-use/SimpleTableProvider.html
similarity index 83%
copy from api/org/apache/datafusion/class-use/NativeLibraryLoader.html
copy to api/org/apache/datafusion/class-use/SimpleTableProvider.html
index ab23f07..3b43589 100644
--- a/api/org/apache/datafusion/class-use/NativeLibraryLoader.html
+++ b/api/org/apache/datafusion/class-use/SimpleTableProvider.html
@@ -1,12 +1,12 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
-<title>Uses of Class org.apache.datafusion.NativeLibraryLoader (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
+<title>Uses of Class org.apache.datafusion.SimpleTableProvider (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
-<meta name="description" content="use: package: org.apache.datafusion, class: NativeLibraryLoader">
+<meta name="dc.created" content="2026-05-19">
+<meta name="description" content="use: package: org.apache.datafusion, class: SimpleTableProvider">
<meta name="generator" content="javadoc/ClassUseWriter">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
@@ -30,7 +30,7 @@ loadScripts(document, 'script');</script>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="../package-summary.html">Package</a></li>
-<li><a href="../NativeLibraryLoader.html" title="class in org.apache.datafusion">Class</a></li>
+<li><a href="../SimpleTableProvider.html" title="class in org.apache.datafusion">Class</a></li>
<li class="nav-bar-cell1-rev">Use</li>
<li><a href="../package-tree.html">Tree</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
@@ -49,9 +49,9 @@ loadScripts(document, 'script');</script>
<div class="flex-content">
<main role="main">
<div class="header">
-<h1 title="Uses of Class org.apache.datafusion.NativeLibraryLoader" class="title">Uses of Class<br>org.apache.datafusion.NativeLibraryLoader</h1>
+<h1 title="Uses of Class org.apache.datafusion.SimpleTableProvider" class="title">Uses of Class<br>org.apache.datafusion.SimpleTableProvider</h1>
</div>
-No usage of org.apache.datafusion.NativeLibraryLoader</main>
+No usage of org.apache.datafusion.SimpleTableProvider</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright © 2026. All rights reserved.</small></p>
diff --git a/api/org/apache/datafusion/class-use/ScalarFunction.html b/api/org/apache/datafusion/class-use/TableProvider.html
similarity index 51%
copy from api/org/apache/datafusion/class-use/ScalarFunction.html
copy to api/org/apache/datafusion/class-use/TableProvider.html
index 397a578..811e2bb 100644
--- a/api/org/apache/datafusion/class-use/ScalarFunction.html
+++ b/api/org/apache/datafusion/class-use/TableProvider.html
@@ -1,12 +1,12 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
-<title>Uses of Interface org.apache.datafusion.ScalarFunction (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
+<title>Uses of Interface org.apache.datafusion.TableProvider (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
-<meta name="description" content="use: package: org.apache.datafusion, interface: ScalarFunction">
+<meta name="dc.created" content="2026-05-19">
+<meta name="description" content="use: package: org.apache.datafusion, interface: TableProvider">
<meta name="generator" content="javadoc/ClassUseWriter">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
@@ -30,7 +30,7 @@ loadScripts(document, 'script');</script>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="../package-summary.html">Package</a></li>
-<li><a href="../ScalarFunction.html" title="interface in org.apache.datafusion">Class</a></li>
+<li><a href="../TableProvider.html" title="interface in org.apache.datafusion">Class</a></li>
<li class="nav-bar-cell1-rev">Use</li>
<li><a href="../package-tree.html">Tree</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
@@ -49,9 +49,9 @@ loadScripts(document, 'script');</script>
<div class="flex-content">
<main role="main">
<div class="header">
-<h1 title="Uses of Interface org.apache.datafusion.ScalarFunction" class="title">Uses of Interface<br>org.apache.datafusion.ScalarFunction</h1>
+<h1 title="Uses of Interface org.apache.datafusion.TableProvider" class="title">Uses of Interface<br>org.apache.datafusion.TableProvider</h1>
</div>
-<div class="caption"><span>Packages that use <a href="../ScalarFunction.html" title="interface in org.apache.datafusion">ScalarFunction</a></span></div>
+<div class="caption"><span>Packages that use <a href="../TableProvider.html" title="interface in org.apache.datafusion">TableProvider</a></span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Package</div>
<div class="table-header col-last">Description</div>
@@ -64,62 +64,47 @@ loadScripts(document, 'script');</script>
<ul class="block-list">
<li>
<section class="detail" id="org.apache.datafusion">
-<h2>Uses of <a href="../ScalarFunction.html" title="interface in org.apache.datafusion">ScalarFunction</a> in <a href="../package-summary.html">org.apache.datafusion</a></h2>
-<div class="caption"><span>Methods in <a href="../package-summary.html">org.apache.datafusion</a> that return <a href="../ScalarFunction.html" title="interface in org.apache.datafusion">ScalarFunction</a></span></div>
+<h2>Uses of <a href="../TableProvider.html" title="interface in org.apache.datafusion">TableProvider</a> in <a href="../package-summary.html">org.apache.datafusion</a></h2>
+<div class="caption"><span>Classes in <a href="../package-summary.html">org.apache.datafusion</a> that implement <a href="../TableProvider.html" title="interface in org.apache.datafusion">TableProvider</a></span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
-<div class="table-header col-second">Method</div>
+<div class="table-header col-second">Class</div>
<div class="table-header col-last">Description</div>
-<div class="col-first even-row-color"><code><a href="../ScalarFunction.html" title="interface in org.apache.datafusion">ScalarFunction</a></code></div>
-<div class="col-second even-row-color"><span class="type-name-label">ScalarUdf.</span><code><a href="../ScalarUdf.html#impl()" class="member-name-link">impl</a>()</code></div>
+<div class="col-first even-row-color"><code>final class </code></div>
+<div class="col-second even-row-color"><code><a href="../SimpleTableProvider.html" class="type-name-link" title="class in org.apache.datafusion">SimpleTableProvider</a></code></div>
<div class="col-last even-row-color">
-<div class="block">The wrapped implementation.</div>
+<div class="block">A <a href="../TableProvider.html" title="interface in org.apache.datafusion"><code>TableProvider</code></a> that pairs a fixed <code>Schema</code> with a function that opens a fresh
+ <code>ArrowReader</code> for each scan.</div>
</div>
</div>
-<div class="caption"><span>Methods in <a href="../package-summary.html">org.apache.datafusion</a> with parameters of type <a href="../ScalarFunction.html" title="interface in org.apache.datafusion">ScalarFunction</a></span></div>
+<div class="caption"><span>Methods in <a href="../package-summary.html">org.apache.datafusion</a> with parameters of type <a href="../TableProvider.html" title="interface in org.apache.datafusion">TableProvider</a></span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
-<div class="col-first even-row-color"><code>static <a href="../ScalarUdf.html" title="class in org.apache.datafusion">ScalarUdf</a></code></div>
-<div class="col-second even-row-color"><span class="type-name-label">ScalarUdf.</span><code><a href="../ScalarUdf.html#fromImpl(org.apache.datafusion.ScalarFunction)" class="member-name-link">fromImpl</a><wbr>(<a href="../ScalarFunction.html" title="interface in org.apache.datafusion">ScalarFunction</a> impl)</code></div>
-<div class="col-last even-row-color">
-<div class="block">Equivalent to <code>new ScalarUdf(impl)</code>; mirrors Rust's <code>ScalarUDF::new_from_impl</code>.</div>
-</div>
-</div>
-<div class="caption"><span>Constructors in <a href="../package-summary.html">org.apache.datafusion</a> with parameters of type <a href="../ScalarFunction.html" title="interface in org.apache.datafusion">ScalarFunction</a></span></div>
-<div class="summary-table three-column-summary">
-<div class="table-header col-first">Modifier</div>
-<div class="table-header col-second">Constructor</div>
-<div class="table-header col-last">Description</div>
-<div class="col-first even-row-color"><code> </code></div>
-<div class="col-second even-row-color"><code><a href="../ScalarUdf.html#%3Cinit%3E(org.apache.datafusion.ScalarFunction)" class="member-name-link">ScalarUdf</a><wbr>(<a href="../ScalarFunction.html" title="interface in org.apache.datafusion">ScalarFunction</a> impl)</code></div>
+<div class="col-first even-row-color"><code>void</code></div>
+<div class="col-second even-row-color"><span class="type-name-label">SessionContext.</span><code><a href="../SessionContext.html#registerTable(java.lang.String,org.apache.datafusion.TableProvider)" class="member-name-link">registerTable</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> name,
+ <a href="../TableProvider.html" title="interface in org.apache.datafusion">TableProvider</a> provider)</code></div>
<div class="col-last even-row-color">
-<div class="block">Wrap a <a href="../ScalarFunction.html" title="interface in org.apache.datafusion"><code>ScalarFunction</code></a> for registration.</div>
+<div class="block">Register a Java-implemented <a href="../TableProvider.html" title="interface in org.apache.datafusion"><code>TableProvider</code></a> under <code>name</code>.</div>
</div>
</div>
</section>
</li>
<li>
<section class="detail" id="org.apache.datafusion.internal">
-<h2>Uses of <a href="../ScalarFunction.html" title="interface in org.apache.datafusion">ScalarFunction</a> in <a href="../internal/package-summary.html">org.apache.datafusion.internal</a></h2>
-<div class="caption"><span>Methods in <a href="../internal/package-summary.html">org.apache.datafusion.internal</a> with parameters of type <a href="../ScalarFunction.html" title="interface in org.apache.datafusion">ScalarFunction</a></span></div>
+<h2>Uses of <a href="../TableProvider.html" title="interface in org.apache.datafusion">TableProvider</a> in <a href="../internal/package-summary.html">org.apache.datafusion.internal</a></h2>
+<div class="caption"><span>Methods in <a href="../internal/package-summary.html">org.apache.datafusion.internal</a> with parameters of type <a href="../TableProvider.html" title="interface in org.apache.datafusion">TableProvider</a></span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
-<div class="col-first even-row-color"><code>static byte</code></div>
-<div class="col-second even-row-color"><span class="type-name-label">JniBridge.</span><code><a href="../internal/JniBridge.html#invokeScalarUdf(org.apache.datafusion.ScalarFunction,long,long,long,long,byte%5B%5D,long,long,int)" class="member-name-link">invokeScalarUdf</a><wbr>(<a href="../ScalarFunction.html" title="interface in org.apache.datafusion">ScalarFunction</a> impl,
- long arrayArgsArrayAddr,
- long arrayArgsSchemaAddr,
- long scalarArgsArrayAddr,
- long scalarArgsSchemaAddr,
- byte[] argKinds,
- long resultArrayAddr,
- long resultSchemaAddr,
- int rowCount)</code></div>
+<div class="col-first even-row-color"><code>static void</code></div>
+<div class="col-second even-row-color"><span class="type-name-label">JniBridge.</span><code><a href="../internal/JniBridge.html#invokeTableScan(org.apache.datafusion.TableProvider,long)" class="member-name-link">invokeTableScan</a><wbr>(<a href="../TableProvider.html" title="interface in org.apache.datafusion">TableProvider</a> provider,
+ long ffiStreamAddr)</code></div>
<div class="col-last even-row-color">
-<div class="block">Invoke a scalar UDF for one batch.</div>
+<div class="block">Open a fresh batch stream from a Java <a href="../TableProvider.html" title="interface in org.apache.datafusion"><code>TableProvider</code></a> and export it through the supplied
+ Arrow C Data Interface address.</div>
</div>
</div>
</section>
diff --git a/api/org/apache/datafusion/class-use/UnnestOptions.html b/api/org/apache/datafusion/class-use/UnnestOptions.html
index 4329d6f..53889bf 100644
--- a/api/org/apache/datafusion/class-use/UnnestOptions.html
+++ b/api/org/apache/datafusion/class-use/UnnestOptions.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>Uses of Class org.apache.datafusion.UnnestOptions (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="use: package: org.apache.datafusion, class: UnnestOptions">
<meta name="generator" content="javadoc/ClassUseWriter">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
diff --git a/api/org/apache/datafusion/class-use/Volatility.html b/api/org/apache/datafusion/class-use/Volatility.html
index 07a2e1a..f364314 100644
--- a/api/org/apache/datafusion/class-use/Volatility.html
+++ b/api/org/apache/datafusion/class-use/Volatility.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>Uses of Enum Class org.apache.datafusion.Volatility (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="use: package: org.apache.datafusion, enum: Volatility">
<meta name="generator" content="javadoc/ClassUseWriter">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
diff --git a/api/org/apache/datafusion/internal/JniBridge.html b/api/org/apache/datafusion/internal/JniBridge.html
index fad2f78..15aff7a 100644
--- a/api/org/apache/datafusion/internal/JniBridge.html
+++ b/api/org/apache/datafusion/internal/JniBridge.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>JniBridge (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="declaration: package: org.apache.datafusion.internal, class: JniBridge">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
@@ -107,6 +107,13 @@ loadScripts(document, 'script');</script>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Invoke a scalar UDF for one batch.</div>
</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#invokeTableScan(org.apache.datafusion.TableProvider,long)" class="member-name-link">invokeTableScan</a><wbr>(<a href="../TableProvider.html" title="interface in org.apache.datafusion">TableProvider</a> provider,
+ long ffiStreamAddr)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
+<div class="block">Open a fresh batch stream from a Java <a href="../TableProvider.html" title="interface in org.apache.datafusion"><code>TableProvider</code></a> and export it through the supplied
+ Arrow C Data Interface address.</div>
+</div>
</div>
</div>
</div>
@@ -150,6 +157,21 @@ loadScripts(document, 'script');</script>
</dl>
</section>
</li>
+<li>
+<section class="detail" id="invokeTableScan(org.apache.datafusion.TableProvider,long)">
+<h3>invokeTableScan</h3>
+<div class="member-signature"><span class="modifiers">public static</span> <span class="return-type">void</span> <span class="element-name">invokeTableScan</span><wbr><span class="parameters">(<a href="../TableProvider.html" title="interface in org.apache.datafusion">TableProvider</a> provider,
+ long ffiStreamAddr)</span></div>
+<div class="block">Open a fresh batch stream from a Java <a href="../TableProvider.html" title="interface in org.apache.datafusion"><code>TableProvider</code></a> and export it through the supplied
+ Arrow C Data Interface address. Called from native code; not for application use.
+
+ <p><a href="../TableProvider.html#scan(org.apache.arrow.memory.BufferAllocator)"><code>TableProvider.scan(org.apache.arrow.memory.BufferAllocator)</code></a> is called with <code>ALLOCATOR</code> so that the reader's buffers share the same allocator root required by <code>Data.exportArrayStream(org.apache.arrow.memory.BufferAllocator, org.apache.arrow.vector.ipc.ArrowReader, org.apache.arrow.c.ArrowArrayStream)</code>.
+
+ <p>On success, ownership of the returned reader transfers to the FFI stream's release callback,
+ so the native side closing the stream also closes the reader. On any failure during export, the
+ reader is closed here before the exception propagates.</div>
+</section>
+</li>
</ul>
</section>
</li>
diff --git a/api/org/apache/datafusion/internal/class-use/JniBridge.html b/api/org/apache/datafusion/internal/class-use/JniBridge.html
index 54af71b..968fea7 100644
--- a/api/org/apache/datafusion/internal/class-use/JniBridge.html
+++ b/api/org/apache/datafusion/internal/class-use/JniBridge.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>Uses of Class org.apache.datafusion.internal.JniBridge (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="use: package: org.apache.datafusion.internal, class: JniBridge">
<meta name="generator" content="javadoc/ClassUseWriter">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
diff --git a/api/org/apache/datafusion/internal/package-summary.html b/api/org/apache/datafusion/internal/package-summary.html
index efb7fc8..4075874 100644
--- a/api/org/apache/datafusion/internal/package-summary.html
+++ b/api/org/apache/datafusion/internal/package-summary.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>org.apache.datafusion.internal (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="declaration: package: org.apache.datafusion.internal">
<meta name="generator" content="javadoc/PackageWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
diff --git a/api/org/apache/datafusion/internal/package-tree.html b/api/org/apache/datafusion/internal/package-tree.html
index 2cfd232..622d8fa 100644
--- a/api/org/apache/datafusion/internal/package-tree.html
+++ b/api/org/apache/datafusion/internal/package-tree.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>org.apache.datafusion.internal Class Hierarchy (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="tree: package: org.apache.datafusion.internal">
<meta name="generator" content="javadoc/PackageTreeWriter">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
diff --git a/api/org/apache/datafusion/internal/package-use.html b/api/org/apache/datafusion/internal/package-use.html
index 8a32ef4..b643c03 100644
--- a/api/org/apache/datafusion/internal/package-use.html
+++ b/api/org/apache/datafusion/internal/package-use.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>Uses of Package org.apache.datafusion.internal (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="use: package: org.apache.datafusion.internal">
<meta name="generator" content="javadoc/PackageUseWriter">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
diff --git a/api/org/apache/datafusion/package-summary.html b/api/org/apache/datafusion/package-summary.html
index 2c5f991..0fc5469 100644
--- a/api/org/apache/datafusion/package-summary.html
+++ b/api/org/apache/datafusion/package-summary.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>org.apache.datafusion (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="declaration: package: org.apache.datafusion">
<meta name="generator" content="javadoc/PackageWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
@@ -91,23 +91,31 @@ loadScripts(document, 'script');</script>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Configuration knobs for Arrow IPC sources passed to <a href="SessionContext.html#registerArrow(java.lang.String,java.lang.String,org.apache.datafusion.ArrowReadOptions)"><code>SessionContext.registerArrow(String, String, ArrowReadOptions)</code></a> and <a href="SessionContext.html#readArrow(java.lang.String,org.apache.datafusion.ArrowReadOptions)"><code>SessionContext.readArrow(String, ArrowReadOptions)</code></a>.</div>
</div>
-<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="ColumnarValue.html" title="interface in org.apache.datafusion">ColumnarValue</a></div>
-<div class="col-last odd-row-color class-summary class-summary-tab1">
+<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="AvroReadOptions.html" title="class in org.apache.datafusion">AvroReadOptions</a></div>
+<div class="col-last odd-row-color class-summary class-summary-tab2">
+<div class="block">Configuration knobs for Avro sources passed to <a href="SessionContext.html#registerAvro(java.lang.String,java.lang.String,org.apache.datafusion.AvroReadOptions)"><code>SessionContext.registerAvro(String, String, AvroReadOptions)</code></a> and <a href="SessionContext.html#readAvro(java.lang.String,org.apache.datafusion.AvroReadOptions)"><code>SessionContext.readAvro(String, AvroReadOptions)</code></a>.</div>
+</div>
+<div class="col-first even-row-color class-summary class-summary-tab1"><a href="ColumnarValue.html" title="interface in org.apache.datafusion">ColumnarValue</a></div>
+<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">The value of a scalar UDF argument or result: either a per-row <a href="ColumnarValue.Array.html" title="class in org.apache.datafusion"><code>ColumnarValue.Array</code></a> of length <code>
rowCount</code>, or a <a href="ColumnarValue.Scalar.html" title="class in org.apache.datafusion"><code>ColumnarValue.Scalar</code></a> (length-1 vector) that the framework broadcasts.</div>
</div>
-<div class="col-first even-row-color class-summary class-summary-tab4"><a href="ColumnarValue.Array.html" title="class in org.apache.datafusion">ColumnarValue.Array</a></div>
-<div class="col-last even-row-color class-summary class-summary-tab4">
+<div class="col-first odd-row-color class-summary class-summary-tab4"><a href="ColumnarValue.Array.html" title="class in org.apache.datafusion">ColumnarValue.Array</a></div>
+<div class="col-last odd-row-color class-summary class-summary-tab4">
<div class="block">Per-row Arrow vector of length equal to the batch row count.</div>
</div>
-<div class="col-first odd-row-color class-summary class-summary-tab4"><a href="ColumnarValue.Scalar.html" title="class in org.apache.datafusion">ColumnarValue.Scalar</a></div>
-<div class="col-last odd-row-color class-summary class-summary-tab4">
+<div class="col-first even-row-color class-summary class-summary-tab4"><a href="ColumnarValue.Scalar.html" title="class in org.apache.datafusion">ColumnarValue.Scalar</a></div>
+<div class="col-last even-row-color class-summary class-summary-tab4">
<div class="block">Length-1 Arrow vector representing a single value broadcast across all rows.</div>
</div>
-<div class="col-first even-row-color class-summary class-summary-tab2"><a href="CsvReadOptions.html" title="class in org.apache.datafusion">CsvReadOptions</a></div>
-<div class="col-last even-row-color class-summary class-summary-tab2">
+<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="CsvReadOptions.html" title="class in org.apache.datafusion">CsvReadOptions</a></div>
+<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Configuration knobs for CSV sources passed to <a href="SessionContext.html#registerCsv(java.lang.String,java.lang.String,org.apache.datafusion.CsvReadOptions)"><code>SessionContext.registerCsv(String, String, CsvReadOptions)</code></a> and <a href="SessionContext.html#readCsv(java.lang.String,org.apache.datafusion.CsvReadOptions)"><code>SessionContext.readCsv(String, CsvReadOptions)</code></a>.</div>
</div>
+<div class="col-first even-row-color class-summary class-summary-tab2"><a href="CsvWriteOptions.html" title="class in org.apache.datafusion">CsvWriteOptions</a></div>
+<div class="col-last even-row-color class-summary class-summary-tab2">
+<div class="block">Configuration knobs for writing CSV, passed to <a href="DataFrame.html#writeCsv(java.lang.String,org.apache.datafusion.CsvWriteOptions)"><code>DataFrame.writeCsv(String, CsvWriteOptions)</code></a>.</div>
+</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="DataFrame.html" title="class in org.apache.datafusion">DataFrame</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">A lazy representation of a query plan, mirroring the Rust DataFusion <code>DataFrame</code>.</div>
@@ -116,49 +124,62 @@ loadScripts(document, 'script');</script>
<div class="col-last even-row-color class-summary class-summary-tab3">
<div class="block">Compression of a file-format source.</div>
</div>
-<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="NativeLibraryLoader.html" title="class in org.apache.datafusion">NativeLibraryLoader</a></div>
-<div class="col-last odd-row-color class-summary class-summary-tab2"> </div>
-<div class="col-first even-row-color class-summary class-summary-tab2"><a href="NdJsonReadOptions.html" title="class in org.apache.datafusion">NdJsonReadOptions</a></div>
-<div class="col-last even-row-color class-summary class-summary-tab2">
-<div class="block">Configuration knobs for newline-delimited JSON sources passed to <a href="SessionContext.html#registerJson(java.lang.String,java.lang.String,org.apache.datafusion.NdJsonReadOptions)"><code>SessionContext.registerJson(String, String, NdJsonReadOptions)</code></a> and <a href="SessionContext.html#readJson(java.lang.String,org.apache.datafusion.NdJsonReadOptions)"><code>SessionContext.readJson(String, NdJsonReadOptions)</code></a>.</div>
+<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="JsonWriteOptions.html" title="class in org.apache.datafusion">JsonWriteOptions</a></div>
+<div class="col-last odd-row-color class-summary class-summary-tab2">
+<div class="block">Configuration knobs for writing JSON, passed to <a href="DataFrame.html#writeJson(java.lang.String,org.apache.datafusion.JsonWriteOptions)"><code>DataFrame.writeJson(String, JsonWriteOptions)</code></a>.</div>
</div>
-<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="ParquetReadOptions.html" title="class in org.apache.datafusion">ParquetReadOptions</a></div>
+<div class="col-first even-row-color class-summary class-summary-tab2"><a href="NativeLibraryLoader.html" title="class in org.apache.datafusion">NativeLibraryLoader</a></div>
+<div class="col-last even-row-color class-summary class-summary-tab2"> </div>
+<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="NdJsonReadOptions.html" title="class in org.apache.datafusion">NdJsonReadOptions</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
-<div class="block">Configuration knobs for parquet sources passed to <a href="SessionContext.html#registerParquet(java.lang.String,java.lang.String,org.apache.datafusion.ParquetReadOptions)"><code>SessionContext.registerParquet(String, String, ParquetReadOptions)</code></a> and <a href="SessionContext.html#readParquet(java.lang.String,org.apache.datafusion.ParquetReadOptions)"><code>SessionContext.readParquet(String, ParquetReadOptions)</code></a>.</div>
+<div class="block">Configuration knobs for newline-delimited JSON sources passed to <a href="SessionContext.html#registerJson(java.lang.String,java.lang.String,org.apache.datafusion.NdJsonReadOptions)"><code>SessionContext.registerJson(String, String, NdJsonReadOptions)</code></a> and <a href="SessionContext.html#readJson(java.lang.String,org.apache.datafusion.NdJsonReadOptions)"><code>SessionContext.readJson(String, NdJsonReadOptions)</code></a>.</div>
</div>
-<div class="col-first even-row-color class-summary class-summary-tab2"><a href="ParquetWriteOptions.html" title="class in org.apache.datafusion">ParquetWriteOptions</a></div>
+<div class="col-first even-row-color class-summary class-summary-tab2"><a href="ParquetReadOptions.html" title="class in org.apache.datafusion">ParquetReadOptions</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
+<div class="block">Configuration knobs for parquet sources passed to <a href="SessionContext.html#registerParquet(java.lang.String,java.lang.String,org.apache.datafusion.ParquetReadOptions)"><code>SessionContext.registerParquet(String, String, ParquetReadOptions)</code></a> and <a href="SessionContext.html#readParquet(java.lang.String,org.apache.datafusion.ParquetReadOptions)"><code>SessionContext.readParquet(String, ParquetReadOptions)</code></a>.</div>
+</div>
+<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="ParquetWriteOptions.html" title="class in org.apache.datafusion">ParquetWriteOptions</a></div>
+<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Configuration knobs for writing parquet, passed to <a href="DataFrame.html#writeParquet(java.lang.String,org.apache.datafusion.ParquetWriteOptions)"><code>DataFrame.writeParquet(String, ParquetWriteOptions)</code></a>.</div>
</div>
-<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="ScalarFunction.html" title="interface in org.apache.datafusion">ScalarFunction</a></div>
-<div class="col-last odd-row-color class-summary class-summary-tab1">
+<div class="col-first even-row-color class-summary class-summary-tab1"><a href="ScalarFunction.html" title="interface in org.apache.datafusion">ScalarFunction</a></div>
+<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">A Java-implemented scalar SQL function.</div>
</div>
-<div class="col-first even-row-color class-summary class-summary-tab4"><a href="ScalarFunctionArgs.html" title="class in org.apache.datafusion">ScalarFunctionArgs</a></div>
-<div class="col-last even-row-color class-summary class-summary-tab4">
+<div class="col-first odd-row-color class-summary class-summary-tab4"><a href="ScalarFunctionArgs.html" title="class in org.apache.datafusion">ScalarFunctionArgs</a></div>
+<div class="col-last odd-row-color class-summary class-summary-tab4">
<div class="block">Bundle of inputs passed to <a href="ScalarFunction.html#evaluate(org.apache.arrow.memory.BufferAllocator,org.apache.datafusion.ScalarFunctionArgs)"><code>ScalarFunction.evaluate(org.apache.arrow.memory.BufferAllocator, org.apache.datafusion.ScalarFunctionArgs)</code></a>: the per-arg <a href="ColumnarValue.html" title="interface in org.apache.datafusion"><code>ColumnarValue</code></a>s
(in declared order) and the batch row count DataFusion is driving.</div>
</div>
-<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="ScalarUdf.html" title="class in org.apache.datafusion">ScalarUdf</a></div>
-<div class="col-last odd-row-color class-summary class-summary-tab2">
+<div class="col-first even-row-color class-summary class-summary-tab2"><a href="ScalarUdf.html" title="class in org.apache.datafusion">ScalarUdf</a></div>
+<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">A scalar UDF registration handle: pairs a <a href="ScalarFunction.html" title="interface in org.apache.datafusion"><code>ScalarFunction</code></a> implementation with the metadata
DataFusion needs to dispatch SQL calls to it.</div>
</div>
-<div class="col-first even-row-color class-summary class-summary-tab2"><a href="SessionContext.html" title="class in org.apache.datafusion">SessionContext</a></div>
-<div class="col-last even-row-color class-summary class-summary-tab2">
+<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="SessionContext.html" title="class in org.apache.datafusion">SessionContext</a></div>
+<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">A DataFusion session context.</div>
</div>
-<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="SessionContextBuilder.html" title="class in org.apache.datafusion">SessionContextBuilder</a></div>
-<div class="col-last odd-row-color class-summary class-summary-tab2">
+<div class="col-first even-row-color class-summary class-summary-tab2"><a href="SessionContextBuilder.html" title="class in org.apache.datafusion">SessionContextBuilder</a></div>
+<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Builder for a configured <a href="SessionContext.html" title="class in org.apache.datafusion"><code>SessionContext</code></a>.</div>
</div>
-<div class="col-first even-row-color class-summary class-summary-tab2"><a href="UnnestOptions.html" title="class in org.apache.datafusion">UnnestOptions</a></div>
-<div class="col-last even-row-color class-summary class-summary-tab2">
+<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="SimpleTableProvider.html" title="class in org.apache.datafusion">SimpleTableProvider</a></div>
+<div class="col-last odd-row-color class-summary class-summary-tab2">
+<div class="block">A <a href="TableProvider.html" title="interface in org.apache.datafusion"><code>TableProvider</code></a> that pairs a fixed <code>Schema</code> with a function that opens a fresh
+ <code>ArrowReader</code> for each scan.</div>
+</div>
+<div class="col-first even-row-color class-summary class-summary-tab1"><a href="TableProvider.html" title="interface in org.apache.datafusion">TableProvider</a></div>
+<div class="col-last even-row-color class-summary class-summary-tab1">
+<div class="block">A Java-implemented table that can be registered with a <a href="SessionContext.html" title="class in org.apache.datafusion"><code>SessionContext</code></a> via <a href="SessionContext.html#registerTable(java.lang.String,org.apache.datafusion.TableProvider)"><code>SessionContext.registerTable(String, TableProvider)</code></a>.</div>
+</div>
+<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="UnnestOptions.html" title="class in org.apache.datafusion">UnnestOptions</a></div>
+<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Configuration knobs for <a href="DataFrame.html#unnestColumns(org.apache.datafusion.UnnestOptions,java.lang.String...)"><code>DataFrame.unnestColumns(UnnestOptions, String...)</code></a>, mirroring
DataFusion's <code>UnnestOptions</code>.</div>
</div>
-<div class="col-first odd-row-color class-summary class-summary-tab3"><a href="Volatility.html" title="enum class in org.apache.datafusion">Volatility</a></div>
-<div class="col-last odd-row-color class-summary class-summary-tab3">
+<div class="col-first even-row-color class-summary class-summary-tab3"><a href="Volatility.html" title="enum class in org.apache.datafusion">Volatility</a></div>
+<div class="col-last even-row-color class-summary class-summary-tab3">
<div class="block">Volatility classification for a UDF.</div>
</div>
</div>
diff --git a/api/org/apache/datafusion/package-tree.html b/api/org/apache/datafusion/package-tree.html
index 2babd85..e79555b 100644
--- a/api/org/apache/datafusion/package-tree.html
+++ b/api/org/apache/datafusion/package-tree.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>org.apache.datafusion Class Hierarchy (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="tree: package: org.apache.datafusion">
<meta name="generator" content="javadoc/PackageTreeWriter">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
@@ -61,8 +61,11 @@ loadScripts(document, 'script');</script>
<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
<ul>
<li class="circle">org.apache.datafusion.<a href="ArrowReadOptions.html" class="type-name-link" title="class in org.apache.datafusion">ArrowReadOptions</a></li>
+<li class="circle">org.apache.datafusion.<a href="AvroReadOptions.html" class="type-name-link" title="class in org.apache.datafusion">AvroReadOptions</a></li>
<li class="circle">org.apache.datafusion.<a href="CsvReadOptions.html" class="type-name-link" title="class in org.apache.datafusion">CsvReadOptions</a></li>
+<li class="circle">org.apache.datafusion.<a href="CsvWriteOptions.html" class="type-name-link" title="class in org.apache.datafusion">CsvWriteOptions</a></li>
<li class="circle">org.apache.datafusion.<a href="DataFrame.html" class="type-name-link" title="class in org.apache.datafusion">DataFrame</a> (implements java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html" title="class or interface in java.lang" class="external-link">AutoCloseable</a>)</li>
+<li class="circle">org.apache.datafusion.<a href="JsonWriteOptions.html" class="type-name-link" title="class in org.apache.datafusion">JsonWriteOptions</a></li>
<li class="circle">org.apache.datafusion.<a href="NativeLibraryLoader.html" class="type-name-link" title="class in org.apache.datafusion">NativeLibraryLoader</a></li>
<li class="circle">org.apache.datafusion.<a href="NdJsonReadOptions.html" class="type-name-link" title="class in org.apache.datafusion">NdJsonReadOptions</a></li>
<li class="circle">org.apache.datafusion.<a href="ParquetReadOptions.html" class="type-name-link" title="class in org.apache.datafusion">ParquetReadOptions</a></li>
@@ -77,6 +80,7 @@ loadScripts(document, 'script');</script>
<li class="circle">org.apache.datafusion.<a href="ScalarUdf.html" class="type-name-link" title="class in org.apache.datafusion">ScalarUdf</a></li>
<li class="circle">org.apache.datafusion.<a href="SessionContext.html" class="type-name-link" title="class in org.apache.datafusion">SessionContext</a> (implements java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html" title="class or interface in java.lang" class="external-link">AutoCloseable</a>)</li>
<li class="circle">org.apache.datafusion.<a href="SessionContextBuilder.html" class="type-name-link" title="class in org.apache.datafusion">SessionContextBuilder</a></li>
+<li class="circle">org.apache.datafusion.<a href="SimpleTableProvider.html" class="type-name-link" title="class in org.apache.datafusion">SimpleTableProvider</a> (implements org.apache.datafusion.<a href="TableProvider.html" title="interface in org.apache.datafusion">TableProvider</a>)</li>
<li class="circle">org.apache.datafusion.<a href="UnnestOptions.html" class="type-name-link" title="class in org.apache.datafusion">UnnestOptions</a></li>
</ul>
</li>
@@ -87,6 +91,7 @@ loadScripts(document, 'script');</script>
<ul>
<li class="circle">org.apache.datafusion.<a href="ColumnarValue.html" class="type-name-link" title="interface in org.apache.datafusion">ColumnarValue</a></li>
<li class="circle">org.apache.datafusion.<a href="ScalarFunction.html" class="type-name-link" title="interface in org.apache.datafusion">ScalarFunction</a></li>
+<li class="circle">org.apache.datafusion.<a href="TableProvider.html" class="type-name-link" title="interface in org.apache.datafusion">TableProvider</a></li>
</ul>
</section>
<section class="hierarchy">
diff --git a/api/org/apache/datafusion/package-use.html b/api/org/apache/datafusion/package-use.html
index ebd7887..939f18d 100644
--- a/api/org/apache/datafusion/package-use.html
+++ b/api/org/apache/datafusion/package-use.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>Uses of Package org.apache.datafusion (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="use: package: org.apache.datafusion">
<meta name="generator" content="javadoc/PackageUseWriter">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
@@ -72,15 +72,23 @@ loadScripts(document, 'script');</script>
<div class="col-last even-row-color">
<div class="block">Configuration knobs for Arrow IPC sources passed to <a href="SessionContext.html#registerArrow(java.lang.String,java.lang.String,org.apache.datafusion.ArrowReadOptions)"><code>SessionContext.registerArrow(String, String, ArrowReadOptions)</code></a> and <a href="SessionContext.html#readArrow(java.lang.String,org.apache.datafusion.ArrowReadOptions)"><code>SessionContext.readArrow(String, ArrowReadOptions)</code></a>.</div>
</div>
-<div class="col-first odd-row-color"><a href="class-use/ColumnarValue.html#org.apache.datafusion">ColumnarValue</a></div>
+<div class="col-first odd-row-color"><a href="class-use/AvroReadOptions.html#org.apache.datafusion">AvroReadOptions</a></div>
<div class="col-last odd-row-color">
+<div class="block">Configuration knobs for Avro sources passed to <a href="SessionContext.html#registerAvro(java.lang.String,java.lang.String,org.apache.datafusion.AvroReadOptions)"><code>SessionContext.registerAvro(String, String, AvroReadOptions)</code></a> and <a href="SessionContext.html#readAvro(java.lang.String,org.apache.datafusion.AvroReadOptions)"><code>SessionContext.readAvro(String, AvroReadOptions)</code></a>.</div>
+</div>
+<div class="col-first even-row-color"><a href="class-use/ColumnarValue.html#org.apache.datafusion">ColumnarValue</a></div>
+<div class="col-last even-row-color">
<div class="block">The value of a scalar UDF argument or result: either a per-row <a href="ColumnarValue.Array.html" title="class in org.apache.datafusion"><code>ColumnarValue.Array</code></a> of length <code>
rowCount</code>, or a <a href="ColumnarValue.Scalar.html" title="class in org.apache.datafusion"><code>ColumnarValue.Scalar</code></a> (length-1 vector) that the framework broadcasts.</div>
</div>
-<div class="col-first even-row-color"><a href="class-use/CsvReadOptions.html#org.apache.datafusion">CsvReadOptions</a></div>
-<div class="col-last even-row-color">
+<div class="col-first odd-row-color"><a href="class-use/CsvReadOptions.html#org.apache.datafusion">CsvReadOptions</a></div>
+<div class="col-last odd-row-color">
<div class="block">Configuration knobs for CSV sources passed to <a href="SessionContext.html#registerCsv(java.lang.String,java.lang.String,org.apache.datafusion.CsvReadOptions)"><code>SessionContext.registerCsv(String, String, CsvReadOptions)</code></a> and <a href="SessionContext.html#readCsv(java.lang.String,org.apache.datafusion.CsvReadOptions)"><code>SessionContext.readCsv(String, CsvReadOptions)</code></a>.</div>
</div>
+<div class="col-first even-row-color"><a href="class-use/CsvWriteOptions.html#org.apache.datafusion">CsvWriteOptions</a></div>
+<div class="col-last even-row-color">
+<div class="block">Configuration knobs for writing CSV, passed to <a href="DataFrame.html#writeCsv(java.lang.String,org.apache.datafusion.CsvWriteOptions)"><code>DataFrame.writeCsv(String, CsvWriteOptions)</code></a>.</div>
+</div>
<div class="col-first odd-row-color"><a href="class-use/DataFrame.html#org.apache.datafusion">DataFrame</a></div>
<div class="col-last odd-row-color">
<div class="block">A lazy representation of a query plan, mirroring the Rust DataFusion <code>DataFrame</code>.</div>
@@ -89,40 +97,48 @@ loadScripts(document, 'script');</script>
<div class="col-last even-row-color">
<div class="block">Compression of a file-format source.</div>
</div>
-<div class="col-first odd-row-color"><a href="class-use/NdJsonReadOptions.html#org.apache.datafusion">NdJsonReadOptions</a></div>
+<div class="col-first odd-row-color"><a href="class-use/JsonWriteOptions.html#org.apache.datafusion">JsonWriteOptions</a></div>
<div class="col-last odd-row-color">
-<div class="block">Configuration knobs for newline-delimited JSON sources passed to <a href="SessionContext.html#registerJson(java.lang.String,java.lang.String,org.apache.datafusion.NdJsonReadOptions)"><code>SessionContext.registerJson(String, String, NdJsonReadOptions)</code></a> and <a href="SessionContext.html#readJson(java.lang.String,org.apache.datafusion.NdJsonReadOptions)"><code>SessionContext.readJson(String, NdJsonReadOptions)</code></a>.</div>
+<div class="block">Configuration knobs for writing JSON, passed to <a href="DataFrame.html#writeJson(java.lang.String,org.apache.datafusion.JsonWriteOptions)"><code>DataFrame.writeJson(String, JsonWriteOptions)</code></a>.</div>
</div>
-<div class="col-first even-row-color"><a href="class-use/ParquetReadOptions.html#org.apache.datafusion">ParquetReadOptions</a></div>
+<div class="col-first even-row-color"><a href="class-use/NdJsonReadOptions.html#org.apache.datafusion">NdJsonReadOptions</a></div>
<div class="col-last even-row-color">
-<div class="block">Configuration knobs for parquet sources passed to <a href="SessionContext.html#registerParquet(java.lang.String,java.lang.String,org.apache.datafusion.ParquetReadOptions)"><code>SessionContext.registerParquet(String, String, ParquetReadOptions)</code></a> and <a href="SessionContext.html#readParquet(java.lang.String,org.apache.datafusion.ParquetReadOptions)"><code>SessionContext.readParquet(String, ParquetReadOptions)</code></a>.</div>
+<div class="block">Configuration knobs for newline-delimited JSON sources passed to <a href="SessionContext.html#registerJson(java.lang.String,java.lang.String,org.apache.datafusion.NdJsonReadOptions)"><code>SessionContext.registerJson(String, String, NdJsonReadOptions)</code></a> and <a href="SessionContext.html#readJson(java.lang.String,org.apache.datafusion.NdJsonReadOptions)"><code>SessionContext.readJson(String, NdJsonReadOptions)</code></a>.</div>
</div>
-<div class="col-first odd-row-color"><a href="class-use/ParquetWriteOptions.html#org.apache.datafusion">ParquetWriteOptions</a></div>
+<div class="col-first odd-row-color"><a href="class-use/ParquetReadOptions.html#org.apache.datafusion">ParquetReadOptions</a></div>
<div class="col-last odd-row-color">
-<div class="block">Configuration knobs for writing parquet, passed to <a href="DataFrame.html#writeParquet(java.lang.String,org.apache.datafusion.ParquetWriteOptions)"><code>DataFrame.writeParquet(String, ParquetWriteOptions)</code></a>.</div>
+<div class="block">Configuration knobs for parquet sources passed to <a href="SessionContext.html#registerParquet(java.lang.String,java.lang.String,org.apache.datafusion.ParquetReadOptions)"><code>SessionContext.registerParquet(String, String, ParquetReadOptions)</code></a> and <a href="SessionContext.html#readParquet(java.lang.String,org.apache.datafusion.ParquetReadOptions)"><code>SessionContext.readParquet(String, ParquetReadOptions)</code></a>.</div>
</div>
-<div class="col-first even-row-color"><a href="class-use/ScalarFunction.html#org.apache.datafusion">ScalarFunction</a></div>
+<div class="col-first even-row-color"><a href="class-use/ParquetWriteOptions.html#org.apache.datafusion">ParquetWriteOptions</a></div>
<div class="col-last even-row-color">
-<div class="block">A Java-implemented scalar SQL function.</div>
+<div class="block">Configuration knobs for writing parquet, passed to <a href="DataFrame.html#writeParquet(java.lang.String,org.apache.datafusion.ParquetWriteOptions)"><code>DataFrame.writeParquet(String, ParquetWriteOptions)</code></a>.</div>
</div>
-<div class="col-first odd-row-color"><a href="class-use/ScalarFunctionArgs.html#org.apache.datafusion">ScalarFunctionArgs</a></div>
+<div class="col-first odd-row-color"><a href="class-use/ScalarFunction.html#org.apache.datafusion">ScalarFunction</a></div>
<div class="col-last odd-row-color">
+<div class="block">A Java-implemented scalar SQL function.</div>
+</div>
+<div class="col-first even-row-color"><a href="class-use/ScalarFunctionArgs.html#org.apache.datafusion">ScalarFunctionArgs</a></div>
+<div class="col-last even-row-color">
<div class="block">Bundle of inputs passed to <a href="ScalarFunction.html#evaluate(org.apache.arrow.memory.BufferAllocator,org.apache.datafusion.ScalarFunctionArgs)"><code>ScalarFunction.evaluate(org.apache.arrow.memory.BufferAllocator, org.apache.datafusion.ScalarFunctionArgs)</code></a>: the per-arg <a href="ColumnarValue.html" title="interface in org.apache.datafusion"><code>ColumnarValue</code></a>s
(in declared order) and the batch row count DataFusion is driving.</div>
</div>
-<div class="col-first even-row-color"><a href="class-use/ScalarUdf.html#org.apache.datafusion">ScalarUdf</a></div>
-<div class="col-last even-row-color">
+<div class="col-first odd-row-color"><a href="class-use/ScalarUdf.html#org.apache.datafusion">ScalarUdf</a></div>
+<div class="col-last odd-row-color">
<div class="block">A scalar UDF registration handle: pairs a <a href="ScalarFunction.html" title="interface in org.apache.datafusion"><code>ScalarFunction</code></a> implementation with the metadata
DataFusion needs to dispatch SQL calls to it.</div>
</div>
-<div class="col-first odd-row-color"><a href="class-use/SessionContext.html#org.apache.datafusion">SessionContext</a></div>
-<div class="col-last odd-row-color">
+<div class="col-first even-row-color"><a href="class-use/SessionContext.html#org.apache.datafusion">SessionContext</a></div>
+<div class="col-last even-row-color">
<div class="block">A DataFusion session context.</div>
</div>
-<div class="col-first even-row-color"><a href="class-use/SessionContextBuilder.html#org.apache.datafusion">SessionContextBuilder</a></div>
-<div class="col-last even-row-color">
+<div class="col-first odd-row-color"><a href="class-use/SessionContextBuilder.html#org.apache.datafusion">SessionContextBuilder</a></div>
+<div class="col-last odd-row-color">
<div class="block">Builder for a configured <a href="SessionContext.html" title="class in org.apache.datafusion"><code>SessionContext</code></a>.</div>
</div>
+<div class="col-first even-row-color"><a href="class-use/TableProvider.html#org.apache.datafusion">TableProvider</a></div>
+<div class="col-last even-row-color">
+<div class="block">A Java-implemented table that can be registered with a <a href="SessionContext.html" title="class in org.apache.datafusion"><code>SessionContext</code></a> via <a href="SessionContext.html#registerTable(java.lang.String,org.apache.datafusion.TableProvider)"><code>SessionContext.registerTable(String, TableProvider)</code></a>.</div>
+</div>
<div class="col-first odd-row-color"><a href="class-use/UnnestOptions.html#org.apache.datafusion">UnnestOptions</a></div>
<div class="col-last odd-row-color">
<div class="block">Configuration knobs for <a href="DataFrame.html#unnestColumns(org.apache.datafusion.UnnestOptions,java.lang.String...)"><code>DataFrame.unnestColumns(UnnestOptions, String...)</code></a>, mirroring
@@ -145,6 +161,10 @@ loadScripts(document, 'script');</script>
<div class="col-last even-row-color">
<div class="block">A Java-implemented scalar SQL function.</div>
</div>
+<div class="col-first odd-row-color"><a href="class-use/TableProvider.html#org.apache.datafusion.internal">TableProvider</a></div>
+<div class="col-last odd-row-color">
+<div class="block">A Java-implemented table that can be registered with a <a href="SessionContext.html" title="class in org.apache.datafusion"><code>SessionContext</code></a> via <a href="SessionContext.html#registerTable(java.lang.String,org.apache.datafusion.TableProvider)"><code>SessionContext.registerTable(String, TableProvider)</code></a>.</div>
+</div>
</div>
</section>
</li>
diff --git a/api/org/apache/datafusion/proto/SchemaConverter.html b/api/org/apache/datafusion/proto/SchemaConverter.html
index da44f70..95a5e9e 100644
--- a/api/org/apache/datafusion/proto/SchemaConverter.html
+++ b/api/org/apache/datafusion/proto/SchemaConverter.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>SchemaConverter (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="declaration: package: org.apache.datafusion.proto, class: SchemaConverter">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
diff --git a/api/org/apache/datafusion/proto/class-use/SchemaConverter.html b/api/org/apache/datafusion/proto/class-use/SchemaConverter.html
index 02239d6..d01ccca 100644
--- a/api/org/apache/datafusion/proto/class-use/SchemaConverter.html
+++ b/api/org/apache/datafusion/proto/class-use/SchemaConverter.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>Uses of Class org.apache.datafusion.proto.SchemaConverter (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="use: package: org.apache.datafusion.proto, class: SchemaConverter">
<meta name="generator" content="javadoc/ClassUseWriter">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
diff --git a/api/org/apache/datafusion/proto/package-summary.html b/api/org/apache/datafusion/proto/package-summary.html
index 50c5303..843d411 100644
--- a/api/org/apache/datafusion/proto/package-summary.html
+++ b/api/org/apache/datafusion/proto/package-summary.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>org.apache.datafusion.proto (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="declaration: package: org.apache.datafusion.proto">
<meta name="generator" content="javadoc/PackageWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
diff --git a/api/org/apache/datafusion/proto/package-tree.html b/api/org/apache/datafusion/proto/package-tree.html
index d5b7245..0a08da0 100644
--- a/api/org/apache/datafusion/proto/package-tree.html
+++ b/api/org/apache/datafusion/proto/package-tree.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>org.apache.datafusion.proto Class Hierarchy (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="tree: package: org.apache.datafusion.proto">
<meta name="generator" content="javadoc/PackageTreeWriter">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
diff --git a/api/org/apache/datafusion/proto/package-use.html b/api/org/apache/datafusion/proto/package-use.html
index 5472d10..2844efe 100644
--- a/api/org/apache/datafusion/proto/package-use.html
+++ b/api/org/apache/datafusion/proto/package-use.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>Uses of Package org.apache.datafusion.proto (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="use: package: org.apache.datafusion.proto">
<meta name="generator" content="javadoc/PackageUseWriter">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
diff --git a/api/overview-summary.html b/api/overview-summary.html
index 7b4e813..f292785 100644
--- a/api/overview-summary.html
+++ b/api/overview-summary.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>Apache DataFusion Java 0.1.0-SNAPSHOT</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="index redirect">
<meta name="generator" content="javadoc/IndexRedirectWriter">
<link rel="canonical" href="index.html">
diff --git a/api/overview-tree.html b/api/overview-tree.html
index c525ff4..4b5895a 100644
--- a/api/overview-tree.html
+++ b/api/overview-tree.html
@@ -1,11 +1,11 @@
<!DOCTYPE HTML>
<html lang>
<head>
-<!-- Generated by javadoc (17) on Mon May 18 17:40:42 UTC 2026 -->
+<!-- Generated by javadoc (17) on Tue May 19 22:05:47 UTC 2026 -->
<title>Class Hierarchy (Apache DataFusion Java 0.1.0-SNAPSHOT)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta name="dc.created" content="2026-05-18">
+<meta name="dc.created" content="2026-05-19">
<meta name="description" content="class tree">
<meta name="generator" content="javadoc/TreeWriter">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
@@ -63,9 +63,12 @@ loadScripts(document, 'script');</script>
<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
<ul>
<li class="circle">org.apache.datafusion.<a href="org/apache/datafusion/ArrowReadOptions.html" class="type-name-link" title="class in org.apache.datafusion">ArrowReadOptions</a></li>
+<li class="circle">org.apache.datafusion.<a href="org/apache/datafusion/AvroReadOptions.html" class="type-name-link" title="class in org.apache.datafusion">AvroReadOptions</a></li>
<li class="circle">org.apache.datafusion.<a href="org/apache/datafusion/CsvReadOptions.html" class="type-name-link" title="class in org.apache.datafusion">CsvReadOptions</a></li>
+<li class="circle">org.apache.datafusion.<a href="org/apache/datafusion/CsvWriteOptions.html" class="type-name-link" title="class in org.apache.datafusion">CsvWriteOptions</a></li>
<li class="circle">org.apache.datafusion.<a href="org/apache/datafusion/DataFrame.html" class="type-name-link" title="class in org.apache.datafusion">DataFrame</a> (implements java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html" title="class or interface in java.lang" class="external-link">AutoCloseable</a>)</li>
<li class="circle">org.apache.datafusion.internal.<a href="org/apache/datafusion/internal/JniBridge.html" class="type-name-link" title="class in org.apache.datafusion.internal">JniBridge</a></li>
+<li class="circle">org.apache.datafusion.<a href="org/apache/datafusion/JsonWriteOptions.html" class="type-name-link" title="class in org.apache.datafusion">JsonWriteOptions</a></li>
<li class="circle">org.apache.datafusion.<a href="org/apache/datafusion/NativeLibraryLoader.html" class="type-name-link" title="class in org.apache.datafusion">NativeLibraryLoader</a></li>
<li class="circle">org.apache.datafusion.<a href="org/apache/datafusion/NdJsonReadOptions.html" class="type-name-link" title="class in org.apache.datafusion">NdJsonReadOptions</a></li>
<li class="circle">org.apache.datafusion.<a href="org/apache/datafusion/ParquetReadOptions.html" class="type-name-link" title="class in org.apache.datafusion">ParquetReadOptions</a></li>
@@ -81,6 +84,7 @@ loadScripts(document, 'script');</script>
<li class="circle">org.apache.datafusion.proto.<a href="org/apache/datafusion/proto/SchemaConverter.html" class="type-name-link" title="class in org.apache.datafusion.proto">SchemaConverter</a></li>
<li class="circle">org.apache.datafusion.<a href="org/apache/datafusion/SessionContext.html" class="type-name-link" title="class in org.apache.datafusion">SessionContext</a> (implements java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html" title="class or interface in java.lang" class="external-link">AutoCloseable</a>)</li>
<li class="circle">org.apache.datafusion.<a href="org/apache/datafusion/SessionContextBuilder.html" class="type-name-link" title="class in org.apache.datafusion">SessionContextBuilder</a></li>
+<li class="circle">org.apache.datafusion.<a href="org/apache/datafusion/SimpleTableProvider.html" class="type-name-link" title="class in org.apache.datafusion">SimpleTableProvider</a> (implements org.apache.datafusion.<a href="org/apache/datafusion/TableProvider.html" title="interface in org.apache.datafusion">TableProvider</a>)</li>
<li class="circle">org.apache.datafusion.<a href="org/apache/datafusion/UnnestOptions.html" class="type-name-link" title="class in org.apache.datafusion">UnnestOptions</a></li>
</ul>
</li>
@@ -91,6 +95,7 @@ loadScripts(document, 'script');</script>
<ul>
<li class="circle">org.apache.datafusion.<a href="org/apache/datafusion/ColumnarValue.html" class="type-name-link" title="interface in org.apache.datafusion">ColumnarValue</a></li>
<li class="circle">org.apache.datafusion.<a href="org/apache/datafusion/ScalarFunction.html" class="type-name-link" title="interface in org.apache.datafusion">ScalarFunction</a></li>
+<li class="circle">org.apache.datafusion.<a href="org/apache/datafusion/TableProvider.html" class="type-name-link" title="interface in org.apache.datafusion">TableProvider</a></li>
</ul>
</section>
<section class="hierarchy">
diff --git a/api/type-search-index.js b/api/type-search-index.js
index 4bee7a2..f96b199 100644
--- a/api/type-search-index.js
+++ b/api/type-search-index.js
@@ -1 +1 @@
-typeSearchIndex = [{"l":"All Classes and Interfaces","u":"allclasses-index.html"},{"p":"org.apache.datafusion","l":"ColumnarValue.Array"},{"p":"org.apache.datafusion","l":"ArrowReadOptions"},{"p":"org.apache.datafusion","l":"ColumnarValue"},{"p":"org.apache.datafusion","l":"CsvReadOptions"},{"p":"org.apache.datafusion","l":"DataFrame"},{"p":"org.apache.datafusion","l":"FileCompressionType"},{"p":"org.apache.datafusion.internal","l":"JniBridge"},{"p":"org.apache.datafusion","l":"NativeLib [...]
\ No newline at end of file
+typeSearchIndex = [{"l":"All Classes and Interfaces","u":"allclasses-index.html"},{"p":"org.apache.datafusion","l":"ColumnarValue.Array"},{"p":"org.apache.datafusion","l":"ArrowReadOptions"},{"p":"org.apache.datafusion","l":"AvroReadOptions"},{"p":"org.apache.datafusion","l":"ColumnarValue"},{"p":"org.apache.datafusion","l":"CsvReadOptions"},{"p":"org.apache.datafusion","l":"CsvWriteOptions"},{"p":"org.apache.datafusion","l":"DataFrame"},{"p":"org.apache.datafusion","l":"FileCompressionT [...]
\ No newline at end of file
diff --git a/objects.inv b/objects.inv
index a5ae935..d29098b 100644
Binary files a/objects.inv and b/objects.inv differ
diff --git a/searchindex.js b/searchindex.js
index e8f5ff7..2bcd61a 100644
--- a/searchindex.js
+++ b/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"alltitles": {"A minimal plan": [[11, "a-minimal-plan"]], "API Reference": [[6, null]], "Apache DataFusion Java": [[5, null]], "Build and test": [[1, "build-and-test"]], "Build from source": [[9, "build-from-source"]], "Build prerequisites": [[1, "build-prerequisites"]], "Code style": [[0, null]], "Configuration": [[14, "configuration"]], "Contributor Guide": [[2, null]], "DataFrame and SQL": [[7, null]], "DataFrame transformations": [[7, "dataframe-transformations"]], " [...]
\ No newline at end of file
+Search.setIndex({"alltitles": {"A minimal plan": [[11, "a-minimal-plan"]], "API Reference": [[6, null]], "Apache DataFusion Java": [[5, null]], "Build and test": [[1, "build-and-test"]], "Build from source": [[9, "build-from-source"]], "Build prerequisites": [[1, "build-prerequisites"]], "Code style": [[0, null]], "Configuration": [[14, "configuration"]], "Contract": [[15, "contract"]], "Contributor Guide": [[2, null]], "DataFrame and SQL": [[7, null]], "DataFrame transformations": [[7, [...]
\ No newline at end of file
diff --git a/user-guide/api-reference.html b/user-guide/api-reference.html
index 240e015..135d1a8 100644
--- a/user-guide/api-reference.html
+++ b/user-guide/api-reference.html
@@ -45,7 +45,7 @@
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Contributor Guide" href="../contributor-guide/index.html" />
- <link rel="prev" title="Scalar UDFs" href="scalar-udf.html" />
+ <link rel="prev" title="Java table providers" href="table-provider.html" />
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<meta name="docsearch:language" content="en"/>
<meta name="docsearch:version" content="" />
@@ -324,6 +324,7 @@
<li class="toctree-l1"><a class="reference internal" href="parquet.html">Parquet</a></li>
<li class="toctree-l1"><a class="reference internal" href="proto-plans.html">Logical plans via datafusion-proto</a></li>
<li class="toctree-l1"><a class="reference internal" href="scalar-udf.html">Scalar UDFs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="table-provider.html">Java table providers</a></li>
<li class="toctree-l1 current active"><a class="current reference internal" href="#">API Reference</a></li>
</ul>
</div>
@@ -428,12 +429,12 @@ intentionally excluded from the Javadoc — they are an implementation detail.</
<div class="prev-next-area">
<a class="left-prev"
- href="scalar-udf.html"
+ href="table-provider.html"
title="previous page">
<i class="fa-solid fa-angle-left"></i>
<div class="prev-next-info">
<p class="prev-next-subtitle">previous</p>
- <p class="prev-next-title">Scalar UDFs</p>
+ <p class="prev-next-title">Java table providers</p>
</div>
</a>
<a class="right-next"
diff --git a/user-guide/dataframe.html b/user-guide/dataframe.html
index 40f1ea9..3a1a3b0 100644
--- a/user-guide/dataframe.html
+++ b/user-guide/dataframe.html
@@ -324,6 +324,7 @@
<li class="toctree-l1"><a class="reference internal" href="parquet.html">Parquet</a></li>
<li class="toctree-l1"><a class="reference internal" href="proto-plans.html">Logical plans via datafusion-proto</a></li>
<li class="toctree-l1"><a class="reference internal" href="scalar-udf.html">Scalar UDFs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="table-provider.html">Java table providers</a></li>
<li class="toctree-l1"><a class="reference internal" href="api-reference.html">API Reference</a></li>
</ul>
</div>
diff --git a/user-guide/index.html b/user-guide/index.html
index eec464c..25016a2 100644
--- a/user-guide/index.html
+++ b/user-guide/index.html
@@ -324,6 +324,7 @@
<li class="toctree-l1"><a class="reference internal" href="parquet.html">Parquet</a></li>
<li class="toctree-l1"><a class="reference internal" href="proto-plans.html">Logical plans via datafusion-proto</a></li>
<li class="toctree-l1"><a class="reference internal" href="scalar-udf.html">Scalar UDFs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="table-provider.html">Java table providers</a></li>
<li class="toctree-l1"><a class="reference internal" href="api-reference.html">API Reference</a></li>
</ul>
</div>
@@ -418,6 +419,7 @@ and Parquet ingestion.</p>
<li class="toctree-l1"><a class="reference internal" href="parquet.html">Parquet</a></li>
<li class="toctree-l1"><a class="reference internal" href="proto-plans.html">Logical plans via datafusion-proto</a></li>
<li class="toctree-l1"><a class="reference internal" href="scalar-udf.html">Scalar UDFs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="table-provider.html">Java table providers</a></li>
<li class="toctree-l1"><a class="reference internal" href="api-reference.html">API Reference</a></li>
</ul>
</div>
diff --git a/user-guide/installation.html b/user-guide/installation.html
index c72d9f6..63ec491 100644
--- a/user-guide/installation.html
+++ b/user-guide/installation.html
@@ -324,6 +324,7 @@
<li class="toctree-l1"><a class="reference internal" href="parquet.html">Parquet</a></li>
<li class="toctree-l1"><a class="reference internal" href="proto-plans.html">Logical plans via datafusion-proto</a></li>
<li class="toctree-l1"><a class="reference internal" href="scalar-udf.html">Scalar UDFs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="table-provider.html">Java table providers</a></li>
<li class="toctree-l1"><a class="reference internal" href="api-reference.html">API Reference</a></li>
</ul>
</div>
diff --git a/user-guide/parquet.html b/user-guide/parquet.html
index 24adc37..98e15b4 100644
--- a/user-guide/parquet.html
+++ b/user-guide/parquet.html
@@ -324,6 +324,7 @@
<li class="toctree-l1 current active"><a class="current reference internal" href="#">Parquet</a></li>
<li class="toctree-l1"><a class="reference internal" href="proto-plans.html">Logical plans via datafusion-proto</a></li>
<li class="toctree-l1"><a class="reference internal" href="scalar-udf.html">Scalar UDFs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="table-provider.html">Java table providers</a></li>
<li class="toctree-l1"><a class="reference internal" href="api-reference.html">API Reference</a></li>
</ul>
</div>
diff --git a/user-guide/proto-plans.html b/user-guide/proto-plans.html
index 4409af8..3a0d252 100644
--- a/user-guide/proto-plans.html
+++ b/user-guide/proto-plans.html
@@ -324,6 +324,7 @@
<li class="toctree-l1"><a class="reference internal" href="parquet.html">Parquet</a></li>
<li class="toctree-l1 current active"><a class="current reference internal" href="#">Logical plans via datafusion-proto</a></li>
<li class="toctree-l1"><a class="reference internal" href="scalar-udf.html">Scalar UDFs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="table-provider.html">Java table providers</a></li>
<li class="toctree-l1"><a class="reference internal" href="api-reference.html">API Reference</a></li>
</ul>
</div>
diff --git a/user-guide/quickstart.html b/user-guide/quickstart.html
index 3c188c5..a2c254c 100644
--- a/user-guide/quickstart.html
+++ b/user-guide/quickstart.html
@@ -324,6 +324,7 @@
<li class="toctree-l1"><a class="reference internal" href="parquet.html">Parquet</a></li>
<li class="toctree-l1"><a class="reference internal" href="proto-plans.html">Logical plans via datafusion-proto</a></li>
<li class="toctree-l1"><a class="reference internal" href="scalar-udf.html">Scalar UDFs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="table-provider.html">Java table providers</a></li>
<li class="toctree-l1"><a class="reference internal" href="api-reference.html">API Reference</a></li>
</ul>
</div>
diff --git a/user-guide/scalar-udf.html b/user-guide/scalar-udf.html
index c1c5a5b..04be98e 100644
--- a/user-guide/scalar-udf.html
+++ b/user-guide/scalar-udf.html
@@ -44,7 +44,7 @@
<script>DOCUMENTATION_OPTIONS.pagename = 'user-guide/scalar-udf';</script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
- <link rel="next" title="API Reference" href="api-reference.html" />
+ <link rel="next" title="Java table providers" href="table-provider.html" />
<link rel="prev" title="Logical plans via datafusion-proto" href="proto-plans.html" />
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<meta name="docsearch:language" content="en"/>
@@ -324,6 +324,7 @@
<li class="toctree-l1"><a class="reference internal" href="parquet.html">Parquet</a></li>
<li class="toctree-l1"><a class="reference internal" href="proto-plans.html">Logical plans via datafusion-proto</a></li>
<li class="toctree-l1 current active"><a class="current reference internal" href="#">Scalar UDFs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="table-provider.html">Java table providers</a></li>
<li class="toctree-l1"><a class="reference internal" href="api-reference.html">API Reference</a></li>
</ul>
</div>
@@ -547,11 +548,11 @@ UDF as nulls in the input vector.</p></li>
</div>
</a>
<a class="right-next"
- href="api-reference.html"
+ href="table-provider.html"
title="next page">
<div class="prev-next-info">
<p class="prev-next-subtitle">next</p>
- <p class="prev-next-title">API Reference</p>
+ <p class="prev-next-title">Java table providers</p>
</div>
<i class="fa-solid fa-angle-right"></i>
</a>
diff --git a/user-guide/sessioncontext.html b/user-guide/sessioncontext.html
index 63d5d45..d881d72 100644
--- a/user-guide/sessioncontext.html
+++ b/user-guide/sessioncontext.html
@@ -324,6 +324,7 @@
<li class="toctree-l1"><a class="reference internal" href="parquet.html">Parquet</a></li>
<li class="toctree-l1"><a class="reference internal" href="proto-plans.html">Logical plans via datafusion-proto</a></li>
<li class="toctree-l1"><a class="reference internal" href="scalar-udf.html">Scalar UDFs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="table-provider.html">Java table providers</a></li>
<li class="toctree-l1"><a class="reference internal" href="api-reference.html">API Reference</a></li>
</ul>
</div>
diff --git a/user-guide/quickstart.html b/user-guide/table-provider.html
similarity index 57%
copy from user-guide/quickstart.html
copy to user-guide/table-provider.html
index 3c188c5..acfefa9 100644
--- a/user-guide/quickstart.html
+++ b/user-guide/table-provider.html
@@ -8,7 +8,7 @@
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
- <title>Quickstart — Apache DataFusion Java documentation</title>
+ <title>Java table providers — Apache DataFusion Java documentation</title>
@@ -41,11 +41,11 @@
<script src="../_static/documentation_options.js?v=5929fcd5"></script>
<script src="../_static/doctools.js?v=9a2dae69"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
- <script>DOCUMENTATION_OPTIONS.pagename = 'user-guide/quickstart';</script>
+ <script>DOCUMENTATION_OPTIONS.pagename = 'user-guide/table-provider';</script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
- <link rel="next" title="SessionContext" href="sessioncontext.html" />
- <link rel="prev" title="Installation" href="installation.html" />
+ <link rel="next" title="API Reference" href="api-reference.html" />
+ <link rel="prev" title="Scalar UDFs" href="scalar-udf.html" />
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<meta name="docsearch:language" content="en"/>
<meta name="docsearch:version" content="" />
@@ -318,12 +318,13 @@
<p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p>
<div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav">
<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation</a></li>
-<li class="toctree-l1 current active"><a class="current reference internal" href="#">Quickstart</a></li>
+<li class="toctree-l1"><a class="reference internal" href="quickstart.html">Quickstart</a></li>
<li class="toctree-l1"><a class="reference internal" href="sessioncontext.html">SessionContext</a></li>
<li class="toctree-l1"><a class="reference internal" href="dataframe.html">DataFrame and SQL</a></li>
<li class="toctree-l1"><a class="reference internal" href="parquet.html">Parquet</a></li>
<li class="toctree-l1"><a class="reference internal" href="proto-plans.html">Logical plans via datafusion-proto</a></li>
<li class="toctree-l1"><a class="reference internal" href="scalar-udf.html">Scalar UDFs</a></li>
+<li class="toctree-l1 current active"><a class="current reference internal" href="#">Java table providers</a></li>
<li class="toctree-l1"><a class="reference internal" href="api-reference.html">API Reference</a></li>
</ul>
</div>
@@ -368,7 +369,7 @@
<li class="breadcrumb-item"><a href="index.html" class="nav-link">User Guide</a></li>
- <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">Quickstart</span></li>
+ <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">Java table providers</span></li>
</ul>
</nav>
</div>
@@ -403,27 +404,56 @@ KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
-<section id="quickstart">
-<h1>Quickstart<a class="headerlink" href="#quickstart" title="Link to this heading">#</a></h1>
-<p>This page walks through a complete query end-to-end.</p>
-<section id="the-full-example">
-<h2>The full example<a class="headerlink" href="#the-full-example" title="Link to this heading">#</a></h2>
-<div class="highlight-java notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.memory.RootAllocator</span><span class="p">;</span>
+<section id="java-table-providers">
+<h1>Java table providers<a class="headerlink" href="#java-table-providers" title="Link to this heading">#</a></h1>
+<p><code class="docutils literal notranslate"><span class="pre">SessionContext.registerTable(name,</span> <span class="pre">provider)</span></code> registers a Java-implemented
+table. SQL queries that reference <code class="docutils literal notranslate"><span class="pre">name</span></code> call back into your <code class="docutils literal notranslate"><span class="pre">TableProvider</span></code>
+to fetch batches. Data flows from Java to native code via the Arrow C Data
+Interface, so there are no extra copies in the hot path. This is the Java
+counterpart to DataFusion’s Rust <code class="docutils literal notranslate"><span class="pre">SessionContext::register_table</span></code>.</p>
+<section id="implement">
+<h2>Implement<a class="headerlink" href="#implement" title="Link to this heading">#</a></h2>
+<div class="highlight-java notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.memory.BufferAllocator</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.vector.ipc.ArrowReader</span><span class="p">;</span>
-<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.datafusion.DataFrame</span><span class="p">;</span>
-<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.datafusion.SessionContext</span><span class="p">;</span>
+<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.vector.types.pojo.Schema</span><span class="p">;</span>
+<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.datafusion.TableProvider</span><span class="p">;</span>
-<span class="k">try</span><span class="w"> </span><span class="p">(</span><span class="kd">var</span><span class="w"> </span><span class="n">allocator</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">RootAllocator</span><span class="p">();</span>
-<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="n">ctx</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">SessionContext</span><span class="p">())</span><span class="w"> </span><span class="p">{</span>
+<span class="kd">public</span><span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kd">class</span> <span class="nc">MyTable</span><span class="w"> </span><span class="kd">implements</span><span class="w"> </span><span class="n">TableProvider</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="kd">private</span><span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">Schema</span><span class="w"> </span><span class="n">schema</span><span class="p">;</span>
-<span class="w"> </span><span class="n">ctx</span><span class="p">.</span><span class="na">registerParquet</span><span class="p">(</span><span class="s">"orders"</span><span class="p">,</span><span class="w"> </span><span class="s">"/path/to/orders.parquet"</span><span class="p">);</span>
+<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="nf">MyTable</span><span class="p">(</span><span class="n">Schema</span><span class="w"> </span><span class="n">schema</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="na">schema</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">schema</span><span class="p">;</span>
+<span class="w"> </span><span class="p">}</span>
+
+<span class="w"> </span><span class="nd">@Override</span><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">Schema</span><span class="w"> </span><span class="nf">schema</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">schema</span><span class="p">;</span><span class="w"> </span><span class="p">}</span>
-<span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="p">(</span><span class="n">DataFrame</span><span class="w"> </span><span class="n">df</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ctx</span><span class="p">.</span><span class="na">sql</span><span class="p">(</span>
-<span class="w"> </span><span class="s">"SELECT o_orderpriority, COUNT(*) AS n "</span><span class="w"> </span><span class="o">+</span>
-<span class="w"> </span><span class="s">"FROM orders GROUP BY o_orderpriority"</span><span class="p">);</span>
-<span class="w"> </span><span class="n">ArrowReader</span><span class="w"> </span><span class="n">reader</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">df</span><span class="p">.</span><span class="na">collect</span><span class="p">(</span><span class="n">allocator</span><span class="p">))</span><span class="w"> </span><span class="p">{</span>
-<span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">reader</span><span class="p">.</span><span class="na">loadNextBatch</span><span class="p">())</span><span class="w"> </span><span class="p">{</span>
-<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="n">batch</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">reader</span><span class="p">.</span><span class="na">getVectorSchemaRoot</span><span class="p">();</span>
+<span class="w"> </span><span class="nd">@Override</span>
+<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">ArrowReader</span><span class="w"> </span><span class="nf">scan</span><span class="p">(</span><span class="n">BufferAllocator</span><span class="w"> </span><span class="n">allocator</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="c1">// Return a fresh ArrowReader. The reader must allocate its buffers</span>
+<span class="w"> </span><span class="c1">// from `allocator` (or a child of it) — the framework needs the</span>
+<span class="w"> </span><span class="c1">// allocator hierarchy to share a root.</span>
+<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">openMyReader</span><span class="p">(</span><span class="n">allocator</span><span class="p">);</span>
+<span class="w"> </span><span class="p">}</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>For the common case of “I have a schema and a function that returns an
+<code class="docutils literal notranslate"><span class="pre">ArrowReader</span></code>,” <code class="docutils literal notranslate"><span class="pre">SimpleTableProvider</span></code> packages those two into a ready-made
+<code class="docutils literal notranslate"><span class="pre">TableProvider</span></code> without having to subclass:</p>
+<div class="highlight-java notranslate"><div class="highlight"><pre><span></span><span class="n">TableProvider</span><span class="w"> </span><span class="n">t</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">SimpleTableProvider</span><span class="p">(</span><span class="n">mySchema</span><span class="p">(),</span><span class="w"> </span><span class="n">allocator</span><span class="w"> </span><s [...]
+<span class="n">ctx</span><span class="p">.</span><span class="na">registerTable</span><span class="p">(</span><span class="s">"t"</span><span class="p">,</span><span class="w"> </span><span class="n">t</span><span class="p">);</span>
+</pre></div>
+</div>
+</section>
+<section id="register-and-query">
+<h2>Register and query<a class="headerlink" href="#register-and-query" title="Link to this heading">#</a></h2>
+<div class="highlight-java notranslate"><div class="highlight"><pre><span></span><span class="k">try</span><span class="w"> </span><span class="p">(</span><span class="n">SessionContext</span><span class="w"> </span><span class="n">ctx</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">SessionContext</span><span class="p">();</span>
+<span class="w"> </span><span class="n">BufferAllocator</span><span class="w"> </span><span class="n">allocator</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">RootAllocator</span><span class="p">())</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="n">ctx</span><span class="p">.</span><span class="na">registerTable</span><span class="p">(</span><span class="s">"t"</span><span class="p">,</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">MyTable</span><span class="p">(</span><span class="n">mySchema</span><span class="p">()));</span>
+
+<span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="p">(</span><span class="n">DataFrame</span><span class="w"> </span><span class="n">df</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ctx</span><span class="p">.</span><span class="na">sql</span><span class="p">(</span><span class="s">"SELECT * FROM t WHERE x > 10"</span><span class="p">);</span>
+<span class="w"> </span><span class="n">ArrowReader</span><span class="w"> </span><span class="n">r</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">df</span><span class="p">.</span><span class="na">collect</span><span class="p">(</span><span class="n">allocator</span><span class="p">))</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">r</span><span class="p">.</span><span class="na">loadNextBatch</span><span class="p">())</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="c1">// ...</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">}</span>
@@ -431,27 +461,49 @@ under the License.
</pre></div>
</div>
</section>
-<section id="walkthrough">
-<h2>Walkthrough<a class="headerlink" href="#walkthrough" title="Link to this heading">#</a></h2>
-<p><strong>Allocator.</strong> <code class="docutils literal notranslate"><span class="pre">RootAllocator</span></code> is the Arrow off-heap memory allocator. Every
-JVM-side Arrow buffer is tracked under an allocator; when the allocator is
-closed, leaked buffers are reported. Use one allocator per query (or one
-per application) and close it in a <code class="docutils literal notranslate"><span class="pre">try</span></code>-with-resources.</p>
-<p><strong>Session context.</strong> <code class="docutils literal notranslate"><span class="pre">SessionContext</span></code> is the entry point into DataFusion. It
-holds the catalog of registered tables and the query planner. It is
-<code class="docutils literal notranslate"><span class="pre">AutoCloseable</span></code> and <strong>not thread-safe</strong> — use one per thread, or guard
-access externally.</p>
-<p><strong>Registering data.</strong> <code class="docutils literal notranslate"><span class="pre">registerParquet(name,</span> <span class="pre">path)</span></code> reads the file’s footer
-on call and exposes it under the given table name. See
-<a class="reference internal" href="parquet.html"><span class="std std-doc">Parquet</span></a> for the options form.</p>
-<p><strong>SQL.</strong> <code class="docutils literal notranslate"><span class="pre">ctx.sql("...")</span></code> plans the query and returns a <code class="docutils literal notranslate"><span class="pre">DataFrame</span></code>. The
-query is not executed until results are pulled.</p>
-<p><strong>Collecting results.</strong> <code class="docutils literal notranslate"><span class="pre">df.collect(allocator)</span></code> starts native execution and
-returns an <code class="docutils literal notranslate"><span class="pre">ArrowReader</span></code>. Each <code class="docutils literal notranslate"><span class="pre">loadNextBatch()</span></code> call pulls the next
-<code class="docutils literal notranslate"><span class="pre">VectorSchemaRoot</span></code>; iterate until it returns <code class="docutils literal notranslate"><span class="pre">false</span></code>.</p>
-<p><strong>Cleanup.</strong> Both <code class="docutils literal notranslate"><span class="pre">SessionContext</span></code> and <code class="docutils literal notranslate"><span class="pre">DataFrame</span></code> are <code class="docutils literal notranslate"><span class="pre">AutoCloseable</span></code>. Use
-<code class="docutils literal notranslate"><span class="pre">try</span></code>-with-resources so native resources and Arrow buffers are released
-even on exception.</p>
+<section id="contract">
+<h2>Contract<a class="headerlink" href="#contract" title="Link to this heading">#</a></h2>
+<ul class="simple">
+<li><p><code class="docutils literal notranslate"><span class="pre">schema()</span></code> is called exactly once, on the caller’s thread, at registration
+time. Throwing from it aborts registration with the original exception.</p></li>
+<li><p><code class="docutils literal notranslate"><span class="pre">scan(allocator)</span></code> is called once per SQL query that touches the table, on a
+worker thread. It must return a fresh, independent <code class="docutils literal notranslate"><span class="pre">ArrowReader</span></code> on every
+call — this is what makes self-joins and <code class="docutils literal notranslate"><span class="pre">UNION</span> <span class="pre">ALL</span></code> over the same table
+work.</p></li>
+<li><p>The reader returned by <code class="docutils literal notranslate"><span class="pre">scan</span></code> must allocate its buffers from the supplied
+<code class="docutils literal notranslate"><span class="pre">allocator</span></code> (or a child of it). Arrow Java’s <code class="docutils literal notranslate"><span class="pre">Data.exportArrayStream</span></code>
+requires the reader’s allocator and the export allocator to share a root.</p></li>
+<li><p>The returned reader’s schema must equal the schema returned by <code class="docutils literal notranslate"><span class="pre">schema()</span></code>.
+A mismatch fails the query.</p></li>
+<li><p>You do not need to close the returned reader yourself. The framework
+installs a release callback that closes it when the underlying FFI stream
+is dropped.</p></li>
+</ul>
+</section>
+<section id="errors">
+<h2>Errors<a class="headerlink" href="#errors" title="Link to this heading">#</a></h2>
+<p>Exceptions thrown from <code class="docutils literal notranslate"><span class="pre">scan()</span></code> or from the returned reader surface in the
+<code class="docutils literal notranslate"><span class="pre">RuntimeException</span></code> raised by <code class="docutils literal notranslate"><span class="pre">collect()</span></code>. The error message includes the Java
+exception class and <code class="docutils literal notranslate"><span class="pre">getMessage()</span></code>, in the same format used for scalar UDF
+errors.</p>
+</section>
+<section id="threading">
+<h2>Threading<a class="headerlink" href="#threading" title="Link to this heading">#</a></h2>
+<p><code class="docutils literal notranslate"><span class="pre">SessionContext</span></code> is single-threaded, but <code class="docutils literal notranslate"><span class="pre">scan(allocator)</span></code> may be invoked from
+any DataFusion worker thread. If your implementation maintains mutable state
+across scans, synchronise it.</p>
+</section>
+<section id="limitations-v1">
+<h2>Limitations (v1)<a class="headerlink" href="#limitations-v1" title="Link to this heading">#</a></h2>
+<ul class="simple">
+<li><p>Single-partition scans only. DataFusion sees the table as one partition;
+multi-partition parallelism is a follow-up.</p></li>
+<li><p>No projection or filter pushdown. DataFusion applies projection and
+filters on top of the batches you return; the Java side always sees the
+full schema. The interface is intentionally minimal so it can grow these
+capabilities (as default methods) without breaking existing implementations.</p></li>
+<li><p>No <code class="docutils literal notranslate"><span class="pre">deregisterTable</span></code>. Tables live until the <code class="docutils literal notranslate"><span class="pre">SessionContext</span></code> is closed.</p></li>
+</ul>
</section>
</section>
@@ -466,20 +518,20 @@ even on exception.</p>
<div class="prev-next-area">
<a class="left-prev"
- href="installation.html"
+ href="scalar-udf.html"
title="previous page">
<i class="fa-solid fa-angle-left"></i>
<div class="prev-next-info">
<p class="prev-next-subtitle">previous</p>
- <p class="prev-next-title">Installation</p>
+ <p class="prev-next-title">Scalar UDFs</p>
</div>
</a>
<a class="right-next"
- href="sessioncontext.html"
+ href="api-reference.html"
title="next page">
<div class="prev-next-info">
<p class="prev-next-subtitle">next</p>
- <p class="prev-next-title">SessionContext</p>
+ <p class="prev-next-title">API Reference</p>
</div>
<i class="fa-solid fa-angle-right"></i>
</a>
@@ -502,8 +554,12 @@ even on exception.</p>
</div>
<nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2">
<ul class="visible nav section-nav flex-column">
-<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#the-full-example">The full example</a></li>
-<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#walkthrough">Walkthrough</a></li>
+<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#implement">Implement</a></li>
+<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#register-and-query">Register and query</a></li>
+<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#contract">Contract</a></li>
+<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#errors">Errors</a></li>
+<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#threading">Threading</a></li>
+<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#limitations-v1">Limitations (v1)</a></li>
</ul>
</nav></div>
@@ -511,7 +567,7 @@ even on exception.</p>
<div role="note" aria-label="source link">
<h3>This Page</h3>
<ul class="this-page-menu">
- <li><a href="../_sources/user-guide/quickstart.md.txt"
+ <li><a href="../_sources/user-guide/table-provider.md.txt"
rel="nofollow">Show Source</a></li>
</ul>
</div></div>
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datafusion.apache.org
For additional commands, e-mail: commits-help@datafusion.apache.org