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 3252ee459 deploy: c37ed1a8401c325fbc3291a04360a2686dd939d8
3252ee459 is described below

commit 3252ee4594856ba7ed46e436d317d6b7550f5317
Author: zeroshade <[email protected]>
AuthorDate: Mon Nov 2 20:31:27 2026 +0000

    deploy: c37ed1a8401c325fbc3291a04360a2686dd939d8
---
 concurrent-writes.html | 6 ++++++
 print.html             | 9 +++++++++
 releases.html          | 3 +++
 searchindex.js         | 2 +-
 searchindex.json       | 2 +-
 5 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/concurrent-writes.html b/concurrent-writes.html
index 389677b2c..ba91b2d3f 100644
--- a/concurrent-writes.html
+++ b/concurrent-writes.html
@@ -266,8 +266,14 @@ case errors.Is(err, table.ErrCommitDiverged), 
errors.Is(err, table.ErrTransactio
     // unrecoverable: rebuild the operation from the latest table
 case errors.Is(err, table.ErrCommitFailed):
     // retriable: refresh and try again (the retry loop does this for you)
+case errors.Is(err, table.ErrCommitRejected):
+    // the catalog wrote nothing: fix the cause, then call Commit again
 }
 </code></pre>
+<p>A commit can also fail with <code>table.ErrCommitRejected</code>, which 
means the catalog
+rejected it before writing anything, for example an update the catalog can't
+apply or a REST 400, 401, 403 or 404. The commit is not retried, and the
+transaction can still be committed.</p>
 <h2 id="isolation-levels"><a class="header" href="#isolation-levels">Isolation 
levels</a></h2>
 <p>Delete and update operations are validated under an isolation level, set per
 operation through table properties:</p>
diff --git a/print.html b/print.html
index 8d73ef6c9..188c4b1d5 100644
--- a/print.html
+++ b/print.html
@@ -2018,8 +2018,14 @@ case errors.Is(err, table.ErrCommitDiverged), 
errors.Is(err, table.ErrTransactio
     // unrecoverable: rebuild the operation from the latest table
 case errors.Is(err, table.ErrCommitFailed):
     // retriable: refresh and try again (the retry loop does this for you)
+case errors.Is(err, table.ErrCommitRejected):
+    // the catalog wrote nothing: fix the cause, then call Commit again
 }
 </code></pre>
+<p>A commit can also fail with <code>table.ErrCommitRejected</code>, which 
means the catalog
+rejected it before writing anything, for example an update the catalog can't
+apply or a REST 400, 401, 403 or 404. The commit is not retried, and the
+transaction can still be committed.</p>
 <h2 id="isolation-levels"><a class="header" href="#isolation-levels">Isolation 
levels</a></h2>
 <p>Delete and update operations are validated under an isolation level, set per
 operation through table properties:</p>
@@ -2778,6 +2784,9 @@ make integration-external-rest
 <li>
 <p><strong>In and NotIn follow SQL semantics for NULL.</strong> A multi-valued 
<code>NotIn</code>, <code>NOT(In(...))</code> and <code>NOT(NotIn(...))</code> 
no longer match rows where the column is NULL, consistent with 
<code>NotEqual</code>. A predicate under NOT on a column missing from an older 
data file no longer matches every row of that file; those rows match as a 
stored NULL would. Java's <code>Evaluator</code> still matches NULL for 
<code>notEq</code> and <code>notIn</code>, see [...]
 </li>
+<li>
+<p><strong>Commit rejections now match 
<code>table.ErrCommitRejected</code>.</strong> SQL, Glue, Hive and Hadoop 
failures while preparing metadata, plus REST commit responses 400, 401, 403 and 
404, leave transactions committable (after a REST 404, the next 
<code>Commit</code> fails when it reloads the table). Existing 
<code>errors.Is</code> matches keep working, but SQL, Glue, Hive and Hadoop 
rejection messages now start with <code>commit rejected: </code>, so code that 
matches error tex [...]
+</li>
 </ul>
 <h2 id="verifying-and-producing-releases"><a class="header" 
href="#verifying-and-producing-releases">Verifying and producing 
releases</a></h2>
 <p>If you are validating an RC or cutting a new release, see:</p>
diff --git a/releases.html b/releases.html
index 2e4d63b4f..55d6b4707 100644
--- a/releases.html
+++ b/releases.html
@@ -381,6 +381,9 @@
 <li>
 <p><strong>In and NotIn follow SQL semantics for NULL.</strong> A multi-valued 
<code>NotIn</code>, <code>NOT(In(...))</code> and <code>NOT(NotIn(...))</code> 
no longer match rows where the column is NULL, consistent with 
<code>NotEqual</code>. A predicate under NOT on a column missing from an older 
data file no longer matches every row of that file; those rows match as a 
stored NULL would. Java's <code>Evaluator</code> still matches NULL for 
<code>notEq</code> and <code>notIn</code>, see [...]
 </li>
+<li>
+<p><strong>Commit rejections now match 
<code>table.ErrCommitRejected</code>.</strong> SQL, Glue, Hive and Hadoop 
failures while preparing metadata, plus REST commit responses 400, 401, 403 and 
404, leave transactions committable (after a REST 404, the next 
<code>Commit</code> fails when it reloads the table). Existing 
<code>errors.Is</code> matches keep working, but SQL, Glue, Hive and Hadoop 
rejection messages now start with <code>commit rejected: </code>, so code that 
matches error tex [...]
+</li>
 </ul>
 <h2 id="verifying-and-producing-releases"><a class="header" 
href="#verifying-and-producing-releases">Verifying and producing 
releases</a></h2>
 <p>If you are validating an RC or cutting a new release, see:</p>
diff --git a/searchindex.js b/searchindex.js
index 49f6710a4..f9dd4e3fa 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 12120894b..955995e57 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