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 0de704c67 deploy: 74a3ac68364bda275c613518e1ee4989e7f7566e
0de704c67 is described below

commit 0de704c67fd63542bae8b00839dfb35be727174e
Author: zeroshade <[email protected]>
AuthorDate: Fri Oct 23 16:27:01 2026 +0000

    deploy: 74a3ac68364bda275c613518e1ee4989e7f7566e
---
 configuration.html | 25 +++++++++++++++++++++++--
 print.html         | 28 ++++++++++++++++++++++++++--
 releases.html      |  3 +++
 searchindex.js     |  2 +-
 searchindex.json   |  2 +-
 5 files changed, 54 insertions(+), 6 deletions(-)

diff --git a/configuration.html b/configuration.html
index 34c956260..cb97cca7f 100644
--- a/configuration.html
+++ b/configuration.html
@@ -517,13 +517,34 @@ func init() {
 <div 
class="table-wrapper"><table><thead><tr><th>Key</th><th>Default</th><th>Description</th></tr></thead><tbody>
 
<tr><td><code>read.split.target-size</code></td><td><code>134217728</code></td><td>Target
 size for coalescing safe row-group ranges when splitting large local Parquet 
files. A range may exceed the target when no supplied offset can divide it 
safely.</td></tr>
 
<tr><td><code>read.manifest-list-cache.enabled</code></td><td><code>true</code></td><td>Reuse
 decoded snapshot manifest lists across scans of a table handle. Set to 
<code>false</code> to disable retention and shared in-flight reads. Applied 
when loading or refreshing a table, and when creating a transaction 
scan.</td></tr>
+<tr><td><code>io.manifest.cache-enabled</code></td><td><code>false</code></td><td>Reuse
 raw manifest file content across local scans. Read from catalog FileIO 
properties in REST, Glue, SQL, Hive and Hadoop; REST table metadata and 
load-response config may override the catalog value.</td></tr>
+<tr><td><code>io.manifest.cache.expiration-interval-ms</code></td><td><code>60000</code></td><td>Idle
 expiration in milliseconds. Zero disables time-based expiration; negative or 
unparsable values warn and disable the cache. Expired entries are reclaimed on 
cache access/insertion, without a background cleanup task.</td></tr>
+<tr><td><code>io.manifest.cache.max-total-bytes</code></td><td><code>104857600</code></td><td>Retained
 raw bytes per independently loaded table. Handles returned by commit share 
their source table's cache and budget. Concurrent population buffers and bytes 
held by active readers are not counted. Non-positive or unparsable values warn 
and disable caching.</td></tr>
+<tr><td><code>io.manifest.cache.max-content-length</code></td><td><code>8388608</code></td><td>Maximum
 size of one manifest eligible for content caching. Non-positive or unparsable 
values warn and disable caching.</td></tr>
 </tbody></table>
 </div>
+<p>The catalog's FileIO properties configure manifest caching for all built-in
+catalogs. With direct <code>table.New</code> calls, use 
<code>WithScanPlanningIOProperties</code>
+or <code>WithSavedConfig</code>; saved config wins when the same key is 
present in both.
+Matching expiration interval, total byte limit and per-manifest byte limit
+preserve warm cache entries across refresh and commit. Changing a limit 
replaces
+the cache.</p>
+<p>Unlike Java, which rejects invalid manifest-cache limits, Go warns and 
disables
+the content cache for negative or unparsable expiration or
+non-positive/unparsable size limits.</p>
 <p>The manifest-list cache retains at most 64 snapshots and 32,768 manifest
 descriptors in total per table handle. These are count limits, not byte limits:
 memory use also depends on manifest paths, partition summaries, and key 
metadata.
-Refreshing the table replaces its cache. This caches decoded manifest lists;
-it does not implement Java's <code>io.manifest.cache.*</code> file-content 
cache settings.</p>
+Refreshing the table replaces its manifest-list cache.</p>
+<p>The optional manifest-content cache is separate. It stores immutable raw 
manifest
+bytes and still decodes, projects, and filters entries independently for each
+scan. Cache misses for the same manifest share one in-flight read. If 
population
+fails, its producer and each existing waiter independently fall back to one
+ordinary FileIO open; if the producer was canceled, live waiters can start
+another shared load. Failed content is not
+retained, so a later scan can retry. Manifests larger than the configured
+per-file limit bypass the cache. The current integration covers local scan
+planning; manifest lists continue to use the decoded manifest-list cache.</p>
 <p>The Java-compatible <code>read.split.planning-lookback</code> and 
<code>read.split.open-file-cost</code>
 names and defaults are also exported by the Go API for shared configuration,
 but are reserved for future task-group planning and are not currently read.</p>
diff --git a/print.html b/print.html
index f5c7e8667..dbf89a37a 100644
--- a/print.html
+++ b/print.html
@@ -804,13 +804,34 @@ func init() {
 <div 
class="table-wrapper"><table><thead><tr><th>Key</th><th>Default</th><th>Description</th></tr></thead><tbody>
 
<tr><td><code>read.split.target-size</code></td><td><code>134217728</code></td><td>Target
 size for coalescing safe row-group ranges when splitting large local Parquet 
files. A range may exceed the target when no supplied offset can divide it 
safely.</td></tr>
 
<tr><td><code>read.manifest-list-cache.enabled</code></td><td><code>true</code></td><td>Reuse
 decoded snapshot manifest lists across scans of a table handle. Set to 
<code>false</code> to disable retention and shared in-flight reads. Applied 
when loading or refreshing a table, and when creating a transaction 
scan.</td></tr>
+<tr><td><code>io.manifest.cache-enabled</code></td><td><code>false</code></td><td>Reuse
 raw manifest file content across local scans. Read from catalog FileIO 
properties in REST, Glue, SQL, Hive and Hadoop; REST table metadata and 
load-response config may override the catalog value.</td></tr>
+<tr><td><code>io.manifest.cache.expiration-interval-ms</code></td><td><code>60000</code></td><td>Idle
 expiration in milliseconds. Zero disables time-based expiration; negative or 
unparsable values warn and disable the cache. Expired entries are reclaimed on 
cache access/insertion, without a background cleanup task.</td></tr>
+<tr><td><code>io.manifest.cache.max-total-bytes</code></td><td><code>104857600</code></td><td>Retained
 raw bytes per independently loaded table. Handles returned by commit share 
their source table's cache and budget. Concurrent population buffers and bytes 
held by active readers are not counted. Non-positive or unparsable values warn 
and disable caching.</td></tr>
+<tr><td><code>io.manifest.cache.max-content-length</code></td><td><code>8388608</code></td><td>Maximum
 size of one manifest eligible for content caching. Non-positive or unparsable 
values warn and disable caching.</td></tr>
 </tbody></table>
 </div>
+<p>The catalog's FileIO properties configure manifest caching for all built-in
+catalogs. With direct <code>table.New</code> calls, use 
<code>WithScanPlanningIOProperties</code>
+or <code>WithSavedConfig</code>; saved config wins when the same key is 
present in both.
+Matching expiration interval, total byte limit and per-manifest byte limit
+preserve warm cache entries across refresh and commit. Changing a limit 
replaces
+the cache.</p>
+<p>Unlike Java, which rejects invalid manifest-cache limits, Go warns and 
disables
+the content cache for negative or unparsable expiration or
+non-positive/unparsable size limits.</p>
 <p>The manifest-list cache retains at most 64 snapshots and 32,768 manifest
 descriptors in total per table handle. These are count limits, not byte limits:
 memory use also depends on manifest paths, partition summaries, and key 
metadata.
-Refreshing the table replaces its cache. This caches decoded manifest lists;
-it does not implement Java's <code>io.manifest.cache.*</code> file-content 
cache settings.</p>
+Refreshing the table replaces its manifest-list cache.</p>
+<p>The optional manifest-content cache is separate. It stores immutable raw 
manifest
+bytes and still decodes, projects, and filters entries independently for each
+scan. Cache misses for the same manifest share one in-flight read. If 
population
+fails, its producer and each existing waiter independently fall back to one
+ordinary FileIO open; if the producer was canceled, live waiters can start
+another shared load. Failed content is not
+retained, so a later scan can retry. Manifests larger than the configured
+per-file limit bypass the cache. The current integration covers local scan
+planning; manifest lists continue to use the decoded manifest-list cache.</p>
 <p>The Java-compatible <code>read.split.planning-lookback</code> and 
<code>read.split.open-file-cost</code>
 names and defaults are also exported by the Go API for shared configuration,
 but are reserved for future task-group planning and are not currently read.</p>
@@ -2564,6 +2585,9 @@ make integration-external-rest
 <h3 id="unreleased-compatibility-notes"><a class="header" 
href="#unreleased-compatibility-notes">Unreleased compatibility notes</a></h3>
 <ul>
 <li>
+<p><strong>Transform formatting requires the result type.</strong> 
<code>Transform.ToHumanStr(value)</code> is removed. Use 
<code>Transform.ToHumanStrType(resultType, value)</code> to format partition 
values, including timestamps with time zones.</p>
+</li>
+<li>
 <p><strong>Orphan file cleanup moved to 
<code>table/maintenance</code>.</strong> The orphan-cleanup and file-purge API 
is no longer on <code>table.Table</code>; it now lives in the 
<code>table/maintenance</code> package as free functions that take the table as 
their first argument (matching <code>table/compaction</code>). For example, 
<code>tbl.DeleteOrphanFiles(ctx, ...)</code> becomes 
<code>maintenance.DeleteOrphanFiles(ctx, tbl, ...)</code>. Because 
<code>table/maintenance</code> impo [...]
 <ul>
 <li>Functions (now free functions taking <code>*table.Table</code>): 
<code>DeleteOrphanFiles</code>, <code>PlanOrphanFiles</code>, 
<code>ExecuteOrphanCleanup</code>, <code>PurgeFiles</code>.</li>
diff --git a/releases.html b/releases.html
index bb915dd9d..bbc2642eb 100644
--- a/releases.html
+++ b/releases.html
@@ -249,6 +249,9 @@
 <h3 id="unreleased-compatibility-notes"><a class="header" 
href="#unreleased-compatibility-notes">Unreleased compatibility notes</a></h3>
 <ul>
 <li>
+<p><strong>Transform formatting requires the result type.</strong> 
<code>Transform.ToHumanStr(value)</code> is removed. Use 
<code>Transform.ToHumanStrType(resultType, value)</code> to format partition 
values, including timestamps with time zones.</p>
+</li>
+<li>
 <p><strong>Orphan file cleanup moved to 
<code>table/maintenance</code>.</strong> The orphan-cleanup and file-purge API 
is no longer on <code>table.Table</code>; it now lives in the 
<code>table/maintenance</code> package as free functions that take the table as 
their first argument (matching <code>table/compaction</code>). For example, 
<code>tbl.DeleteOrphanFiles(ctx, ...)</code> becomes 
<code>maintenance.DeleteOrphanFiles(ctx, tbl, ...)</code>. Because 
<code>table/maintenance</code> impo [...]
 <ul>
 <li>Functions (now free functions taking <code>*table.Table</code>): 
<code>DeleteOrphanFiles</code>, <code>PlanOrphanFiles</code>, 
<code>ExecuteOrphanCleanup</code>, <code>PurgeFiles</code>.</li>
diff --git a/searchindex.js b/searchindex.js
index 306290bd0..d20a52ea7 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 30580266d..0f95e01eb 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

Reply via email to