This is an automated email from the ASF dual-hosted git repository.
github-actions[bot] pushed a commit to branch gh-pages
in repository https://gitbox.apache.org/repos/asf/iceberg-go.git
The following commit(s) were added to refs/heads/gh-pages by this push:
new d469614db deploy: 10002573905efc80336d4cce8fb49d51f2bf117a
d469614db is described below
commit d469614db93bc476147dcaade119646ef9021a9d
Author: zeroshade <[email protected]>
AuthorDate: Thu Nov 5 17:47:39 2026 +0000
deploy: 10002573905efc80336d4cce8fb49d51f2bf117a
---
configuration.html | 22 +++++++++++++++++++++-
print.html | 25 ++++++++++++++++++++++++-
releases.html | 3 +++
searchindex.js | 2 +-
searchindex.json | 2 +-
5 files changed, 50 insertions(+), 4 deletions(-)
diff --git a/configuration.html b/configuration.html
index edf7f1bcd..16abb53b8 100644
--- a/configuration.html
+++ b/configuration.html
@@ -273,7 +273,7 @@ catalog:
<h3 id="rest-catalogrest"><a class="header" href="#rest-catalogrest">REST
(<code>catalog/rest</code>)</a></h3>
<p>The most option-rich surface. Source: <a
href="https://github.com/apache/iceberg-go/blob/main/catalog/rest/options.go"><code>catalog/rest/options.go</code></a>.</p>
<div
class="table-wrapper"><table><thead><tr><th>Group</th><th>Options</th></tr></thead><tbody>
-<tr><td>Authentication</td><td><code>WithCredential</code>,
<code>WithOAuthToken</code>, <code>WithAuthManager</code>,
<code>WithAuthURI</code>, <code>WithScope</code>, <code>WithAudience</code>,
<code>WithResource</code></td></tr>
+<tr><td>Authentication</td><td><code>WithCredential</code>,
<code>WithOAuthToken</code>, <code>WithAuthManager</code>,
<code>NewOauth2AuthManager</code>, <code>WithAuthURI</code>,
<code>WithScope</code>, <code>WithAudience</code>,
<code>WithResource</code></td></tr>
<tr><td>AWS SigV4</td><td><code>WithSigV4</code>,
<code>WithSigV4RegionSvc</code>, <code>WithSigner</code></td></tr>
<tr><td>HTTP</td><td><code>WithHeaders</code>, <code>WithTLSConfig</code>,
<code>WithOAuthTLSConfig</code>, <code>WithCustomTransport</code></td></tr>
<tr><td>Catalog routing</td><td><code>WithPrefix</code>,
<code>WithWarehouseLocation</code>, <code>WithMetadataLocation</code></td></tr>
@@ -304,6 +304,26 @@ that loads a REST catalog with
<code>rest.sigv4-enabled=true</code> now fails at
until the <code>catalog/rest/sigv4</code> backend is blank-imported; the error
names the
import to add.</p>
</blockquote>
+<h4 id="custom-token-sources-google-biglake"><a class="header"
href="#custom-token-sources-google-biglake">Custom token sources (Google
BigLake)</a></h4>
+<p><code>WithCredential</code> uses the OAuth2 client-credentials flow against
the catalog's
+token endpoint. For other identity providers, wrap any
<code>oauth2.TokenSource</code> with
+<code>NewOauth2AuthManager</code> and pass it to <code>WithAuthManager</code>.
Google's BigLake Iceberg
+REST catalog, for example, takes Application Default Credentials:</p>
+<pre><code class="language-go">ts, err := google.DefaultTokenSource(ctx,
"https://www.googleapis.com/auth/cloud-platform")
+if err != nil {
+ return err
+}
+cat, err := rest.NewCatalog(ctx, "biglake",
"https://biglake.googleapis.com/iceberg/v1/restcatalog",
+ rest.WithAuthManager(rest.NewOauth2AuthManager(ts)),
+ rest.WithWarehouseLocation("gs://lakehouse-public-data"),
+ rest.WithHeaders(map[string]string{"x-goog-user-project":
"my-project"}))
+</code></pre>
+<p>The manager reuses a token until it expires, then asks the source for a new
one.
+That refresh runs on the HTTP client the source was built with. For
+<code>google.DefaultTokenSource</code> that is the client in the context's
+<code>oauth2.HTTPClient</code> value, or <code>http.DefaultClient</code>,
which has no timeout.
+Unlike Java's <code>rest.auth.type=google</code>, this is configured in code;
iceberg-go
+has no <code>rest.auth.type</code> property.</p>
<h4 id="metrics-reporting"><a class="header" href="#metrics-reporting">Metrics
reporting</a></h4>
<p>The REST catalog can POST scan and commit metrics to the catalog's
<code>.../tables/{table}/metrics</code> endpoint. These properties are passed
as
diff --git a/print.html b/print.html
index 7fd31acb3..5a807e57e 100644
--- a/print.html
+++ b/print.html
@@ -563,7 +563,7 @@ catalog:
<h3 id="rest-catalogrest"><a class="header" href="#rest-catalogrest">REST
(<code>catalog/rest</code>)</a></h3>
<p>The most option-rich surface. Source: <a
href="https://github.com/apache/iceberg-go/blob/main/catalog/rest/options.go"><code>catalog/rest/options.go</code></a>.</p>
<div
class="table-wrapper"><table><thead><tr><th>Group</th><th>Options</th></tr></thead><tbody>
-<tr><td>Authentication</td><td><code>WithCredential</code>,
<code>WithOAuthToken</code>, <code>WithAuthManager</code>,
<code>WithAuthURI</code>, <code>WithScope</code>, <code>WithAudience</code>,
<code>WithResource</code></td></tr>
+<tr><td>Authentication</td><td><code>WithCredential</code>,
<code>WithOAuthToken</code>, <code>WithAuthManager</code>,
<code>NewOauth2AuthManager</code>, <code>WithAuthURI</code>,
<code>WithScope</code>, <code>WithAudience</code>,
<code>WithResource</code></td></tr>
<tr><td>AWS SigV4</td><td><code>WithSigV4</code>,
<code>WithSigV4RegionSvc</code>, <code>WithSigner</code></td></tr>
<tr><td>HTTP</td><td><code>WithHeaders</code>, <code>WithTLSConfig</code>,
<code>WithOAuthTLSConfig</code>, <code>WithCustomTransport</code></td></tr>
<tr><td>Catalog routing</td><td><code>WithPrefix</code>,
<code>WithWarehouseLocation</code>, <code>WithMetadataLocation</code></td></tr>
@@ -594,6 +594,26 @@ that loads a REST catalog with
<code>rest.sigv4-enabled=true</code> now fails at
until the <code>catalog/rest/sigv4</code> backend is blank-imported; the error
names the
import to add.</p>
</blockquote>
+<h4 id="custom-token-sources-google-biglake"><a class="header"
href="#custom-token-sources-google-biglake">Custom token sources (Google
BigLake)</a></h4>
+<p><code>WithCredential</code> uses the OAuth2 client-credentials flow against
the catalog's
+token endpoint. For other identity providers, wrap any
<code>oauth2.TokenSource</code> with
+<code>NewOauth2AuthManager</code> and pass it to <code>WithAuthManager</code>.
Google's BigLake Iceberg
+REST catalog, for example, takes Application Default Credentials:</p>
+<pre><code class="language-go">ts, err := google.DefaultTokenSource(ctx,
"https://www.googleapis.com/auth/cloud-platform")
+if err != nil {
+ return err
+}
+cat, err := rest.NewCatalog(ctx, "biglake",
"https://biglake.googleapis.com/iceberg/v1/restcatalog",
+ rest.WithAuthManager(rest.NewOauth2AuthManager(ts)),
+ rest.WithWarehouseLocation("gs://lakehouse-public-data"),
+ rest.WithHeaders(map[string]string{"x-goog-user-project":
"my-project"}))
+</code></pre>
+<p>The manager reuses a token until it expires, then asks the source for a new
one.
+That refresh runs on the HTTP client the source was built with. For
+<code>google.DefaultTokenSource</code> that is the client in the context's
+<code>oauth2.HTTPClient</code> value, or <code>http.DefaultClient</code>,
which has no timeout.
+Unlike Java's <code>rest.auth.type=google</code>, this is configured in code;
iceberg-go
+has no <code>rest.auth.type</code> property.</p>
<h4 id="metrics-reporting"><a class="header" href="#metrics-reporting">Metrics
reporting</a></h4>
<p>The REST catalog can POST scan and commit metrics to the catalog's
<code>.../tables/{table}/metrics</code> endpoint. These properties are passed
as
@@ -2718,6 +2738,9 @@ make integration-external-rest
<p><strong><code>ReplaceFilesWithDeleteFiles</code> removed.</strong> For
delete-file replacements, use <code>tx.NewRewrite(snapshotProps)</code>, call
<code>DeleteFile</code> for each source file and
<code>AddDeleteFileWithDataSequenceNumber</code> for each replacement, then
commit the builder. Rewrites record a <code>replace</code> snapshot instead of
<code>overwrite</code>. The five-argument <code>ReplaceFiles</code> API is
unchanged and remains available for compaction and delete-fil [...]
</li>
<li>
+<p><strong>Manifest and deletion-vector reads take a context.</strong>
<code>Snapshot.Manifests</code>, <code>ManifestFile.Entries</code>,
<code>iceberg.EntriesWithProjection</code>, <code>dv.ReadDV</code> and
<code>dv.ReadDVs</code> now take a <code>context.Context</code> first argument
and pass it to <code>IO.Open</code>. Custom <code>ManifestFile</code>
implementations must add it to <code>Entries</code>.</p>
+</li>
+<li>
<p><strong>Path-based data-file addition renamed.</strong> Replace
<code>Transaction.AddFiles</code> with <code>AddDataFilesByPath</code>,
<code>AddFilesOption</code> with <code>AddDataFilesByPathOption</code>, and
<code>WithAddFilesConcurrency</code> with
<code>WithAddDataFilesByPathConcurrency</code>. Behavior is unchanged.</p>
</li>
<li>
diff --git a/releases.html b/releases.html
index a648e9a87..ea990ba85 100644
--- a/releases.html
+++ b/releases.html
@@ -270,6 +270,9 @@
<p><strong><code>ReplaceFilesWithDeleteFiles</code> removed.</strong> For
delete-file replacements, use <code>tx.NewRewrite(snapshotProps)</code>, call
<code>DeleteFile</code> for each source file and
<code>AddDeleteFileWithDataSequenceNumber</code> for each replacement, then
commit the builder. Rewrites record a <code>replace</code> snapshot instead of
<code>overwrite</code>. The five-argument <code>ReplaceFiles</code> API is
unchanged and remains available for compaction and delete-fil [...]
</li>
<li>
+<p><strong>Manifest and deletion-vector reads take a context.</strong>
<code>Snapshot.Manifests</code>, <code>ManifestFile.Entries</code>,
<code>iceberg.EntriesWithProjection</code>, <code>dv.ReadDV</code> and
<code>dv.ReadDVs</code> now take a <code>context.Context</code> first argument
and pass it to <code>IO.Open</code>. Custom <code>ManifestFile</code>
implementations must add it to <code>Entries</code>.</p>
+</li>
+<li>
<p><strong>Path-based data-file addition renamed.</strong> Replace
<code>Transaction.AddFiles</code> with <code>AddDataFilesByPath</code>,
<code>AddFilesOption</code> with <code>AddDataFilesByPathOption</code>, and
<code>WithAddFilesConcurrency</code> with
<code>WithAddDataFilesByPathConcurrency</code>. Behavior is unchanged.</p>
</li>
<li>
diff --git a/searchindex.js b/searchindex.js
index 75267a3da..8db8f1c5e 100644
--- a/searchindex.js
+++ b/searchindex.js
@@ -1 +1 @@
-Object.assign(window.search,
{"doc_urls":["introduction.html#iceberg-go","introduction.html#where-to-start","introduction.html#what-works-today","introduction.html#beyond-go","introduction.html#help-and-contribution","install.html#install","install.html#requirements","install.html#installation","getting-started.html#getting-started","getting-started.html#1-install","getting-started.html#2-open-a-local-catalog","getting-started.html#3-create-a-namespace-and-a-table","getting-started.html#
[...]
\ No newline at end of file
+Object.assign(window.search,
{"doc_urls":["introduction.html#iceberg-go","introduction.html#where-to-start","introduction.html#what-works-today","introduction.html#beyond-go","introduction.html#help-and-contribution","install.html#install","install.html#requirements","install.html#installation","getting-started.html#getting-started","getting-started.html#1-install","getting-started.html#2-open-a-local-catalog","getting-started.html#3-create-a-namespace-and-a-table","getting-started.html#
[...]
\ No newline at end of file
diff --git a/searchindex.json b/searchindex.json
index 4e623460e..abc44bf7f 100644
--- a/searchindex.json
+++ b/searchindex.json
@@ -1 +1 @@
-{"doc_urls":["introduction.html#iceberg-go","introduction.html#where-to-start","introduction.html#what-works-today","introduction.html#beyond-go","introduction.html#help-and-contribution","install.html#install","install.html#requirements","install.html#installation","getting-started.html#getting-started","getting-started.html#1-install","getting-started.html#2-open-a-local-catalog","getting-started.html#3-create-a-namespace-and-a-table","getting-started.html#4-write-some-arrow-data","get
[...]
\ No newline at end of file
+{"doc_urls":["introduction.html#iceberg-go","introduction.html#where-to-start","introduction.html#what-works-today","introduction.html#beyond-go","introduction.html#help-and-contribution","install.html#install","install.html#requirements","install.html#installation","getting-started.html#getting-started","getting-started.html#1-install","getting-started.html#2-open-a-local-catalog","getting-started.html#3-create-a-namespace-and-a-table","getting-started.html#4-write-some-arrow-data","get
[...]
\ No newline at end of file