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 608d029cd deploy: d6005444cac93512f727ae24dafd7eeba88faf6e
608d029cd is described below

commit 608d029cd48886d865bf7fa281712edca0f381b1
Author: laskoviymishka <[email protected]>
AuthorDate: Tue Oct 27 14:04:53 2026 +0000

    deploy: d6005444cac93512f727ae24dafd7eeba88faf6e
---
 configuration.html | 14 +++++++++++---
 print.html         | 14 +++++++++++---
 searchindex.js     |  2 +-
 searchindex.json   |  2 +-
 4 files changed, 24 insertions(+), 8 deletions(-)

diff --git a/configuration.html b/configuration.html
index 18f22ebf9..edf7f1bcd 100644
--- a/configuration.html
+++ b/configuration.html
@@ -467,7 +467,7 @@ selected.</p>
 <h2 id="pluggability"><a class="header" 
href="#pluggability">Pluggability</a></h2>
 <p>Two registries are user-extensible. The third (LocationProvider) is 
currently informational.</p>
 <h3 id="io-scheme-registry"><a class="header" href="#io-scheme-registry">IO 
scheme registry</a></h3>
-<p>Register a custom URL scheme with <a 
href="https://github.com/apache/iceberg-go/blob/main/io/registry.go";><code>io.Register</code></a>:</p>
+<p>Register a custom URL scheme from an <code>init</code> function with <a 
href="https://github.com/apache/iceberg-go/blob/main/io/registry.go";><code>io.MustRegister</code></a>:</p>
 <pre><code class="language-go">import (
     &quot;context&quot;
     &quot;net/url&quot;
@@ -476,14 +476,22 @@ selected.</p>
 )
 
 func init() {
-    io.Register(&quot;myfs&quot;, func(ctx context.Context, parsed *url.URL, 
props map[string]string) (io.IO, error) {
+    io.MustRegister(&quot;myfs&quot;, func(ctx context.Context, parsed 
*url.URL, props map[string]string) (io.IO, error) {
         return newMyFS(parsed, props)
     })
 }
 </code></pre>
-<p><code>io.Register</code> panics on <code>nil</code> factory or duplicate 
scheme. Built-in schemes: <code>file</code>, <code>&quot;&quot;</code> (the 
empty scheme).
+<p><code>io.Register</code> and <code>io.MustRegister</code> both panic for 
invalid or duplicate global schemes, preserving the existing registration 
contract. <code>registry.Register</code> on an independent registry returns 
<code>ErrInvalidSchemeFactory</code> or <code>ErrSchemeAlreadyRegistered</code> 
instead. Built-in schemes: <code>file</code>, <code>&quot;&quot;</code> (the 
empty scheme).
 Cloud schemes (<code>s3</code>, <code>gs</code>, <code>abfs</code>, etc.) are 
registered only when the matching backend package under <code>io/gocloud</code> 
is blank-imported.</p>
 <p><code>io.GetRegisteredSchemes()</code> returns the current scheme list; 
<code>io.Unregister(scheme)</code> removes one.</p>
+<p>To register schemes at runtime without changing other users of the same 
process, create an independent registry (catalogs and 
<code>view.CreateView</code> still resolve through the default registry):</p>
+<pre><code class="language-go">registry := io.NewRegistry()
+if err := registry.Register(&quot;myfs&quot;, myFactory); err != nil {
+    return err
+}
+fs, err := registry.LoadFS(ctx, props, &quot;myfs://bucket/key&quot;)
+</code></pre>
+<p><code>io.NewRegistry()</code> copies schemes already registered globally 
(including blank-imported cloud backends) but keeps later registrations 
independent. <code>registry.Clone()</code> makes an isolated copy of another 
registry. <code>registry.Names()</code> lists the schemes registered in that 
instance. <code>registry.LoadFSFunc()</code> is the lazy factory equivalent. 
Global <code>io.LoadFS()</code> and <code>io.LoadFSFunc()</code> continue using 
the default registry.</p>
 <h3 id="catalog-type-registry"><a class="header" 
href="#catalog-type-registry">Catalog type registry</a></h3>
 <p>Register a custom catalog type with <a 
href="https://github.com/apache/iceberg-go/blob/main/catalog/registry.go";><code>catalog.Register</code></a>:</p>
 <pre><code class="language-go">import (
diff --git a/print.html b/print.html
index af9cc7f98..955c0c7e9 100644
--- a/print.html
+++ b/print.html
@@ -757,7 +757,7 @@ selected.</p>
 <h2 id="pluggability"><a class="header" 
href="#pluggability">Pluggability</a></h2>
 <p>Two registries are user-extensible. The third (LocationProvider) is 
currently informational.</p>
 <h3 id="io-scheme-registry"><a class="header" href="#io-scheme-registry">IO 
scheme registry</a></h3>
-<p>Register a custom URL scheme with <a 
href="https://github.com/apache/iceberg-go/blob/main/io/registry.go";><code>io.Register</code></a>:</p>
+<p>Register a custom URL scheme from an <code>init</code> function with <a 
href="https://github.com/apache/iceberg-go/blob/main/io/registry.go";><code>io.MustRegister</code></a>:</p>
 <pre><code class="language-go">import (
     &quot;context&quot;
     &quot;net/url&quot;
@@ -766,14 +766,22 @@ selected.</p>
 )
 
 func init() {
-    io.Register(&quot;myfs&quot;, func(ctx context.Context, parsed *url.URL, 
props map[string]string) (io.IO, error) {
+    io.MustRegister(&quot;myfs&quot;, func(ctx context.Context, parsed 
*url.URL, props map[string]string) (io.IO, error) {
         return newMyFS(parsed, props)
     })
 }
 </code></pre>
-<p><code>io.Register</code> panics on <code>nil</code> factory or duplicate 
scheme. Built-in schemes: <code>file</code>, <code>&quot;&quot;</code> (the 
empty scheme).
+<p><code>io.Register</code> and <code>io.MustRegister</code> both panic for 
invalid or duplicate global schemes, preserving the existing registration 
contract. <code>registry.Register</code> on an independent registry returns 
<code>ErrInvalidSchemeFactory</code> or <code>ErrSchemeAlreadyRegistered</code> 
instead. Built-in schemes: <code>file</code>, <code>&quot;&quot;</code> (the 
empty scheme).
 Cloud schemes (<code>s3</code>, <code>gs</code>, <code>abfs</code>, etc.) are 
registered only when the matching backend package under <code>io/gocloud</code> 
is blank-imported.</p>
 <p><code>io.GetRegisteredSchemes()</code> returns the current scheme list; 
<code>io.Unregister(scheme)</code> removes one.</p>
+<p>To register schemes at runtime without changing other users of the same 
process, create an independent registry (catalogs and 
<code>view.CreateView</code> still resolve through the default registry):</p>
+<pre><code class="language-go">registry := io.NewRegistry()
+if err := registry.Register(&quot;myfs&quot;, myFactory); err != nil {
+    return err
+}
+fs, err := registry.LoadFS(ctx, props, &quot;myfs://bucket/key&quot;)
+</code></pre>
+<p><code>io.NewRegistry()</code> copies schemes already registered globally 
(including blank-imported cloud backends) but keeps later registrations 
independent. <code>registry.Clone()</code> makes an isolated copy of another 
registry. <code>registry.Names()</code> lists the schemes registered in that 
instance. <code>registry.LoadFSFunc()</code> is the lazy factory equivalent. 
Global <code>io.LoadFS()</code> and <code>io.LoadFSFunc()</code> continue using 
the default registry.</p>
 <h3 id="catalog-type-registry"><a class="header" 
href="#catalog-type-registry">Catalog type registry</a></h3>
 <p>Register a custom catalog type with <a 
href="https://github.com/apache/iceberg-go/blob/main/catalog/registry.go";><code>catalog.Register</code></a>:</p>
 <pre><code class="language-go">import (
diff --git a/searchindex.js b/searchindex.js
index 3f76c1235..5a435dec6 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 c9efdcd1b..83c39738c 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