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 (
"context"
"net/url"
@@ -476,14 +476,22 @@ selected.</p>
)
func init() {
- io.Register("myfs", func(ctx context.Context, parsed *url.URL,
props map[string]string) (io.IO, error) {
+ io.MustRegister("myfs", 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>""</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>""</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("myfs", myFactory); err != nil {
+ return err
+}
+fs, err := registry.LoadFS(ctx, props, "myfs://bucket/key")
+</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 (
"context"
"net/url"
@@ -766,14 +766,22 @@ selected.</p>
)
func init() {
- io.Register("myfs", func(ctx context.Context, parsed *url.URL,
props map[string]string) (io.IO, error) {
+ io.MustRegister("myfs", 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>""</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>""</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("myfs", myFactory); err != nil {
+ return err
+}
+fs, err := registry.LoadFS(ctx, props, "myfs://bucket/key")
+</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