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 d60bc003e deploy: 2ee04d9b2dc9937986f2a749501055770df4a459
d60bc003e is described below

commit d60bc003e991bd91af8f90d80cf30b0d2f433fb2
Author: zeroshade <[email protected]>
AuthorDate: Wed Nov 4 18:09:24 2026 +0000

    deploy: 2ee04d9b2dc9937986f2a749501055770df4a459
---
 api.html         | 31 +++++++++++++++++++++++++++++++
 print.html       | 31 +++++++++++++++++++++++++++++++
 searchindex.js   |  2 +-
 searchindex.json |  2 +-
 4 files changed, 64 insertions(+), 2 deletions(-)

diff --git a/api.html b/api.html
index df37b8c7b..0a3e60563 100644
--- a/api.html
+++ b/api.html
@@ -595,6 +595,37 @@ err := txn.ExpireSnapshots(/* options */)
 err = txn.RollbackToSnapshot(targetSnapshotID)
 </code></pre>
 <p>Tune retention with the <code>history.expire.min-snapshots-to-keep</code>, 
<code>history.expire.max-snapshot-age-ms</code>, and 
<code>history.expire.max-ref-age-ms</code> table properties (see <a 
href="./configuration.html">Configuration</a>).</p>
+<h3 id="snapshot-integrity-audit-v1-and-later"><a class="header" 
href="#snapshot-integrity-audit-v1-and-later">Snapshot integrity audit (v1 and 
later)</a></h3>
+<p>Use <code>ValidateSnapshot</code> to inspect a snapshot's manifest list and 
entries without
+changing table data. This is especially useful for checking imported v1 tables
+before allowing them into production.</p>
+<pre><code class="language-go">report, err := 
tbl.Inspect().ValidateSnapshot(ctx, snapshotID)
+if err != nil {
+    return err // I/O failed or the scan was canceled; report may be 
incomplete.
+}
+if !report.Valid() {
+    for _, issue := range report.Issues {
+        fmt.Printf(&quot;%s: %s (%s)\n&quot;, issue.Code, issue.FilePath, 
issue.ManifestPath)
+    }
+}
+</code></pre>
+<p>The report checks manifest versions, partition spec references, content 
types,
+manifest entry counts, duplicate manifest paths, and duplicate live content 
files
+across <strong>all</strong> manifests in a snapshot. It also checks that live 
deletion vectors
+have a target path, that their blob ranges fit within the recorded file size,
+and that no two distinct vectors target the same data file.
+Deleted entries do not count as live.
+A report is valid only when <code>Complete</code> is true and 
<code>Issues</code> is empty.
+This is a metadata-only audit: it does not check data-file contents or whether
+data-file objects still exist. The audit works with both v1 manifest lists and
+older v1 snapshots containing embedded <code>manifests</code> paths. For 
embedded
+manifests, the partition spec ID is checked against table metadata when the
+optional header provides it, or inferred when the partition fields match 
exactly
+one historical spec. Missing, ambiguous, or mismatched partition specs are
+reported as issues rather than silently accepted.</p>
+<p>The file uniqueness and manifest requirements come from the
+<a href="https://iceberg.apache.org/spec/#content-file-uniqueness";>Iceberg 
spec</a>
+and <a href="https://iceberg.apache.org/spec/#manifest-lists";>manifest list 
spec</a>.</p>
 <h2 id="maintenance"><a class="header" href="#maintenance">Maintenance</a></h2>
 <h3 id="orphan-file-cleanup"><a class="header" 
href="#orphan-file-cleanup">Orphan file cleanup</a></h3>
 <pre><code class="language-go">import (
diff --git a/print.html b/print.html
index 0eb5f90ba..5fb7e0f0e 100644
--- a/print.html
+++ b/print.html
@@ -1557,6 +1557,37 @@ err := txn.ExpireSnapshots(/* options */)
 err = txn.RollbackToSnapshot(targetSnapshotID)
 </code></pre>
 <p>Tune retention with the <code>history.expire.min-snapshots-to-keep</code>, 
<code>history.expire.max-snapshot-age-ms</code>, and 
<code>history.expire.max-ref-age-ms</code> table properties (see <a 
href="./configuration.html">Configuration</a>).</p>
+<h3 id="snapshot-integrity-audit-v1-and-later"><a class="header" 
href="#snapshot-integrity-audit-v1-and-later">Snapshot integrity audit (v1 and 
later)</a></h3>
+<p>Use <code>ValidateSnapshot</code> to inspect a snapshot's manifest list and 
entries without
+changing table data. This is especially useful for checking imported v1 tables
+before allowing them into production.</p>
+<pre><code class="language-go">report, err := 
tbl.Inspect().ValidateSnapshot(ctx, snapshotID)
+if err != nil {
+    return err // I/O failed or the scan was canceled; report may be 
incomplete.
+}
+if !report.Valid() {
+    for _, issue := range report.Issues {
+        fmt.Printf(&quot;%s: %s (%s)\n&quot;, issue.Code, issue.FilePath, 
issue.ManifestPath)
+    }
+}
+</code></pre>
+<p>The report checks manifest versions, partition spec references, content 
types,
+manifest entry counts, duplicate manifest paths, and duplicate live content 
files
+across <strong>all</strong> manifests in a snapshot. It also checks that live 
deletion vectors
+have a target path, that their blob ranges fit within the recorded file size,
+and that no two distinct vectors target the same data file.
+Deleted entries do not count as live.
+A report is valid only when <code>Complete</code> is true and 
<code>Issues</code> is empty.
+This is a metadata-only audit: it does not check data-file contents or whether
+data-file objects still exist. The audit works with both v1 manifest lists and
+older v1 snapshots containing embedded <code>manifests</code> paths. For 
embedded
+manifests, the partition spec ID is checked against table metadata when the
+optional header provides it, or inferred when the partition fields match 
exactly
+one historical spec. Missing, ambiguous, or mismatched partition specs are
+reported as issues rather than silently accepted.</p>
+<p>The file uniqueness and manifest requirements come from the
+<a href="https://iceberg.apache.org/spec/#content-file-uniqueness";>Iceberg 
spec</a>
+and <a href="https://iceberg.apache.org/spec/#manifest-lists";>manifest list 
spec</a>.</p>
 <h2 id="maintenance"><a class="header" href="#maintenance">Maintenance</a></h2>
 <h3 id="orphan-file-cleanup"><a class="header" 
href="#orphan-file-cleanup">Orphan file cleanup</a></h3>
 <pre><code class="language-go">import (
diff --git a/searchindex.js b/searchindex.js
index 88f5e496a..4692d85e0 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 5c071de2d..7d4aea3f2 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