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-rust.git
The following commit(s) were added to refs/heads/gh-pages by this push:
new f7e2c062e deploy: 5b8e78c9c7a71d8569715c4a97ce9f87bf3fb550
f7e2c062e is described below
commit f7e2c062edbcda5ce06566247ef8e507acd964b7
Author: blackmwk <[email protected]>
AuthorDate: Thu May 21 09:19:27 2026 +0000
deploy: 5b8e78c9c7a71d8569715c4a97ce9f87bf3fb550
---
api/iceberg/spec/enum.Literal.html | 8 +-
api/iceberg_catalog_hms/struct.HmsCatalog.html | 96 ++--
.../struct.HmsCatalogBuilder.html | 4 +-
api/src/iceberg/spec/values/literal.rs.html | 535 ++++++++++++---------
api/trait.impl/iceberg/catalog/trait.Catalog.js | 4 +-
.../iceberg/catalog/trait.CatalogBuilder.js | 4 +-
6 files changed, 355 insertions(+), 296 deletions(-)
diff --git a/api/iceberg/spec/enum.Literal.html
b/api/iceberg/spec/enum.Literal.html
index 9eca5b8fc..3e744b1bb 100644
--- a/api/iceberg/spec/enum.Literal.html
+++ b/api/iceberg/spec/enum.Literal.html
@@ -14,7 +14,7 @@ Elements can be either optional or required. Element types
may be any type.</p>
</div><section id="variant.Map" class="variant"><a href="#variant.Map"
class="anchor">§</a><h3 class="code-header">Map(<a class="struct"
href="struct.Map.html" title="struct
iceberg::spec::Map">Map</a>)</h3></section><div class="docblock"><p>A map is a
collection of key-value pairs with a key type and a value type.
Both the key field and value field each have an integer id that is unique in
the table schema.
Map keys are required and map values can be either optional or required. Both
map keys and map values may be any type, including nested types.</p>
-</div></div><h2 id="implementations" class="section-header">Implementations<a
href="#implementations" class="anchor">§</a></h2><div
id="implementations-list"><details class="toggle implementors-toggle"
open><summary><section id="impl-Literal" class="impl"><a class="src rightside"
href="../../src/iceberg/spec/values/literal.rs.html#58-746">Source</a><a
href="#impl-Literal" class="anchor">§</a><h3 class="code-header">impl <a
class="enum" href="enum.Literal.html" title="enum iceberg::spec:: [...]
+</div></div><h2 id="implementations" class="section-header">Implementations<a
href="#implementations" class="anchor">§</a></h2><div
id="implementations-list"><details class="toggle implementors-toggle"
open><summary><section id="impl-Literal" class="impl"><a class="src rightside"
href="../../src/iceberg/spec/values/literal.rs.html#58-752">Source</a><a
href="#impl-Literal" class="anchor">§</a><h3 class="code-header">impl <a
class="enum" href="enum.Literal.html" title="enum iceberg::spec:: [...]
<p>Example:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span
class="kw">use </span>iceberg::spec::{Literal, PrimitiveLiteral};
@@ -156,11 +156,11 @@ See <a
href="https://doc.rust-lang.org/stable/std/primitive.bool.html#impl-FromS
<span class="kw">let </span>t2 = Literal::decimal_from_str(<span
class="string">"123.45"</span>).unwrap();
<span class="macro">assert_eq!</span>(t1,
t2);</code></pre></div></div></details><details class="toggle method-toggle"
open><summary><section id="method.as_primitive_literal" class="method"><a
class="src rightside"
href="../../src/iceberg/spec/values/literal.rs.html#418-423">Source</a><h4
class="code-header">pub fn <a href="#method.as_primitive_literal"
class="fn">as_primitive_literal</a>(&self) -> <a class="enum"
href="https://doc.rust-lang.org/nightly/core/option/enum.Option.htm [...]
-</div></details><details class="toggle method-toggle" open><summary><section
id="method.try_from_json" class="method"><a class="src rightside"
href="../../src/iceberg/spec/values/literal.rs.html#428-599">Source</a><h4
class="code-header">pub fn <a href="#method.try_from_json"
class="fn">try_from_json</a>(value: <a class="enum"
href="https://docs.rs/serde_json/1.0.149/serde_json/value/enum.Value.html"
title="enum serde_json::value::Value">JsonValue</a>, data_type: &<a
class="enum" hre [...]
+</div></details><details class="toggle method-toggle" open><summary><section
id="method.try_from_json" class="method"><a class="src rightside"
href="../../src/iceberg/spec/values/literal.rs.html#428-605">Source</a><h4
class="code-header">pub fn <a href="#method.try_from_json"
class="fn">try_from_json</a>(value: <a class="enum"
href="https://docs.rs/serde_json/1.0.149/serde_json/value/enum.Value.html"
title="enum serde_json::value::Value">JsonValue</a>, data_type: &<a
class="enum" hre [...]
<p>See <a
href="https://iceberg.apache.org/spec/#json-single-value-serialization">this
spec</a> for reference.</p>
-</div></details><details class="toggle method-toggle" open><summary><section
id="method.try_into_json" class="method"><a class="src rightside"
href="../../src/iceberg/spec/values/literal.rs.html#604-726">Source</a><h4
class="code-header">pub fn <a href="#method.try_into_json"
class="fn">try_into_json</a>(self, type: &<a class="enum"
href="enum.Type.html" title="enum iceberg::spec::Type">Type</a>) -> <a
class="type" href="../type.Result.html" title="type iceberg::Result">Result</a>
[...]
+</div></details><details class="toggle method-toggle" open><summary><section
id="method.try_into_json" class="method"><a class="src rightside"
href="../../src/iceberg/spec/values/literal.rs.html#610-732">Source</a><h4
class="code-header">pub fn <a href="#method.try_into_json"
class="fn">try_into_json</a>(self, type: &<a class="enum"
href="enum.Type.html" title="enum iceberg::spec::Type">Type</a>) -> <a
class="type" href="../type.Result.html" title="type iceberg::Result">Result</a>
[...]
<p>See <a
href="https://iceberg.apache.org/spec/#json-single-value-serialization">this
spec</a> for reference.</p>
-</div></details><details class="toggle method-toggle" open><summary><section
id="method.into_any" class="method"><a class="src rightside"
href="../../src/iceberg/spec/values/literal.rs.html#729-745">Source</a><h4
class="code-header">pub fn <a href="#method.into_any"
class="fn">into_any</a>(self) -> <a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html"
title="struct alloc::boxed::Box">Box</a><dyn <a class="trait"
href="https://doc.rust-lang.org/night [...]
+</div></details><details class="toggle method-toggle" open><summary><section
id="method.into_any" class="method"><a class="src rightside"
href="../../src/iceberg/spec/values/literal.rs.html#735-751">Source</a><h4
class="code-header">pub fn <a href="#method.into_any"
class="fn">into_any</a>(self) -> <a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html"
title="struct alloc::boxed::Box">Box</a><dyn <a class="trait"
href="https://doc.rust-lang.org/night [...]
</div></details></div></details></div><h2 id="trait-implementations"
class="section-header">Trait Implementations<a href="#trait-implementations"
class="anchor">§</a></h2><div id="trait-implementations-list"><details
class="toggle implementors-toggle" open><summary><section
id="impl-Clone-for-Literal" class="impl"><a class="src rightside"
href="../../src/iceberg/spec/values/literal.rs.html#40">Source</a><a
href="#impl-Clone-for-Literal" class="anchor">§</a><h3 class="code-header">impl
<a [...]
H: <a class="trait"
href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html"
title="trait core::hash::Hasher">Hasher</a>,
Self: <a class="trait"
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"
title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div
class='docblock'>Feeds a slice of this type into the given <a
href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html"
title="trait core::hash::Hasher"><code>Hasher</code></a>. <a
href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read
more</a></div></details></div></d [...]
diff --git a/api/iceberg_catalog_hms/struct.HmsCatalog.html
b/api/iceberg_catalog_hms/struct.HmsCatalog.html
index afe9f9a7a..9c9eaf7b4 100644
--- a/api/iceberg_catalog_hms/struct.HmsCatalog.html
+++ b/api/iceberg_catalog_hms/struct.HmsCatalog.html
@@ -1,19 +1,19 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="Hive
metastore Catalog."><title>HmsCatalog in iceberg_catalog_hms -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-Medi
[...]
-</div></details><h2 id="implementations"
class="section-header">Implementations<a href="#implementations"
class="anchor">§</a></h2><div id="implementations-list"><details class="toggle
implementors-toggle" open><summary><section id="impl-HmsCatalog"
class="impl"><a class="src rightside"
href="../src/iceberg_catalog_hms/catalog.rs.html#195-247">Source</a><a
href="#impl-HmsCatalog" class="anchor">§</a><h3 class="code-header">impl <a
class="struct" href="struct.HmsCatalog.html" title="struc [...]
-</div></details></div></details></div><h2 id="trait-implementations"
class="section-header">Trait Implementations<a href="#trait-implementations"
class="anchor">§</a></h2><div id="trait-implementations-list"><details
class="toggle implementors-toggle" open><summary><section
id="impl-Catalog-for-HmsCatalog" class="impl"><a class="src rightside"
href="../src/iceberg_catalog_hms/catalog.rs.html#250-720">Source</a><a
href="#impl-Catalog-for-HmsCatalog" class="anchor">§</a><h3 class="code-hea
[...]
+</div></details><h2 id="implementations"
class="section-header">Implementations<a href="#implementations"
class="anchor">§</a></h2><div id="implementations-list"><details class="toggle
implementors-toggle" open><summary><section id="impl-HmsCatalog"
class="impl"><a class="src rightside"
href="../src/iceberg_catalog_hms/catalog.rs.html#195-247">Source</a><a
href="#impl-HmsCatalog" class="anchor">§</a><h3 class="code-header">impl <a
class="struct" href="struct.HmsCatalog.html" title="struc [...]
+</div></details></div></details></div><h2 id="trait-implementations"
class="section-header">Trait Implementations<a href="#trait-implementations"
class="anchor">§</a></h2><div id="trait-implementations-list"><details
class="toggle implementors-toggle" open><summary><section
id="impl-Catalog-for-HmsCatalog" class="impl"><a class="src rightside"
href="../src/iceberg_catalog_hms/catalog.rs.html#250-720">Source</a><a
href="#impl-Catalog-for-HmsCatalog" class="anchor">§</a><h3 class="code-hea
[...]
&'life0 self,
- parent: <a class="enum"
href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html"
title="enum core::option::Option">Option</a><&'life1 <a class="struct"
href="../iceberg/catalog/struct.NamespaceIdent.html" title="struct
iceberg::catalog::NamespaceIdent">NamespaceIdent</a>>,
-) -> <a class="struct"
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html" title="struct
core::pin::Pin">Pin</a><<a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html"
title="struct alloc::boxed::Box">Box</a><dyn <a class="trait"
href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html"
title="trait core::future::future::Future">Future</a><Output = <a
class="type" href="../iceberg/error/type.Result.html" title= [...]
+ parent: <a class="enum"
href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html"
title="enum core::option::Option">Option</a><&'life1 NamespaceIdent>,
+) -> <a class="struct"
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html" title="struct
core::pin::Pin">Pin</a><<a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html"
title="struct alloc::boxed::Box">Box</a><dyn <a class="trait"
href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html"
title="trait core::future::future::Future">Future</a><Output = Result<<a
class="struct" href="https://doc.rust-lang.org/nig [...]
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div
class="docblock"><p>HMS doesn’t support nested namespaces.</p>
<p>We will return empty list if parent is some.</p>
<p>Align with java implementation: <a
href="https://github.com/apache/iceberg/blob/9bd62f79f8cd973c39d14e89163cb1c707470ed2/hive-metastore/src/main/java/org/apache/iceberg/hive/HiveCatalog.java#L305C26-L330">https://github.com/apache/iceberg/blob/9bd62f79f8cd973c39d14e89163cb1c707470ed2/hive-metastore/src/main/java/org/apache/iceberg/hive/HiveCatalog.java#L305C26-L330</a></p>
-</div></details><details class="toggle method-toggle" open><summary><section
id="method.create_namespace" class="method trait-impl"><a class="src rightside"
href="../src/iceberg_catalog_hms/catalog.rs.html#292-312">Source</a><a
href="#method.create_namespace" class="anchor">§</a><h4 class="code-header">fn
<a href="../iceberg/catalog/trait.Catalog.html#tymethod.create_namespace"
class="fn">create_namespace</a><'life0, 'life1, 'async_trait>(
+</div></details><details class="toggle method-toggle" open><summary><section
id="method.create_namespace" class="method trait-impl"><a class="src rightside"
href="../src/iceberg_catalog_hms/catalog.rs.html#292-312">Source</a><a
href="#method.create_namespace" class="anchor">§</a><h4 class="code-header">fn
<a class="fn">create_namespace</a><'life0, 'life1, 'async_trait>(
&'life0 self,
- namespace: &'life1 <a class="struct"
href="../iceberg/catalog/struct.NamespaceIdent.html" title="struct
iceberg::catalog::NamespaceIdent">NamespaceIdent</a>,
+ namespace: &'life1 NamespaceIdent,
properties: <a class="struct"
href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html"
title="struct std::collections::hash::map::HashMap">HashMap</a><<a
class="struct"
href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html"
title="struct alloc::string::String">String</a>, <a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html"
title="struct alloc::string::String">String</a>>,
-) -> <a class="struct"
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html" title="struct
core::pin::Pin">Pin</a><<a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html"
title="struct alloc::boxed::Box">Box</a><dyn <a class="trait"
href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html"
title="trait core::future::future::Future">Future</a><Output = <a
class="type" href="../iceberg/error/type.Result.html" title= [...]
+) -> <a class="struct"
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html" title="struct
core::pin::Pin">Pin</a><<a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html"
title="struct alloc::boxed::Box">Box</a><dyn <a class="trait"
href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html"
title="trait core::future::future::Future">Future</a><Output =
Result<Namespace>> + <a class="trait" href="https://do [...]
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div
class="docblock"><p>Creates a new namespace with the given identifier and
properties.</p>
@@ -30,10 +30,10 @@ successfully converted into a database configuration.</li>
<li>Errors from the underlying database creation process, converted using
<code>from_thrift_error</code>.</li>
</ul>
-</div></details><details class="toggle method-toggle" open><summary><section
id="method.get_namespace" class="method trait-impl"><a class="src rightside"
href="../src/iceberg_catalog_hms/catalog.rs.html#324-354">Source</a><a
href="#method.get_namespace" class="anchor">§</a><h4 class="code-header">fn <a
href="../iceberg/catalog/trait.Catalog.html#tymethod.get_namespace"
class="fn">get_namespace</a><'life0, 'life1, 'async_trait>(
+</div></details><details class="toggle method-toggle" open><summary><section
id="method.get_namespace" class="method trait-impl"><a class="src rightside"
href="../src/iceberg_catalog_hms/catalog.rs.html#324-354">Source</a><a
href="#method.get_namespace" class="anchor">§</a><h4 class="code-header">fn <a
class="fn">get_namespace</a><'life0, 'life1, 'async_trait>(
&'life0 self,
- namespace: &'life1 <a class="struct"
href="../iceberg/catalog/struct.NamespaceIdent.html" title="struct
iceberg::catalog::NamespaceIdent">NamespaceIdent</a>,
-) -> <a class="struct"
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html" title="struct
core::pin::Pin">Pin</a><<a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html"
title="struct alloc::boxed::Box">Box</a><dyn <a class="trait"
href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html"
title="trait core::future::future::Future">Future</a><Output = <a
class="type" href="../iceberg/error/type.Result.html" title= [...]
+ namespace: &'life1 NamespaceIdent,
+) -> <a class="struct"
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html" title="struct
core::pin::Pin">Pin</a><<a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html"
title="struct alloc::boxed::Box">Box</a><dyn <a class="trait"
href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html"
title="trait core::future::future::Future">Future</a><Output =
Result<Namespace>> + <a class="trait" href="https://do [...]
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div
class="docblock"><p>Retrieves a namespace by its identifier.</p>
@@ -46,10 +46,10 @@ Constructs a <code>Namespace</code> object with the
retrieved data and returns i
<li>If there is an error querying the database, returned by
<code>from_thrift_error</code>.</li>
</ul>
-</div></details><details class="toggle method-toggle" open><summary><section
id="method.namespace_exists" class="method trait-impl"><a class="src rightside"
href="../src/iceberg_catalog_hms/catalog.rs.html#368-385">Source</a><a
href="#method.namespace_exists" class="anchor">§</a><h4 class="code-header">fn
<a href="../iceberg/catalog/trait.Catalog.html#tymethod.namespace_exists"
class="fn">namespace_exists</a><'life0, 'life1, 'async_trait>(
+</div></details><details class="toggle method-toggle" open><summary><section
id="method.namespace_exists" class="method trait-impl"><a class="src rightside"
href="../src/iceberg_catalog_hms/catalog.rs.html#368-385">Source</a><a
href="#method.namespace_exists" class="anchor">§</a><h4 class="code-header">fn
<a class="fn">namespace_exists</a><'life0, 'life1, 'async_trait>(
&'life0 self,
- namespace: &'life1 <a class="struct"
href="../iceberg/catalog/struct.NamespaceIdent.html" title="struct
iceberg::catalog::NamespaceIdent">NamespaceIdent</a>,
-) -> <a class="struct"
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html" title="struct
core::pin::Pin">Pin</a><<a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html"
title="struct alloc::boxed::Box">Box</a><dyn <a class="trait"
href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html"
title="trait core::future::future::Future">Future</a><Output = <a
class="type" href="../iceberg/error/type.Result.html" title= [...]
+ namespace: &'life1 NamespaceIdent,
+) -> <a class="struct"
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html" title="struct
core::pin::Pin">Pin</a><<a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html"
title="struct alloc::boxed::Box">Box</a><dyn <a class="trait"
href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html"
title="trait core::future::future::Future">Future</a><Output = Result<<a
class="primitive" href="https://doc.rust-lang.org/ [...]
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div
class="docblock"><p>Checks if a namespace exists within the Hive Metastore.</p>
@@ -64,11 +64,11 @@ to determine if the specified namespace (database)
exists.</p>
<li><code>Err(...)</code> if an error occurs during validation or the Hive
Metastore
query, with the error encapsulating the issue.</li>
</ul>
-</div></details><details class="toggle method-toggle" open><summary><section
id="method.update_namespace" class="method trait-impl"><a class="src rightside"
href="../src/iceberg_catalog_hms/catalog.rs.html#397-427">Source</a><a
href="#method.update_namespace" class="anchor">§</a><h4 class="code-header">fn
<a href="../iceberg/catalog/trait.Catalog.html#tymethod.update_namespace"
class="fn">update_namespace</a><'life0, 'life1, 'async_trait>(
+</div></details><details class="toggle method-toggle" open><summary><section
id="method.update_namespace" class="method trait-impl"><a class="src rightside"
href="../src/iceberg_catalog_hms/catalog.rs.html#397-427">Source</a><a
href="#method.update_namespace" class="anchor">§</a><h4 class="code-header">fn
<a class="fn">update_namespace</a><'life0, 'life1, 'async_trait>(
&'life0 self,
- namespace: &'life1 <a class="struct"
href="../iceberg/catalog/struct.NamespaceIdent.html" title="struct
iceberg::catalog::NamespaceIdent">NamespaceIdent</a>,
+ namespace: &'life1 NamespaceIdent,
properties: <a class="struct"
href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html"
title="struct std::collections::hash::map::HashMap">HashMap</a><<a
class="struct"
href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html"
title="struct alloc::string::String">String</a>, <a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html"
title="struct alloc::string::String">String</a>>,
-) -> <a class="struct"
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html" title="struct
core::pin::Pin">Pin</a><<a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html"
title="struct alloc::boxed::Box">Box</a><dyn <a class="trait"
href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html"
title="trait core::future::future::Future">Future</a><Output = <a
class="type" href="../iceberg/error/type.Result.html" title= [...]
+) -> <a class="struct"
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html" title="struct
core::pin::Pin">Pin</a><<a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html"
title="struct alloc::boxed::Box">Box</a><dyn <a class="trait"
href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html"
title="trait core::future::future::Future">Future</a><Output = Result<<a
class="primitive" href="https://doc.rust-lang.org/ [...]
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div
class="docblock"><p>Asynchronously updates properties of an existing
namespace.</p>
@@ -79,10 +79,10 @@ in the Hive Metastore.</p>
<p>Returns <code>Ok(())</code> if the namespace update is successful. If the
namespace cannot be updated due to missing information or an error
during the update process, an <code>Err(...)</code> is returned.</p>
-</div></details><details class="toggle method-toggle" open><summary><section
id="method.drop_namespace" class="method trait-impl"><a class="src rightside"
href="../src/iceberg_catalog_hms/catalog.rs.html#436-453">Source</a><a
href="#method.drop_namespace" class="anchor">§</a><h4 class="code-header">fn <a
href="../iceberg/catalog/trait.Catalog.html#tymethod.drop_namespace"
class="fn">drop_namespace</a><'life0, 'life1, 'async_trait>(
+</div></details><details class="toggle method-toggle" open><summary><section
id="method.drop_namespace" class="method trait-impl"><a class="src rightside"
href="../src/iceberg_catalog_hms/catalog.rs.html#436-453">Source</a><a
href="#method.drop_namespace" class="anchor">§</a><h4 class="code-header">fn <a
class="fn">drop_namespace</a><'life0, 'life1, 'async_trait>(
&'life0 self,
- namespace: &'life1 <a class="struct"
href="../iceberg/catalog/struct.NamespaceIdent.html" title="struct
iceberg::catalog::NamespaceIdent">NamespaceIdent</a>,
-) -> <a class="struct"
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html" title="struct
core::pin::Pin">Pin</a><<a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html"
title="struct alloc::boxed::Box">Box</a><dyn <a class="trait"
href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html"
title="trait core::future::future::Future">Future</a><Output = <a
class="type" href="../iceberg/error/type.Result.html" title= [...]
+ namespace: &'life1 NamespaceIdent,
+) -> <a class="struct"
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html" title="struct
core::pin::Pin">Pin</a><<a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html"
title="struct alloc::boxed::Box">Box</a><dyn <a class="trait"
href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html"
title="trait core::future::future::Future">Future</a><Output = Result<<a
class="primitive" href="https://doc.rust-lang.org/ [...]
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div
class="docblock"><p>Asynchronously drops a namespace from the Hive
Metastore.</p>
@@ -93,10 +93,10 @@ during the update process, an <code>Err(...)</code> is
returned.</p>
<li><code>Err(...)</code> signifies failure to drop the namespace due to
validation
errors, connectivity issues, or Hive Metastore constraints.</li>
</ul>
-</div></details><details class="toggle method-toggle" open><summary><section
id="method.list_tables" class="method trait-impl"><a class="src rightside"
href="../src/iceberg_catalog_hms/catalog.rs.html#464-487">Source</a><a
href="#method.list_tables" class="anchor">§</a><h4 class="code-header">fn <a
href="../iceberg/catalog/trait.Catalog.html#tymethod.list_tables"
class="fn">list_tables</a><'life0, 'life1, 'async_trait>(
+</div></details><details class="toggle method-toggle" open><summary><section
id="method.list_tables" class="method trait-impl"><a class="src rightside"
href="../src/iceberg_catalog_hms/catalog.rs.html#464-487">Source</a><a
href="#method.list_tables" class="anchor">§</a><h4 class="code-header">fn <a
class="fn">list_tables</a><'life0, 'life1, 'async_trait>(
&'life0 self,
- namespace: &'life1 <a class="struct"
href="../iceberg/catalog/struct.NamespaceIdent.html" title="struct
iceberg::catalog::NamespaceIdent">NamespaceIdent</a>,
-) -> <a class="struct"
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html" title="struct
core::pin::Pin">Pin</a><<a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html"
title="struct alloc::boxed::Box">Box</a><dyn <a class="trait"
href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html"
title="trait core::future::future::Future">Future</a><Output = <a
class="type" href="../iceberg/error/type.Result.html" title= [...]
+ namespace: &'life1 NamespaceIdent,
+) -> <a class="struct"
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html" title="struct
core::pin::Pin">Pin</a><<a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html"
title="struct alloc::boxed::Box">Box</a><dyn <a class="trait"
href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html"
title="trait core::future::future::Future">Future</a><Output = Result<<a
class="struct" href="https://doc.rust-lang.org/nig [...]
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div
class="docblock"><p>Asynchronously lists all tables within a specified
namespace.</p>
@@ -108,11 +108,11 @@ representing a table within the specified namespace.</li>
<li><code>Err(...)</code> if an error occurs during namespace validation or
while
querying the database.</li>
</ul>
-</div></details><details class="toggle method-toggle" open><summary><section
id="method.create_table" class="method trait-impl"><a class="src rightside"
href="../src/iceberg_catalog_hms/catalog.rs.html#501-549">Source</a><a
href="#method.create_table" class="anchor">§</a><h4 class="code-header">fn <a
href="../iceberg/catalog/trait.Catalog.html#tymethod.create_table"
class="fn">create_table</a><'life0, 'life1, 'async_trait>(
+</div></details><details class="toggle method-toggle" open><summary><section
id="method.create_table" class="method trait-impl"><a class="src rightside"
href="../src/iceberg_catalog_hms/catalog.rs.html#501-549">Source</a><a
href="#method.create_table" class="anchor">§</a><h4 class="code-header">fn <a
class="fn">create_table</a><'life0, 'life1, 'async_trait>(
&'life0 self,
- namespace: &'life1 <a class="struct"
href="../iceberg/catalog/struct.NamespaceIdent.html" title="struct
iceberg::catalog::NamespaceIdent">NamespaceIdent</a>,
- creation: <a class="struct"
href="../iceberg/catalog/struct.TableCreation.html" title="struct
iceberg::catalog::TableCreation">TableCreation</a>,
-) -> <a class="struct"
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html" title="struct
core::pin::Pin">Pin</a><<a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html"
title="struct alloc::boxed::Box">Box</a><dyn <a class="trait"
href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html"
title="trait core::future::future::Future">Future</a><Output = <a
class="type" href="../iceberg/error/type.Result.html" title= [...]
+ namespace: &'life1 NamespaceIdent,
+ creation: TableCreation,
+) -> <a class="struct"
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html" title="struct
core::pin::Pin">Pin</a><<a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html"
title="struct alloc::boxed::Box">Box</a><dyn <a class="trait"
href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html"
title="trait core::future::future::Future">Future</a><Output =
Result<Table>> + <a class="trait" href="https://doc.ru [...]
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div
class="docblock"><p>Creates a new table within a specified namespace using the
provided
@@ -125,10 +125,10 @@ table.</p>
namespace identifiers, failure to determine a default storage location,
issues generating or writing table metadata, and errors communicating
with the Hive Metastore.</p>
-</div></details><details class="toggle method-toggle" open><summary><section
id="method.load_table" class="method trait-impl"><a class="src rightside"
href="../src/iceberg_catalog_hms/catalog.rs.html#563-588">Source</a><a
href="#method.load_table" class="anchor">§</a><h4 class="code-header">fn <a
href="../iceberg/catalog/trait.Catalog.html#tymethod.load_table"
class="fn">load_table</a><'life0, 'life1, 'async_trait>(
+</div></details><details class="toggle method-toggle" open><summary><section
id="method.load_table" class="method trait-impl"><a class="src rightside"
href="../src/iceberg_catalog_hms/catalog.rs.html#563-588">Source</a><a
href="#method.load_table" class="anchor">§</a><h4 class="code-header">fn <a
class="fn">load_table</a><'life0, 'life1, 'async_trait>(
&'life0 self,
- table: &'life1 <a class="struct"
href="../iceberg/catalog/struct.TableIdent.html" title="struct
iceberg::catalog::TableIdent">TableIdent</a>,
-) -> <a class="struct"
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html" title="struct
core::pin::Pin">Pin</a><<a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html"
title="struct alloc::boxed::Box">Box</a><dyn <a class="trait"
href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html"
title="trait core::future::future::Future">Future</a><Output = <a
class="type" href="../iceberg/error/type.Result.html" title= [...]
+ table: &'life1 TableIdent,
+) -> <a class="struct"
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html" title="struct
core::pin::Pin">Pin</a><<a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html"
title="struct alloc::boxed::Box">Box</a><dyn <a class="trait"
href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html"
title="trait core::future::future::Future">Future</a><Output =
Result<Table>> + <a class="trait" href="https://doc.ru [...]
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div
class="docblock"><p>Loads a table from the Hive Metastore and constructs a
<code>Table</code> object
@@ -143,10 +143,10 @@ based on its metadata.</p>
<li>Absence of metadata location information in the table’s properties.</li>
<li>Issues reading or deserializing the table’s metadata file.</li>
</ul>
-</div></details><details class="toggle method-toggle" open><summary><section
id="method.drop_table" class="method trait-impl"><a class="src rightside"
href="../src/iceberg_catalog_hms/catalog.rs.html#600-622">Source</a><a
href="#method.drop_table" class="anchor">§</a><h4 class="code-header">fn <a
href="../iceberg/catalog/trait.Catalog.html#tymethod.drop_table"
class="fn">drop_table</a><'life0, 'life1, 'async_trait>(
+</div></details><details class="toggle method-toggle" open><summary><section
id="method.drop_table" class="method trait-impl"><a class="src rightside"
href="../src/iceberg_catalog_hms/catalog.rs.html#600-622">Source</a><a
href="#method.drop_table" class="anchor">§</a><h4 class="code-header">fn <a
class="fn">drop_table</a><'life0, 'life1, 'async_trait>(
&'life0 self,
- table: &'life1 <a class="struct"
href="../iceberg/catalog/struct.TableIdent.html" title="struct
iceberg::catalog::TableIdent">TableIdent</a>,
-) -> <a class="struct"
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html" title="struct
core::pin::Pin">Pin</a><<a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html"
title="struct alloc::boxed::Box">Box</a><dyn <a class="trait"
href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html"
title="trait core::future::future::Future">Future</a><Output = <a
class="type" href="../iceberg/error/type.Result.html" title= [...]
+ table: &'life1 TableIdent,
+) -> <a class="struct"
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html" title="struct
core::pin::Pin">Pin</a><<a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html"
title="struct alloc::boxed::Box">Box</a><dyn <a class="trait"
href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html"
title="trait core::future::future::Future">Future</a><Output = Result<<a
class="primitive" href="https://doc.rust-lang.org/ [...]
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div
class="docblock"><p>Asynchronously drops a table from the database.</p>
@@ -160,10 +160,10 @@ attempting to drop the table. This includes scenarios
where
the table does not exist.</li>
<li>Any network or communication error occurs with the database backend.</li>
</ul>
-</div></details><details class="toggle method-toggle" open><summary><section
id="method.table_exists" class="method trait-impl"><a class="src rightside"
href="../src/iceberg_catalog_hms/catalog.rs.html#642-662">Source</a><a
href="#method.table_exists" class="anchor">§</a><h4 class="code-header">fn <a
href="../iceberg/catalog/trait.Catalog.html#tymethod.table_exists"
class="fn">table_exists</a><'life0, 'life1, 'async_trait>(
+</div></details><details class="toggle method-toggle" open><summary><section
id="method.table_exists" class="method trait-impl"><a class="src rightside"
href="../src/iceberg_catalog_hms/catalog.rs.html#642-662">Source</a><a
href="#method.table_exists" class="anchor">§</a><h4 class="code-header">fn <a
class="fn">table_exists</a><'life0, 'life1, 'async_trait>(
&'life0 self,
- table: &'life1 <a class="struct"
href="../iceberg/catalog/struct.TableIdent.html" title="struct
iceberg::catalog::TableIdent">TableIdent</a>,
-) -> <a class="struct"
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html" title="struct
core::pin::Pin">Pin</a><<a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html"
title="struct alloc::boxed::Box">Box</a><dyn <a class="trait"
href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html"
title="trait core::future::future::Future">Future</a><Output = <a
class="type" href="../iceberg/error/type.Result.html" title= [...]
+ table: &'life1 TableIdent,
+) -> <a class="struct"
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html" title="struct
core::pin::Pin">Pin</a><<a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html"
title="struct alloc::boxed::Box">Box</a><dyn <a class="trait"
href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html"
title="trait core::future::future::Future">Future</a><Output = Result<<a
class="primitive" href="https://doc.rust-lang.org/ [...]
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div
class="docblock"><p>Asynchronously checks the existence of a specified table
@@ -174,11 +174,11 @@ in the database.</p>
<li><code>Ok(false)</code> if the table does not exist in the database.</li>
<li><code>Err(...)</code> if an error occurs during the process</li>
</ul>
-</div></details><details class="toggle method-toggle" open><summary><section
id="method.rename_table" class="method trait-impl"><a class="src rightside"
href="../src/iceberg_catalog_hms/catalog.rs.html#670-701">Source</a><a
href="#method.rename_table" class="anchor">§</a><h4 class="code-header">fn <a
href="../iceberg/catalog/trait.Catalog.html#tymethod.rename_table"
class="fn">rename_table</a><'life0, 'life1, 'life2, 'async_trait>(
+</div></details><details class="toggle method-toggle" open><summary><section
id="method.rename_table" class="method trait-impl"><a class="src rightside"
href="../src/iceberg_catalog_hms/catalog.rs.html#670-701">Source</a><a
href="#method.rename_table" class="anchor">§</a><h4 class="code-header">fn <a
class="fn">rename_table</a><'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
- src: &'life1 <a class="struct"
href="../iceberg/catalog/struct.TableIdent.html" title="struct
iceberg::catalog::TableIdent">TableIdent</a>,
- dest: &'life2 <a class="struct"
href="../iceberg/catalog/struct.TableIdent.html" title="struct
iceberg::catalog::TableIdent">TableIdent</a>,
-) -> <a class="struct"
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html" title="struct
core::pin::Pin">Pin</a><<a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html"
title="struct alloc::boxed::Box">Box</a><dyn <a class="trait"
href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html"
title="trait core::future::future::Future">Future</a><Output = <a
class="type" href="../iceberg/error/type.Result.html" title= [...]
+ src: &'life1 TableIdent,
+ dest: &'life2 TableIdent,
+) -> <a class="struct"
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html" title="struct
core::pin::Pin">Pin</a><<a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html"
title="struct alloc::boxed::Box">Box</a><dyn <a class="trait"
href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html"
title="trait core::future::future::Future">Future</a><Output = Result<<a
class="primitive" href="https://doc.rust-lang.org/ [...]
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
@@ -189,23 +189,23 @@ or moves it between namespaces (databases).</p>
<li><code>Ok(())</code> on successful rename or move of the table.</li>
<li><code>Err(...)</code> if an error occurs during the process.</li>
</ul>
-</div></details><details class="toggle method-toggle" open><summary><section
id="method.purge_table" class="method trait-impl"><a class="src rightside"
href="../src/iceberg_catalog_hms/catalog.rs.html#624-633">Source</a><a
href="#method.purge_table" class="anchor">§</a><h4 class="code-header">fn <a
href="../iceberg/catalog/trait.Catalog.html#tymethod.purge_table"
class="fn">purge_table</a><'life0, 'life1, 'async_trait>(
+</div></details><details class="toggle method-toggle" open><summary><section
id="method.purge_table" class="method trait-impl"><a class="src rightside"
href="../src/iceberg_catalog_hms/catalog.rs.html#624-633">Source</a><a
href="#method.purge_table" class="anchor">§</a><h4 class="code-header">fn <a
class="fn">purge_table</a><'life0, 'life1, 'async_trait>(
&'life0 self,
- table: &'life1 <a class="struct"
href="../iceberg/catalog/struct.TableIdent.html" title="struct
iceberg::catalog::TableIdent">TableIdent</a>,
-) -> <a class="struct"
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html" title="struct
core::pin::Pin">Pin</a><<a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html"
title="struct alloc::boxed::Box">Box</a><dyn <a class="trait"
href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html"
title="trait core::future::future::Future">Future</a><Output = <a
class="type" href="../iceberg/error/type.Result.html" title= [...]
+ table: &'life1 TableIdent,
+) -> <a class="struct"
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html" title="struct
core::pin::Pin">Pin</a><<a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html"
title="struct alloc::boxed::Box">Box</a><dyn <a class="trait"
href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html"
title="trait core::future::future::Future">Future</a><Output = Result<<a
class="primitive" href="https://doc.rust-lang.org/ [...]
Self: 'async_trait,
'life0: 'async_trait,
- 'life1: 'async_trait,</div></h4></section></summary><div
class='docblock'>Drop a table from the catalog and delete the underlying table
data. <a href="../iceberg/catalog/trait.Catalog.html#tymethod.purge_table">Read
more</a></div></details><details class="toggle method-toggle"
open><summary><section id="method.register_table" class="method trait-impl"><a
class="src rightside"
href="../src/iceberg_catalog_hms/catalog.rs.html#703-712">Source</a><a
href="#method.register_table" class="a [...]
+ 'life1: 'async_trait,</div></h4></section></summary><div
class='docblock'>Drop a table from the catalog and delete the underlying table
data. <a>Read more</a></div></details><details class="toggle method-toggle"
open><summary><section id="method.register_table" class="method trait-impl"><a
class="src rightside"
href="../src/iceberg_catalog_hms/catalog.rs.html#703-712">Source</a><a
href="#method.register_table" class="anchor">§</a><h4 class="code-header">fn <a
class="fn">register_tabl [...]
&'life0 self,
- _table_ident: &'life1 <a class="struct"
href="../iceberg/catalog/struct.TableIdent.html" title="struct
iceberg::catalog::TableIdent">TableIdent</a>,
+ _table_ident: &'life1 TableIdent,
_metadata_location: <a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html"
title="struct alloc::string::String">String</a>,
-) -> <a class="struct"
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html" title="struct
core::pin::Pin">Pin</a><<a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html"
title="struct alloc::boxed::Box">Box</a><dyn <a class="trait"
href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html"
title="trait core::future::future::Future">Future</a><Output = <a
class="type" href="../iceberg/error/type.Result.html" title= [...]
+) -> <a class="struct"
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html" title="struct
core::pin::Pin">Pin</a><<a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html"
title="struct alloc::boxed::Box">Box</a><dyn <a class="trait"
href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html"
title="trait core::future::future::Future">Future</a><Output =
Result<Table>> + <a class="trait" href="https://doc.ru [...]
Self: 'async_trait,
'life0: 'async_trait,
- 'life1: 'async_trait,</div></h4></section></summary><div
class='docblock'>Register an existing table to the
catalog.</div></details><details class="toggle method-toggle"
open><summary><section id="method.update_table" class="method trait-impl"><a
class="src rightside"
href="../src/iceberg_catalog_hms/catalog.rs.html#714-719">Source</a><a
href="#method.update_table" class="anchor">§</a><h4 class="code-header">fn <a
href="../iceberg/catalog/trait.Catalog.html#tymethod.update_table" cla [...]
+ 'life1: 'async_trait,</div></h4></section></summary><div
class='docblock'>Register an existing table to the
catalog.</div></details><details class="toggle method-toggle"
open><summary><section id="method.update_table" class="method trait-impl"><a
class="src rightside"
href="../src/iceberg_catalog_hms/catalog.rs.html#714-719">Source</a><a
href="#method.update_table" class="anchor">§</a><h4 class="code-header">fn <a
class="fn">update_table</a><'life0, 'async_trait>(
&'life0 self,
- _commit: <a class="struct"
href="../iceberg/catalog/struct.TableCommit.html" title="struct
iceberg::catalog::TableCommit">TableCommit</a>,
-) -> <a class="struct"
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html" title="struct
core::pin::Pin">Pin</a><<a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html"
title="struct alloc::boxed::Box">Box</a><dyn <a class="trait"
href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html"
title="trait core::future::future::Future">Future</a><Output = <a
class="type" href="../iceberg/error/type.Result.html" title= [...]
+ _commit: TableCommit,
+) -> <a class="struct"
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html" title="struct
core::pin::Pin">Pin</a><<a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html"
title="struct alloc::boxed::Box">Box</a><dyn <a class="trait"
href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html"
title="trait core::future::future::Future">Future</a><Output =
Result<Table>> + <a class="trait" href="https://doc.ru [...]
Self: 'async_trait,
'life0: 'async_trait,</div></h4></section></summary><div
class='docblock'>Update a table to the
catalog.</div></details></div></details><details class="toggle
implementors-toggle" open><summary><section id="impl-Debug-for-HmsCatalog"
class="impl"><a class="src rightside"
href="../src/iceberg_catalog_hms/catalog.rs.html#187-193">Source</a><a
href="#impl-Debug-for-HmsCatalog" class="anchor">§</a><h3
class="code-header">impl <a class="trait"
href="https://doc.rust-lang.org/nightly/core/ [...]
T: 'static + ?<a class="trait"
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"
title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div
class="impl-items"><details class="toggle method-toggle" open><summary><section
id="method.type_id" class="method trait-impl"><a class="src rightside"
href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#139">Source</a><a
href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href
[...]
diff --git a/api/iceberg_catalog_hms/struct.HmsCatalogBuilder.html
b/api/iceberg_catalog_hms/struct.HmsCatalogBuilder.html
index 05c6c6d7c..f3c72a234 100644
--- a/api/iceberg_catalog_hms/struct.HmsCatalogBuilder.html
+++ b/api/iceberg_catalog_hms/struct.HmsCatalogBuilder.html
@@ -1,9 +1,9 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=device-width, initial-scale=1.0"><meta
name="generator" content="rustdoc"><meta name="description" content="Builder
for `HmsCatalog`."><title>HmsCatalogBuilder in iceberg_catalog_hms -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,Fira
[...]
-</div></details><h2 id="trait-implementations" class="section-header">Trait
Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div
id="trait-implementations-list"><details class="toggle implementors-toggle"
open><summary><section id="impl-CatalogBuilder-for-HmsCatalogBuilder"
class="impl"><a class="src rightside"
href="../src/iceberg_catalog_hms/catalog.rs.html#78-154">Source</a><a
href="#impl-CatalogBuilder-for-HmsCatalogBuilder" class="anchor">§</a><h3
class="cod [...]
+</div></details><h2 id="trait-implementations" class="section-header">Trait
Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div
id="trait-implementations-list"><details class="toggle implementors-toggle"
open><summary><section id="impl-CatalogBuilder-for-HmsCatalogBuilder"
class="impl"><a class="src rightside"
href="../src/iceberg_catalog_hms/catalog.rs.html#78-154">Source</a><a
href="#impl-CatalogBuilder-for-HmsCatalogBuilder" class="anchor">§</a><h3
class="cod [...]
self,
name: impl <a class="trait"
href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html"
title="trait core::convert::Into">Into</a><<a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html"
title="struct alloc::string::String">String</a>>,
props: <a class="struct"
href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html"
title="struct std::collections::hash::map::HashMap">HashMap</a><<a
class="struct"
href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html"
title="struct alloc::string::String">String</a>, <a class="struct"
href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html"
title="struct alloc::string::String">String</a>>,
-) -> impl <a class="trait"
href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html"
title="trait core::future::future::Future">Future</a><Output = <a
class="type" href="../iceberg/error/type.Result.html" title="type
iceberg::error::Result">Result</a><Self::<a class="associatedtype"
href="../iceberg/catalog/trait.CatalogBuilder.html#associatedtype.C"
title="type iceberg::catalog::CatalogBuilder::C">C</a>>> + <a
class="trait" href="https://doc.rust-lang. [...]
+) -> impl <a class="trait"
href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html"
title="trait core::future::future::Future">Future</a><Output =
Result<Self::C>> + <a class="trait"
href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html"
title="trait core::marker::Send">Send</a></h4></section></summary><div
class='docblock'>Create a new catalog
instance.</div></details></div></details><details class="toggle
implementors-toggle" open><summ [...]
T: 'static + ?<a class="trait"
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"
title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div
class="impl-items"><details class="toggle method-toggle" open><summary><section
id="method.type_id" class="method trait-impl"><a class="src rightside"
href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#139">Source</a><a
href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href
[...]
T: CastFrom<U>,</div></h4></section></summary><div
class='docblock'>Casts <code>self</code> to type <code>T</code>. The <a
href="https://doc.rust-lang.org/reference/expressions/operator-expr.html#semantics">semantics
of numeric casting</a> with the <code>as</code> operator are followed, so
<code><T as As>::as_::<U></code> can be used in the same way as
<code>T as U</code> for numeric conversions. <a>Read
more</a></div></details></div></details><details class="toggle [...]
T: <a class="trait"
href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait
core::any::Any">Any</a>,</div></h3></section></summary><div
class="impl-items"><section id="method.as_any" class="method trait-impl"><a
href="#method.as_any" class="anchor">§</a><h4 class="code-header">fn <a
class="fn">as_any</a>(&self) -> &(dyn <a class="trait"
href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait
core::any::Any">Any</a> + 'static)</h4 [...]
diff --git a/api/src/iceberg/spec/values/literal.rs.html
b/api/src/iceberg/spec/values/literal.rs.html
index 35515ad2f..dced2ec05 100644
--- a/api/src/iceberg/spec/values/literal.rs.html
+++ b/api/src/iceberg/spec/values/literal.rs.html
@@ -499,249 +499,308 @@
<a href=#499 id=499 data-nosnippet>499</a>
(PrimitiveType::Uuid, JsonValue::String(s)) => <span
class="prelude-val">Ok</span>(<span
class="prelude-val">Some</span>(Literal::Primitive(
<a href=#500 id=500 data-nosnippet>500</a>
PrimitiveLiteral::UInt128(Uuid::parse_str(<span
class="kw-2">&</span>s)<span class="question-mark">?</span>.as_u128()),
<a href=#501 id=501 data-nosnippet>501</a> ))),
-<a href=#502 id=502 data-nosnippet>502</a>
(PrimitiveType::Fixed(<span class="kw">_</span>), JsonValue::String(<span
class="kw">_</span>)) => <span class="macro">todo!</span>(),
-<a href=#503 id=503 data-nosnippet>503</a>
(PrimitiveType::Binary, JsonValue::String(<span class="kw">_</span>)) =>
<span class="macro">todo!</span>(),
-<a href=#504 id=504 data-nosnippet>504</a> (
-<a href=#505 id=505 data-nosnippet>505</a>
PrimitiveType::Decimal {
-<a href=#506 id=506 data-nosnippet>506</a> precision:
<span class="kw">_</span>,
-<a href=#507 id=507 data-nosnippet>507</a> scale,
-<a href=#508 id=508 data-nosnippet>508</a> },
-<a href=#509 id=509 data-nosnippet>509</a>
JsonValue::String(s),
-<a href=#510 id=510 data-nosnippet>510</a> ) => {
-<a href=#511 id=511 data-nosnippet>511</a> <span
class="kw">let </span>decimal = decimal_from_str_exact(<span
class="kw-2">&</span>s)<span class="question-mark">?</span>;
-<a href=#512 id=512 data-nosnippet>512</a> <span
class="kw">let </span>rescaled = decimal_rescale(decimal, <span
class="kw-2">*</span>scale);
-<a href=#513 id=513 data-nosnippet>513</a> <span
class="prelude-val">Ok</span>(<span
class="prelude-val">Some</span>(Literal::Primitive(PrimitiveLiteral::Int128(
-<a href=#514 id=514 data-nosnippet>514</a>
decimal_mantissa(<span class="kw-2">&</span>rescaled),
-<a href=#515 id=515 data-nosnippet>515</a> ))))
-<a href=#516 id=516 data-nosnippet>516</a> }
-<a href=#517 id=517 data-nosnippet>517</a> (<span
class="kw">_</span>, JsonValue::Null) => <span
class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
-<a href=#518 id=518 data-nosnippet>518</a> (i, j) => <span
class="prelude-val">Err</span>(Error::new(
-<a href=#519 id=519 data-nosnippet>519</a> <span
class="kw">crate</span>::ErrorKind::DataInvalid,
-<a href=#520 id=520 data-nosnippet>520</a> <span
class="macro">format!</span>(<span class="string">"The json value {j} doesn't
fit to the iceberg type {i}."</span>),
-<a href=#521 id=521 data-nosnippet>521</a> )),
-<a href=#522 id=522 data-nosnippet>522</a> },
-<a href=#523 id=523 data-nosnippet>523</a> Type::Struct(schema)
=> {
-<a href=#524 id=524 data-nosnippet>524</a> <span class="kw">if
let </span>JsonValue::Object(<span class="kw-2">mut </span>object) = value {
-<a href=#525 id=525 data-nosnippet>525</a> <span
class="prelude-val">Ok</span>(<span
class="prelude-val">Some</span>(Literal::Struct(Struct::from_iter(
-<a href=#526 id=526 data-nosnippet>526</a>
schema.fields().iter().map(|field| {
-<a href=#527 id=527 data-nosnippet>527</a>
object.remove(<span
class="kw-2">&</span>field.id.to_string()).and_then(|value| {
-<a href=#528 id=528 data-nosnippet>528</a>
Literal::try_from_json(value, <span class="kw-2">&</span>field.field_type)
-<a href=#529 id=529 data-nosnippet>529</a>
.and_then(|value| {
-<a href=#530 id=530 data-nosnippet>530</a>
value.ok_or(Error::new(
-<a href=#531 id=531 data-nosnippet>531</a>
ErrorKind::DataInvalid,
-<a href=#532 id=532 data-nosnippet>532</a>
<span class="string">"Key of map cannot be null"</span>,
-<a href=#533 id=533 data-nosnippet>533</a>
))
-<a href=#534 id=534 data-nosnippet>534</a>
})
-<a href=#535 id=535 data-nosnippet>535</a>
.ok()
-<a href=#536 id=536 data-nosnippet>536</a> })
-<a href=#537 id=537 data-nosnippet>537</a> }),
-<a href=#538 id=538 data-nosnippet>538</a> ))))
-<a href=#539 id=539 data-nosnippet>539</a> } <span
class="kw">else </span>{
-<a href=#540 id=540 data-nosnippet>540</a> <span
class="prelude-val">Err</span>(Error::new(
-<a href=#541 id=541 data-nosnippet>541</a> <span
class="kw">crate</span>::ErrorKind::DataInvalid,
-<a href=#542 id=542 data-nosnippet>542</a> <span
class="string">"The json value for a struct type must be an object."</span>,
-<a href=#543 id=543 data-nosnippet>543</a> ))
-<a href=#544 id=544 data-nosnippet>544</a> }
-<a href=#545 id=545 data-nosnippet>545</a> }
-<a href=#546 id=546 data-nosnippet>546</a> Type::List(list) => {
-<a href=#547 id=547 data-nosnippet>547</a> <span class="kw">if
let </span>JsonValue::Array(array) = value {
-<a href=#548 id=548 data-nosnippet>548</a> <span
class="prelude-val">Ok</span>(<span
class="prelude-val">Some</span>(Literal::List(
-<a href=#549 id=549 data-nosnippet>549</a> array
-<a href=#550 id=550 data-nosnippet>550</a>
.into_iter()
-<a href=#551 id=551 data-nosnippet>551</a>
.map(|value| {
-<a href=#552 id=552 data-nosnippet>552</a>
Literal::try_from_json(value, <span
class="kw-2">&</span>list.element_field.field_type)
-<a href=#553 id=553 data-nosnippet>553</a> })
-<a href=#554 id=554 data-nosnippet>554</a>
.collect::<<span class="prelude-ty">Result</span><Vec<<span
class="kw">_</span>>>>()<span class="question-mark">?</span>,
-<a href=#555 id=555 data-nosnippet>555</a> )))
-<a href=#556 id=556 data-nosnippet>556</a> } <span
class="kw">else </span>{
-<a href=#557 id=557 data-nosnippet>557</a> <span
class="prelude-val">Err</span>(Error::new(
-<a href=#558 id=558 data-nosnippet>558</a> <span
class="kw">crate</span>::ErrorKind::DataInvalid,
-<a href=#559 id=559 data-nosnippet>559</a> <span
class="string">"The json value for a list type must be an array."</span>,
-<a href=#560 id=560 data-nosnippet>560</a> ))
-<a href=#561 id=561 data-nosnippet>561</a> }
-<a href=#562 id=562 data-nosnippet>562</a> }
-<a href=#563 id=563 data-nosnippet>563</a> Type::Map(map) => {
-<a href=#564 id=564 data-nosnippet>564</a> <span class="kw">if
let </span>JsonValue::Object(<span class="kw-2">mut </span>object) = value {
-<a href=#565 id=565 data-nosnippet>565</a> <span
class="kw">if let </span>(<span
class="prelude-val">Some</span>(JsonValue::Array(keys)), <span
class="prelude-val">Some</span>(JsonValue::Array(values))) =
-<a href=#566 id=566 data-nosnippet>566</a>
(object.remove(<span class="string">"keys"</span>), object.remove(<span
class="string">"values"</span>))
-<a href=#567 id=567 data-nosnippet>567</a> {
-<a href=#568 id=568 data-nosnippet>568</a> <span
class="prelude-val">Ok</span>(<span
class="prelude-val">Some</span>(Literal::Map(Map::from_iter(
-<a href=#569 id=569 data-nosnippet>569</a>
keys.into_iter()
-<a href=#570 id=570 data-nosnippet>570</a>
.zip(values.into_iter())
-<a href=#571 id=571 data-nosnippet>571</a>
.map(|(key, value)| {
-<a href=#572 id=572 data-nosnippet>572</a>
<span class="prelude-val">Ok</span>((
-<a href=#573 id=573 data-nosnippet>573</a>
Literal::try_from_json(key, <span
class="kw-2">&</span>map.key_field.field_type)
-<a href=#574 id=574 data-nosnippet>574</a>
.and_then(|value| {
-<a href=#575 id=575 data-nosnippet>575</a>
value.ok_or(Error::new(
-<a href=#576 id=576 data-nosnippet>576</a>
ErrorKind::DataInvalid,
-<a href=#577 id=577 data-nosnippet>577</a>
<span class="string">"Key of map cannot be null"</span>,
-<a href=#578 id=578 data-nosnippet>578</a>
))
-<a href=#579 id=579 data-nosnippet>579</a>
})<span class="question-mark">?</span>,
-<a href=#580 id=580 data-nosnippet>580</a>
Literal::try_from_json(value, <span
class="kw-2">&</span>map.value_field.field_type)<span
class="question-mark">?</span>,
-<a href=#581 id=581 data-nosnippet>581</a>
))
-<a href=#582 id=582 data-nosnippet>582</a> })
-<a href=#583 id=583 data-nosnippet>583</a>
.collect::<<span class="prelude-ty">Result</span><Vec<<span
class="kw">_</span>>>>()<span class="question-mark">?</span>,
-<a href=#584 id=584 data-nosnippet>584</a> ))))
-<a href=#585 id=585 data-nosnippet>585</a> } <span
class="kw">else </span>{
-<a href=#586 id=586 data-nosnippet>586</a> <span
class="prelude-val">Err</span>(Error::new(
-<a href=#587 id=587 data-nosnippet>587</a> <span
class="kw">crate</span>::ErrorKind::DataInvalid,
-<a href=#588 id=588 data-nosnippet>588</a> <span
class="string">"The json value for a list type must be an array."</span>,
-<a href=#589 id=589 data-nosnippet>589</a> ))
-<a href=#590 id=590 data-nosnippet>590</a> }
-<a href=#591 id=591 data-nosnippet>591</a> } <span
class="kw">else </span>{
-<a href=#592 id=592 data-nosnippet>592</a> <span
class="prelude-val">Err</span>(Error::new(
-<a href=#593 id=593 data-nosnippet>593</a> <span
class="kw">crate</span>::ErrorKind::DataInvalid,
-<a href=#594 id=594 data-nosnippet>594</a> <span
class="string">"The json value for a list type must be an array."</span>,
-<a href=#595 id=595 data-nosnippet>595</a> ))
-<a href=#596 id=596 data-nosnippet>596</a> }
-<a href=#597 id=597 data-nosnippet>597</a> }
-<a href=#598 id=598 data-nosnippet>598</a> }
-<a href=#599 id=599 data-nosnippet>599</a> }
-<a href=#600 id=600 data-nosnippet>600</a>
-<a href=#601 id=601 data-nosnippet>601</a> <span class="doccomment">///
Converting iceberg value to json value.
-<a href=#602 id=602 data-nosnippet>602</a> ///
-<a href=#603 id=603 data-nosnippet>603</a> /// See [this
spec](https://iceberg.apache.org/spec/#json-single-value-serialization) for
reference.
-<a href=#604 id=604 data-nosnippet>604</a> </span><span class="kw">pub fn
</span>try_into_json(<span class="self">self</span>, r#type: <span
class="kw-2">&</span>Type) -> <span
class="prelude-ty">Result</span><JsonValue> {
-<a href=#605 id=605 data-nosnippet>605</a> <span class="kw">match
</span>(<span class="self">self</span>, r#type) {
-<a href=#606 id=606 data-nosnippet>606</a>
(Literal::Primitive(prim), Type::Primitive(prim_type)) => <span
class="kw">match </span>(prim_type, prim) {
-<a href=#607 id=607 data-nosnippet>607</a>
(PrimitiveType::Boolean, PrimitiveLiteral::Boolean(val)) => {
-<a href=#608 id=608 data-nosnippet>608</a> <span
class="prelude-val">Ok</span>(JsonValue::Bool(val))
-<a href=#609 id=609 data-nosnippet>609</a> }
-<a href=#610 id=610 data-nosnippet>610</a> (PrimitiveType::Int,
PrimitiveLiteral::Int(val)) => {
-<a href=#611 id=611 data-nosnippet>611</a> <span
class="prelude-val">Ok</span>(JsonValue::Number((val).into()))
-<a href=#612 id=612 data-nosnippet>612</a> }
-<a href=#613 id=613 data-nosnippet>613</a>
(PrimitiveType::Long, PrimitiveLiteral::Long(val)) => {
-<a href=#614 id=614 data-nosnippet>614</a> <span
class="prelude-val">Ok</span>(JsonValue::Number((val).into()))
+<a href=#502 id=502 data-nosnippet>502</a>
(PrimitiveType::Fixed(size), JsonValue::String(s)) => {
+<a href=#503 id=503 data-nosnippet>503</a> <span
class="kw">let </span>bytes = decode_hex_bytes(<span
class="kw-2">&</span>s)<span class="question-mark">?</span>;
+<a href=#504 id=504 data-nosnippet>504</a>
validate_fixed_size(bytes.len(), <span class="kw-2">*</span>size)<span
class="question-mark">?</span>;
+<a href=#505 id=505 data-nosnippet>505</a> <span
class="prelude-val">Ok</span>(<span
class="prelude-val">Some</span>(Literal::Primitive(PrimitiveLiteral::Binary(bytes))))
+<a href=#506 id=506 data-nosnippet>506</a> }
+<a href=#507 id=507 data-nosnippet>507</a>
(PrimitiveType::Binary, JsonValue::String(s)) => <span
class="prelude-val">Ok</span>(<span
class="prelude-val">Some</span>(Literal::Primitive(
+<a href=#508 id=508 data-nosnippet>508</a>
PrimitiveLiteral::Binary(decode_hex_bytes(<span
class="kw-2">&</span>s)<span class="question-mark">?</span>),
+<a href=#509 id=509 data-nosnippet>509</a> ))),
+<a href=#510 id=510 data-nosnippet>510</a> (
+<a href=#511 id=511 data-nosnippet>511</a>
PrimitiveType::Decimal {
+<a href=#512 id=512 data-nosnippet>512</a> precision:
<span class="kw">_</span>,
+<a href=#513 id=513 data-nosnippet>513</a> scale,
+<a href=#514 id=514 data-nosnippet>514</a> },
+<a href=#515 id=515 data-nosnippet>515</a>
JsonValue::String(s),
+<a href=#516 id=516 data-nosnippet>516</a> ) => {
+<a href=#517 id=517 data-nosnippet>517</a> <span
class="kw">let </span>decimal = decimal_from_str_exact(<span
class="kw-2">&</span>s)<span class="question-mark">?</span>;
+<a href=#518 id=518 data-nosnippet>518</a> <span
class="kw">let </span>rescaled = decimal_rescale(decimal, <span
class="kw-2">*</span>scale);
+<a href=#519 id=519 data-nosnippet>519</a> <span
class="prelude-val">Ok</span>(<span
class="prelude-val">Some</span>(Literal::Primitive(PrimitiveLiteral::Int128(
+<a href=#520 id=520 data-nosnippet>520</a>
decimal_mantissa(<span class="kw-2">&</span>rescaled),
+<a href=#521 id=521 data-nosnippet>521</a> ))))
+<a href=#522 id=522 data-nosnippet>522</a> }
+<a href=#523 id=523 data-nosnippet>523</a> (<span
class="kw">_</span>, JsonValue::Null) => <span
class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
+<a href=#524 id=524 data-nosnippet>524</a> (i, j) => <span
class="prelude-val">Err</span>(Error::new(
+<a href=#525 id=525 data-nosnippet>525</a> <span
class="kw">crate</span>::ErrorKind::DataInvalid,
+<a href=#526 id=526 data-nosnippet>526</a> <span
class="macro">format!</span>(<span class="string">"The json value {j} doesn't
fit to the iceberg type {i}."</span>),
+<a href=#527 id=527 data-nosnippet>527</a> )),
+<a href=#528 id=528 data-nosnippet>528</a> },
+<a href=#529 id=529 data-nosnippet>529</a> Type::Struct(schema)
=> {
+<a href=#530 id=530 data-nosnippet>530</a> <span class="kw">if
let </span>JsonValue::Object(<span class="kw-2">mut </span>object) = value {
+<a href=#531 id=531 data-nosnippet>531</a> <span
class="prelude-val">Ok</span>(<span
class="prelude-val">Some</span>(Literal::Struct(Struct::from_iter(
+<a href=#532 id=532 data-nosnippet>532</a>
schema.fields().iter().map(|field| {
+<a href=#533 id=533 data-nosnippet>533</a>
object.remove(<span
class="kw-2">&</span>field.id.to_string()).and_then(|value| {
+<a href=#534 id=534 data-nosnippet>534</a>
Literal::try_from_json(value, <span class="kw-2">&</span>field.field_type)
+<a href=#535 id=535 data-nosnippet>535</a>
.and_then(|value| {
+<a href=#536 id=536 data-nosnippet>536</a>
value.ok_or(Error::new(
+<a href=#537 id=537 data-nosnippet>537</a>
ErrorKind::DataInvalid,
+<a href=#538 id=538 data-nosnippet>538</a>
<span class="string">"Key of map cannot be null"</span>,
+<a href=#539 id=539 data-nosnippet>539</a>
))
+<a href=#540 id=540 data-nosnippet>540</a>
})
+<a href=#541 id=541 data-nosnippet>541</a>
.ok()
+<a href=#542 id=542 data-nosnippet>542</a> })
+<a href=#543 id=543 data-nosnippet>543</a> }),
+<a href=#544 id=544 data-nosnippet>544</a> ))))
+<a href=#545 id=545 data-nosnippet>545</a> } <span
class="kw">else </span>{
+<a href=#546 id=546 data-nosnippet>546</a> <span
class="prelude-val">Err</span>(Error::new(
+<a href=#547 id=547 data-nosnippet>547</a> <span
class="kw">crate</span>::ErrorKind::DataInvalid,
+<a href=#548 id=548 data-nosnippet>548</a> <span
class="string">"The json value for a struct type must be an object."</span>,
+<a href=#549 id=549 data-nosnippet>549</a> ))
+<a href=#550 id=550 data-nosnippet>550</a> }
+<a href=#551 id=551 data-nosnippet>551</a> }
+<a href=#552 id=552 data-nosnippet>552</a> Type::List(list) => {
+<a href=#553 id=553 data-nosnippet>553</a> <span class="kw">if
let </span>JsonValue::Array(array) = value {
+<a href=#554 id=554 data-nosnippet>554</a> <span
class="prelude-val">Ok</span>(<span
class="prelude-val">Some</span>(Literal::List(
+<a href=#555 id=555 data-nosnippet>555</a> array
+<a href=#556 id=556 data-nosnippet>556</a>
.into_iter()
+<a href=#557 id=557 data-nosnippet>557</a>
.map(|value| {
+<a href=#558 id=558 data-nosnippet>558</a>
Literal::try_from_json(value, <span
class="kw-2">&</span>list.element_field.field_type)
+<a href=#559 id=559 data-nosnippet>559</a> })
+<a href=#560 id=560 data-nosnippet>560</a>
.collect::<<span class="prelude-ty">Result</span><Vec<<span
class="kw">_</span>>>>()<span class="question-mark">?</span>,
+<a href=#561 id=561 data-nosnippet>561</a> )))
+<a href=#562 id=562 data-nosnippet>562</a> } <span
class="kw">else </span>{
+<a href=#563 id=563 data-nosnippet>563</a> <span
class="prelude-val">Err</span>(Error::new(
+<a href=#564 id=564 data-nosnippet>564</a> <span
class="kw">crate</span>::ErrorKind::DataInvalid,
+<a href=#565 id=565 data-nosnippet>565</a> <span
class="string">"The json value for a list type must be an array."</span>,
+<a href=#566 id=566 data-nosnippet>566</a> ))
+<a href=#567 id=567 data-nosnippet>567</a> }
+<a href=#568 id=568 data-nosnippet>568</a> }
+<a href=#569 id=569 data-nosnippet>569</a> Type::Map(map) => {
+<a href=#570 id=570 data-nosnippet>570</a> <span class="kw">if
let </span>JsonValue::Object(<span class="kw-2">mut </span>object) = value {
+<a href=#571 id=571 data-nosnippet>571</a> <span
class="kw">if let </span>(<span
class="prelude-val">Some</span>(JsonValue::Array(keys)), <span
class="prelude-val">Some</span>(JsonValue::Array(values))) =
+<a href=#572 id=572 data-nosnippet>572</a>
(object.remove(<span class="string">"keys"</span>), object.remove(<span
class="string">"values"</span>))
+<a href=#573 id=573 data-nosnippet>573</a> {
+<a href=#574 id=574 data-nosnippet>574</a> <span
class="prelude-val">Ok</span>(<span
class="prelude-val">Some</span>(Literal::Map(Map::from_iter(
+<a href=#575 id=575 data-nosnippet>575</a>
keys.into_iter()
+<a href=#576 id=576 data-nosnippet>576</a>
.zip(values.into_iter())
+<a href=#577 id=577 data-nosnippet>577</a>
.map(|(key, value)| {
+<a href=#578 id=578 data-nosnippet>578</a>
<span class="prelude-val">Ok</span>((
+<a href=#579 id=579 data-nosnippet>579</a>
Literal::try_from_json(key, <span
class="kw-2">&</span>map.key_field.field_type)
+<a href=#580 id=580 data-nosnippet>580</a>
.and_then(|value| {
+<a href=#581 id=581 data-nosnippet>581</a>
value.ok_or(Error::new(
+<a href=#582 id=582 data-nosnippet>582</a>
ErrorKind::DataInvalid,
+<a href=#583 id=583 data-nosnippet>583</a>
<span class="string">"Key of map cannot be null"</span>,
+<a href=#584 id=584 data-nosnippet>584</a>
))
+<a href=#585 id=585 data-nosnippet>585</a>
})<span class="question-mark">?</span>,
+<a href=#586 id=586 data-nosnippet>586</a>
Literal::try_from_json(value, <span
class="kw-2">&</span>map.value_field.field_type)<span
class="question-mark">?</span>,
+<a href=#587 id=587 data-nosnippet>587</a>
))
+<a href=#588 id=588 data-nosnippet>588</a> })
+<a href=#589 id=589 data-nosnippet>589</a>
.collect::<<span class="prelude-ty">Result</span><Vec<<span
class="kw">_</span>>>>()<span class="question-mark">?</span>,
+<a href=#590 id=590 data-nosnippet>590</a> ))))
+<a href=#591 id=591 data-nosnippet>591</a> } <span
class="kw">else </span>{
+<a href=#592 id=592 data-nosnippet>592</a> <span
class="prelude-val">Err</span>(Error::new(
+<a href=#593 id=593 data-nosnippet>593</a> <span
class="kw">crate</span>::ErrorKind::DataInvalid,
+<a href=#594 id=594 data-nosnippet>594</a> <span
class="string">"The json value for a list type must be an array."</span>,
+<a href=#595 id=595 data-nosnippet>595</a> ))
+<a href=#596 id=596 data-nosnippet>596</a> }
+<a href=#597 id=597 data-nosnippet>597</a> } <span
class="kw">else </span>{
+<a href=#598 id=598 data-nosnippet>598</a> <span
class="prelude-val">Err</span>(Error::new(
+<a href=#599 id=599 data-nosnippet>599</a> <span
class="kw">crate</span>::ErrorKind::DataInvalid,
+<a href=#600 id=600 data-nosnippet>600</a> <span
class="string">"The json value for a list type must be an array."</span>,
+<a href=#601 id=601 data-nosnippet>601</a> ))
+<a href=#602 id=602 data-nosnippet>602</a> }
+<a href=#603 id=603 data-nosnippet>603</a> }
+<a href=#604 id=604 data-nosnippet>604</a> }
+<a href=#605 id=605 data-nosnippet>605</a> }
+<a href=#606 id=606 data-nosnippet>606</a>
+<a href=#607 id=607 data-nosnippet>607</a> <span class="doccomment">///
Converting iceberg value to json value.
+<a href=#608 id=608 data-nosnippet>608</a> ///
+<a href=#609 id=609 data-nosnippet>609</a> /// See [this
spec](https://iceberg.apache.org/spec/#json-single-value-serialization) for
reference.
+<a href=#610 id=610 data-nosnippet>610</a> </span><span class="kw">pub fn
</span>try_into_json(<span class="self">self</span>, r#type: <span
class="kw-2">&</span>Type) -> <span
class="prelude-ty">Result</span><JsonValue> {
+<a href=#611 id=611 data-nosnippet>611</a> <span class="kw">match
</span>(<span class="self">self</span>, r#type) {
+<a href=#612 id=612 data-nosnippet>612</a>
(Literal::Primitive(prim), Type::Primitive(prim_type)) => <span
class="kw">match </span>(prim_type, prim) {
+<a href=#613 id=613 data-nosnippet>613</a>
(PrimitiveType::Boolean, PrimitiveLiteral::Boolean(val)) => {
+<a href=#614 id=614 data-nosnippet>614</a> <span
class="prelude-val">Ok</span>(JsonValue::Bool(val))
<a href=#615 id=615 data-nosnippet>615</a> }
-<a href=#616 id=616 data-nosnippet>616</a>
(PrimitiveType::Float, PrimitiveLiteral::Float(val)) => {
-<a href=#617 id=617 data-nosnippet>617</a> <span
class="kw">match </span>Number::from_f64(val.<span class="number">0
</span><span class="kw">as </span>f64) {
-<a href=#618 id=618 data-nosnippet>618</a> <span
class="prelude-val">Some</span>(number) => <span
class="prelude-val">Ok</span>(JsonValue::Number(number)),
-<a href=#619 id=619 data-nosnippet>619</a> <span
class="prelude-val">None </span>=> <span
class="prelude-val">Ok</span>(JsonValue::Null),
-<a href=#620 id=620 data-nosnippet>620</a> }
+<a href=#616 id=616 data-nosnippet>616</a> (PrimitiveType::Int,
PrimitiveLiteral::Int(val)) => {
+<a href=#617 id=617 data-nosnippet>617</a> <span
class="prelude-val">Ok</span>(JsonValue::Number((val).into()))
+<a href=#618 id=618 data-nosnippet>618</a> }
+<a href=#619 id=619 data-nosnippet>619</a>
(PrimitiveType::Long, PrimitiveLiteral::Long(val)) => {
+<a href=#620 id=620 data-nosnippet>620</a> <span
class="prelude-val">Ok</span>(JsonValue::Number((val).into()))
<a href=#621 id=621 data-nosnippet>621</a> }
-<a href=#622 id=622 data-nosnippet>622</a>
(PrimitiveType::Double, PrimitiveLiteral::Double(val)) => {
-<a href=#623 id=623 data-nosnippet>623</a> <span
class="kw">match </span>Number::from_f64(val.<span class="number">0</span>) {
+<a href=#622 id=622 data-nosnippet>622</a>
(PrimitiveType::Float, PrimitiveLiteral::Float(val)) => {
+<a href=#623 id=623 data-nosnippet>623</a> <span
class="kw">match </span>Number::from_f64(val.<span class="number">0
</span><span class="kw">as </span>f64) {
<a href=#624 id=624 data-nosnippet>624</a> <span
class="prelude-val">Some</span>(number) => <span
class="prelude-val">Ok</span>(JsonValue::Number(number)),
<a href=#625 id=625 data-nosnippet>625</a> <span
class="prelude-val">None </span>=> <span
class="prelude-val">Ok</span>(JsonValue::Null),
<a href=#626 id=626 data-nosnippet>626</a> }
<a href=#627 id=627 data-nosnippet>627</a> }
-<a href=#628 id=628 data-nosnippet>628</a>
(PrimitiveType::Date, PrimitiveLiteral::Int(val)) => {
-<a href=#629 id=629 data-nosnippet>629</a> <span
class="prelude-val">Ok</span>(JsonValue::String(date::days_to_date(val).to_string()))
-<a href=#630 id=630 data-nosnippet>630</a> }
-<a href=#631 id=631 data-nosnippet>631</a>
(PrimitiveType::Time, PrimitiveLiteral::Long(val)) => <span
class="prelude-val">Ok</span>(JsonValue::String(
-<a href=#632 id=632 data-nosnippet>632</a>
time::microseconds_to_time(val).to_string(),
-<a href=#633 id=633 data-nosnippet>633</a> )),
-<a href=#634 id=634 data-nosnippet>634</a>
(PrimitiveType::Timestamp, PrimitiveLiteral::Long(val)) => <span
class="prelude-val">Ok</span>(JsonValue::String(
-<a href=#635 id=635 data-nosnippet>635</a>
timestamp::microseconds_to_datetime(val)
-<a href=#636 id=636 data-nosnippet>636</a>
.format(<span class="string">"%Y-%m-%dT%H:%M:%S%.f"</span>)
-<a href=#637 id=637 data-nosnippet>637</a> .to_string(),
-<a href=#638 id=638 data-nosnippet>638</a> )),
-<a href=#639 id=639 data-nosnippet>639</a>
(PrimitiveType::Timestamptz, PrimitiveLiteral::Long(val)) => <span
class="prelude-val">Ok</span>(JsonValue::String(
-<a href=#640 id=640 data-nosnippet>640</a>
timestamptz::microseconds_to_datetimetz(val)
-<a href=#641 id=641 data-nosnippet>641</a>
.format(<span class="string">"%Y-%m-%dT%H:%M:%S%.f+00:00"</span>)
-<a href=#642 id=642 data-nosnippet>642</a> .to_string(),
-<a href=#643 id=643 data-nosnippet>643</a> )),
-<a href=#644 id=644 data-nosnippet>644</a>
(PrimitiveType::TimestampNs, PrimitiveLiteral::Long(val)) => <span
class="prelude-val">Ok</span>(JsonValue::String(
-<a href=#645 id=645 data-nosnippet>645</a>
timestamp::nanoseconds_to_datetime(val)
-<a href=#646 id=646 data-nosnippet>646</a>
.format(<span class="string">"%Y-%m-%dT%H:%M:%S%.f"</span>)
-<a href=#647 id=647 data-nosnippet>647</a> .to_string(),
-<a href=#648 id=648 data-nosnippet>648</a> )),
-<a href=#649 id=649 data-nosnippet>649</a>
(PrimitiveType::TimestamptzNs, PrimitiveLiteral::Long(val)) => {
-<a href=#650 id=650 data-nosnippet>650</a> <span
class="prelude-val">Ok</span>(JsonValue::String(
-<a href=#651 id=651 data-nosnippet>651</a>
timestamptz::nanoseconds_to_datetimetz(val)
-<a href=#652 id=652 data-nosnippet>652</a>
.format(<span class="string">"%Y-%m-%dT%H:%M:%S%.f+00:00"</span>)
-<a href=#653 id=653 data-nosnippet>653</a>
.to_string(),
-<a href=#654 id=654 data-nosnippet>654</a> ))
-<a href=#655 id=655 data-nosnippet>655</a> }
-<a href=#656 id=656 data-nosnippet>656</a>
(PrimitiveType::String, PrimitiveLiteral::String(val)) => {
-<a href=#657 id=657 data-nosnippet>657</a> <span
class="prelude-val">Ok</span>(JsonValue::String(val.clone()))
-<a href=#658 id=658 data-nosnippet>658</a> }
-<a href=#659 id=659 data-nosnippet>659</a> (<span
class="kw">_</span>, PrimitiveLiteral::UInt128(val)) => {
-<a href=#660 id=660 data-nosnippet>660</a> <span
class="prelude-val">Ok</span>(JsonValue::String(Uuid::from_u128(val).to_string()))
+<a href=#628 id=628 data-nosnippet>628</a>
(PrimitiveType::Double, PrimitiveLiteral::Double(val)) => {
+<a href=#629 id=629 data-nosnippet>629</a> <span
class="kw">match </span>Number::from_f64(val.<span class="number">0</span>) {
+<a href=#630 id=630 data-nosnippet>630</a> <span
class="prelude-val">Some</span>(number) => <span
class="prelude-val">Ok</span>(JsonValue::Number(number)),
+<a href=#631 id=631 data-nosnippet>631</a> <span
class="prelude-val">None </span>=> <span
class="prelude-val">Ok</span>(JsonValue::Null),
+<a href=#632 id=632 data-nosnippet>632</a> }
+<a href=#633 id=633 data-nosnippet>633</a> }
+<a href=#634 id=634 data-nosnippet>634</a>
(PrimitiveType::Date, PrimitiveLiteral::Int(val)) => {
+<a href=#635 id=635 data-nosnippet>635</a> <span
class="prelude-val">Ok</span>(JsonValue::String(date::days_to_date(val).to_string()))
+<a href=#636 id=636 data-nosnippet>636</a> }
+<a href=#637 id=637 data-nosnippet>637</a>
(PrimitiveType::Time, PrimitiveLiteral::Long(val)) => <span
class="prelude-val">Ok</span>(JsonValue::String(
+<a href=#638 id=638 data-nosnippet>638</a>
time::microseconds_to_time(val).to_string(),
+<a href=#639 id=639 data-nosnippet>639</a> )),
+<a href=#640 id=640 data-nosnippet>640</a>
(PrimitiveType::Timestamp, PrimitiveLiteral::Long(val)) => <span
class="prelude-val">Ok</span>(JsonValue::String(
+<a href=#641 id=641 data-nosnippet>641</a>
timestamp::microseconds_to_datetime(val)
+<a href=#642 id=642 data-nosnippet>642</a>
.format(<span class="string">"%Y-%m-%dT%H:%M:%S%.f"</span>)
+<a href=#643 id=643 data-nosnippet>643</a> .to_string(),
+<a href=#644 id=644 data-nosnippet>644</a> )),
+<a href=#645 id=645 data-nosnippet>645</a>
(PrimitiveType::Timestamptz, PrimitiveLiteral::Long(val)) => <span
class="prelude-val">Ok</span>(JsonValue::String(
+<a href=#646 id=646 data-nosnippet>646</a>
timestamptz::microseconds_to_datetimetz(val)
+<a href=#647 id=647 data-nosnippet>647</a>
.format(<span class="string">"%Y-%m-%dT%H:%M:%S%.f+00:00"</span>)
+<a href=#648 id=648 data-nosnippet>648</a> .to_string(),
+<a href=#649 id=649 data-nosnippet>649</a> )),
+<a href=#650 id=650 data-nosnippet>650</a>
(PrimitiveType::TimestampNs, PrimitiveLiteral::Long(val)) => <span
class="prelude-val">Ok</span>(JsonValue::String(
+<a href=#651 id=651 data-nosnippet>651</a>
timestamp::nanoseconds_to_datetime(val)
+<a href=#652 id=652 data-nosnippet>652</a>
.format(<span class="string">"%Y-%m-%dT%H:%M:%S%.f"</span>)
+<a href=#653 id=653 data-nosnippet>653</a> .to_string(),
+<a href=#654 id=654 data-nosnippet>654</a> )),
+<a href=#655 id=655 data-nosnippet>655</a>
(PrimitiveType::TimestamptzNs, PrimitiveLiteral::Long(val)) => {
+<a href=#656 id=656 data-nosnippet>656</a> <span
class="prelude-val">Ok</span>(JsonValue::String(
+<a href=#657 id=657 data-nosnippet>657</a>
timestamptz::nanoseconds_to_datetimetz(val)
+<a href=#658 id=658 data-nosnippet>658</a>
.format(<span class="string">"%Y-%m-%dT%H:%M:%S%.f+00:00"</span>)
+<a href=#659 id=659 data-nosnippet>659</a>
.to_string(),
+<a href=#660 id=660 data-nosnippet>660</a> ))
<a href=#661 id=661 data-nosnippet>661</a> }
-<a href=#662 id=662 data-nosnippet>662</a> (<span
class="kw">_</span>, PrimitiveLiteral::Binary(val)) => <span
class="prelude-val">Ok</span>(JsonValue::String(val.iter().fold(
-<a href=#663 id=663 data-nosnippet>663</a> String::new(),
-<a href=#664 id=664 data-nosnippet>664</a> |<span
class="kw-2">mut </span>acc, x| {
-<a href=#665 id=665 data-nosnippet>665</a>
acc.push_str(<span class="kw-2">&</span><span
class="macro">format!</span>(<span class="string">"{x:x}"</span>));
-<a href=#666 id=666 data-nosnippet>666</a> acc
-<a href=#667 id=667 data-nosnippet>667</a> },
-<a href=#668 id=668 data-nosnippet>668</a> ))),
-<a href=#669 id=669 data-nosnippet>669</a> (<span
class="kw">_</span>, PrimitiveLiteral::Int128(val)) => <span
class="kw">match </span>r#type {
-<a href=#670 id=670 data-nosnippet>670</a>
Type::Primitive(PrimitiveType::Decimal {
-<a href=#671 id=671 data-nosnippet>671</a> precision:
_precision,
-<a href=#672 id=672 data-nosnippet>672</a> scale,
-<a href=#673 id=673 data-nosnippet>673</a> }) => {
-<a href=#674 id=674 data-nosnippet>674</a> <span
class="kw">let </span>decimal = try_decimal_from_i128_with_scale(val, <span
class="kw-2">*</span>scale)<span class="question-mark">?</span>;
-<a href=#675 id=675 data-nosnippet>675</a> <span
class="prelude-val">Ok</span>(JsonValue::String(decimal.to_string()))
-<a href=#676 id=676 data-nosnippet>676</a> }
-<a href=#677 id=677 data-nosnippet>677</a> <span
class="kw">_ </span>=> <span class="prelude-val">Err</span>(Error::new(
-<a href=#678 id=678 data-nosnippet>678</a>
ErrorKind::DataInvalid,
-<a href=#679 id=679 data-nosnippet>679</a> <span
class="string">"The iceberg type for decimal literal must be decimal."</span>,
-<a href=#680 id=680 data-nosnippet>680</a> ))<span
class="question-mark">?</span>,
-<a href=#681 id=681 data-nosnippet>681</a> },
-<a href=#682 id=682 data-nosnippet>682</a> <span class="kw">_
</span>=> <span class="prelude-val">Err</span>(Error::new(
-<a href=#683 id=683 data-nosnippet>683</a>
ErrorKind::DataInvalid,
-<a href=#684 id=684 data-nosnippet>684</a> <span
class="string">"The iceberg value doesn't fit to the iceberg type."</span>,
-<a href=#685 id=685 data-nosnippet>685</a> )),
-<a href=#686 id=686 data-nosnippet>686</a> },
-<a href=#687 id=687 data-nosnippet>687</a> (Literal::Struct(s),
Type::Struct(struct_type)) => {
-<a href=#688 id=688 data-nosnippet>688</a> <span class="kw">let
</span><span class="kw-2">mut </span>id_and_value =
Vec::with_capacity(struct_type.fields().len());
-<a href=#689 id=689 data-nosnippet>689</a> <span class="kw">for
</span>(value, field) <span class="kw">in
</span>s.into_iter().zip(struct_type.fields()) {
-<a href=#690 id=690 data-nosnippet>690</a> <span
class="kw">let </span>json = <span class="kw">match </span>value {
-<a href=#691 id=691 data-nosnippet>691</a> <span
class="prelude-val">Some</span>(val) => val.try_into_json(<span
class="kw-2">&</span>field.field_type)<span class="question-mark">?</span>,
-<a href=#692 id=692 data-nosnippet>692</a> <span
class="prelude-val">None </span>=> JsonValue::Null,
-<a href=#693 id=693 data-nosnippet>693</a> };
-<a href=#694 id=694 data-nosnippet>694</a>
id_and_value.push((field.id.to_string(), json));
-<a href=#695 id=695 data-nosnippet>695</a> }
-<a href=#696 id=696 data-nosnippet>696</a> <span
class="prelude-val">Ok</span>(JsonValue::Object(JsonMap::from_iter(id_and_value)))
-<a href=#697 id=697 data-nosnippet>697</a> }
-<a href=#698 id=698 data-nosnippet>698</a> (Literal::List(list),
Type::List(list_type)) => <span
class="prelude-val">Ok</span>(JsonValue::Array(
-<a href=#699 id=699 data-nosnippet>699</a> list.into_iter()
-<a href=#700 id=700 data-nosnippet>700</a> .map(|opt| <span
class="kw">match </span>opt {
-<a href=#701 id=701 data-nosnippet>701</a> <span
class="prelude-val">Some</span>(literal) => literal.try_into_json(<span
class="kw-2">&</span>list_type.element_field.field_type),
-<a href=#702 id=702 data-nosnippet>702</a> <span
class="prelude-val">None </span>=> <span
class="prelude-val">Ok</span>(JsonValue::Null),
-<a href=#703 id=703 data-nosnippet>703</a> })
-<a href=#704 id=704 data-nosnippet>704</a>
.collect::<<span
class="prelude-ty">Result</span><Vec<JsonValue>>>()<span
class="question-mark">?</span>,
-<a href=#705 id=705 data-nosnippet>705</a> )),
-<a href=#706 id=706 data-nosnippet>706</a> (Literal::Map(map),
Type::Map(map_type)) => {
-<a href=#707 id=707 data-nosnippet>707</a> <span class="kw">let
</span><span class="kw-2">mut </span>object = JsonMap::with_capacity(<span
class="number">2</span>);
-<a href=#708 id=708 data-nosnippet>708</a> <span class="kw">let
</span><span class="kw-2">mut </span>json_keys = Vec::with_capacity(map.len());
-<a href=#709 id=709 data-nosnippet>709</a> <span class="kw">let
</span><span class="kw-2">mut </span>json_values =
Vec::with_capacity(map.len());
-<a href=#710 id=710 data-nosnippet>710</a> <span class="kw">for
</span>(key, value) <span class="kw">in </span>map.into_iter() {
-<a href=#711 id=711 data-nosnippet>711</a>
json_keys.push(key.try_into_json(<span
class="kw-2">&</span>map_type.key_field.field_type)<span
class="question-mark">?</span>);
-<a href=#712 id=712 data-nosnippet>712</a>
json_values.push(<span class="kw">match </span>value {
-<a href=#713 id=713 data-nosnippet>713</a> <span
class="prelude-val">Some</span>(literal) => literal.try_into_json(<span
class="kw-2">&</span>map_type.value_field.field_type)<span
class="question-mark">?</span>,
-<a href=#714 id=714 data-nosnippet>714</a> <span
class="prelude-val">None </span>=> JsonValue::Null,
-<a href=#715 id=715 data-nosnippet>715</a> });
-<a href=#716 id=716 data-nosnippet>716</a> }
-<a href=#717 id=717 data-nosnippet>717</a> object.insert(<span
class="string">"keys"</span>.to_string(), JsonValue::Array(json_keys));
-<a href=#718 id=718 data-nosnippet>718</a> object.insert(<span
class="string">"values"</span>.to_string(), JsonValue::Array(json_values));
-<a href=#719 id=719 data-nosnippet>719</a> <span
class="prelude-val">Ok</span>(JsonValue::Object(object))
-<a href=#720 id=720 data-nosnippet>720</a> }
-<a href=#721 id=721 data-nosnippet>721</a> (value, r#type) =>
<span class="prelude-val">Err</span>(Error::new(
-<a href=#722 id=722 data-nosnippet>722</a>
ErrorKind::DataInvalid,
-<a href=#723 id=723 data-nosnippet>723</a> <span
class="macro">format!</span>(<span class="string">"The iceberg value {value:?}
doesn't fit to the iceberg type {type}."</span>),
-<a href=#724 id=724 data-nosnippet>724</a> )),
-<a href=#725 id=725 data-nosnippet>725</a> }
-<a href=#726 id=726 data-nosnippet>726</a> }
-<a href=#727 id=727 data-nosnippet>727</a>
-<a href=#728 id=728 data-nosnippet>728</a> <span class="doccomment">///
Convert Value to the any type
-<a href=#729 id=729 data-nosnippet>729</a> </span><span class="kw">pub fn
</span>into_any(<span class="self">self</span>) -> Box<<span
class="kw">dyn </span>Any> {
-<a href=#730 id=730 data-nosnippet>730</a> <span class="kw">match
</span><span class="self">self </span>{
-<a href=#731 id=731 data-nosnippet>731</a> Literal::Primitive(prim)
=> <span class="kw">match </span>prim {
-<a href=#732 id=732 data-nosnippet>732</a>
PrimitiveLiteral::Boolean(any) => Box::new(any),
-<a href=#733 id=733 data-nosnippet>733</a>
PrimitiveLiteral::Int(any) => Box::new(any),
-<a href=#734 id=734 data-nosnippet>734</a>
PrimitiveLiteral::Long(any) => Box::new(any),
-<a href=#735 id=735 data-nosnippet>735</a>
PrimitiveLiteral::Float(any) => Box::new(any),
-<a href=#736 id=736 data-nosnippet>736</a>
PrimitiveLiteral::Double(any) => Box::new(any),
-<a href=#737 id=737 data-nosnippet>737</a>
PrimitiveLiteral::Binary(any) => Box::new(any),
-<a href=#738 id=738 data-nosnippet>738</a>
PrimitiveLiteral::String(any) => Box::new(any),
-<a href=#739 id=739 data-nosnippet>739</a>
PrimitiveLiteral::UInt128(any) => Box::new(any),
-<a href=#740 id=740 data-nosnippet>740</a>
PrimitiveLiteral::Int128(any) => Box::new(any),
-<a href=#741 id=741 data-nosnippet>741</a>
PrimitiveLiteral::AboveMax | PrimitiveLiteral::BelowMin => <span
class="macro">unimplemented!</span>(),
-<a href=#742 id=742 data-nosnippet>742</a> },
-<a href=#743 id=743 data-nosnippet>743</a> <span class="kw">_
</span>=> <span class="macro">unimplemented!</span>(),
-<a href=#744 id=744 data-nosnippet>744</a> }
-<a href=#745 id=745 data-nosnippet>745</a> }
-<a href=#746 id=746 data-nosnippet>746</a>}
+<a href=#662 id=662 data-nosnippet>662</a>
(PrimitiveType::String, PrimitiveLiteral::String(val)) => {
+<a href=#663 id=663 data-nosnippet>663</a> <span
class="prelude-val">Ok</span>(JsonValue::String(val.clone()))
+<a href=#664 id=664 data-nosnippet>664</a> }
+<a href=#665 id=665 data-nosnippet>665</a> (<span
class="kw">_</span>, PrimitiveLiteral::UInt128(val)) => {
+<a href=#666 id=666 data-nosnippet>666</a> <span
class="prelude-val">Ok</span>(JsonValue::String(Uuid::from_u128(val).to_string()))
+<a href=#667 id=667 data-nosnippet>667</a> }
+<a href=#668 id=668 data-nosnippet>668</a>
(PrimitiveType::Fixed(size), PrimitiveLiteral::Binary(val)) => {
+<a href=#669 id=669 data-nosnippet>669</a>
validate_fixed_size(val.len(), <span class="kw-2">*</span>size)<span
class="question-mark">?</span>;
+<a href=#670 id=670 data-nosnippet>670</a> <span
class="prelude-val">Ok</span>(JsonValue::String(encode_hex_bytes(<span
class="kw-2">&</span>val)))
+<a href=#671 id=671 data-nosnippet>671</a> }
+<a href=#672 id=672 data-nosnippet>672</a>
(PrimitiveType::Binary, PrimitiveLiteral::Binary(val)) => {
+<a href=#673 id=673 data-nosnippet>673</a> <span
class="prelude-val">Ok</span>(JsonValue::String(encode_hex_bytes(<span
class="kw-2">&</span>val)))
+<a href=#674 id=674 data-nosnippet>674</a> }
+<a href=#675 id=675 data-nosnippet>675</a> (<span
class="kw">_</span>, PrimitiveLiteral::Int128(val)) => <span
class="kw">match </span>r#type {
+<a href=#676 id=676 data-nosnippet>676</a>
Type::Primitive(PrimitiveType::Decimal {
+<a href=#677 id=677 data-nosnippet>677</a> precision:
_precision,
+<a href=#678 id=678 data-nosnippet>678</a> scale,
+<a href=#679 id=679 data-nosnippet>679</a> }) => {
+<a href=#680 id=680 data-nosnippet>680</a> <span
class="kw">let </span>decimal = try_decimal_from_i128_with_scale(val, <span
class="kw-2">*</span>scale)<span class="question-mark">?</span>;
+<a href=#681 id=681 data-nosnippet>681</a> <span
class="prelude-val">Ok</span>(JsonValue::String(decimal.to_string()))
+<a href=#682 id=682 data-nosnippet>682</a> }
+<a href=#683 id=683 data-nosnippet>683</a> <span
class="kw">_ </span>=> <span class="prelude-val">Err</span>(Error::new(
+<a href=#684 id=684 data-nosnippet>684</a>
ErrorKind::DataInvalid,
+<a href=#685 id=685 data-nosnippet>685</a> <span
class="string">"The iceberg type for decimal literal must be decimal."</span>,
+<a href=#686 id=686 data-nosnippet>686</a> ))<span
class="question-mark">?</span>,
+<a href=#687 id=687 data-nosnippet>687</a> },
+<a href=#688 id=688 data-nosnippet>688</a> <span class="kw">_
</span>=> <span class="prelude-val">Err</span>(Error::new(
+<a href=#689 id=689 data-nosnippet>689</a>
ErrorKind::DataInvalid,
+<a href=#690 id=690 data-nosnippet>690</a> <span
class="string">"The iceberg value doesn't fit to the iceberg type."</span>,
+<a href=#691 id=691 data-nosnippet>691</a> )),
+<a href=#692 id=692 data-nosnippet>692</a> },
+<a href=#693 id=693 data-nosnippet>693</a> (Literal::Struct(s),
Type::Struct(struct_type)) => {
+<a href=#694 id=694 data-nosnippet>694</a> <span class="kw">let
</span><span class="kw-2">mut </span>id_and_value =
Vec::with_capacity(struct_type.fields().len());
+<a href=#695 id=695 data-nosnippet>695</a> <span class="kw">for
</span>(value, field) <span class="kw">in
</span>s.into_iter().zip(struct_type.fields()) {
+<a href=#696 id=696 data-nosnippet>696</a> <span
class="kw">let </span>json = <span class="kw">match </span>value {
+<a href=#697 id=697 data-nosnippet>697</a> <span
class="prelude-val">Some</span>(val) => val.try_into_json(<span
class="kw-2">&</span>field.field_type)<span class="question-mark">?</span>,
+<a href=#698 id=698 data-nosnippet>698</a> <span
class="prelude-val">None </span>=> JsonValue::Null,
+<a href=#699 id=699 data-nosnippet>699</a> };
+<a href=#700 id=700 data-nosnippet>700</a>
id_and_value.push((field.id.to_string(), json));
+<a href=#701 id=701 data-nosnippet>701</a> }
+<a href=#702 id=702 data-nosnippet>702</a> <span
class="prelude-val">Ok</span>(JsonValue::Object(JsonMap::from_iter(id_and_value)))
+<a href=#703 id=703 data-nosnippet>703</a> }
+<a href=#704 id=704 data-nosnippet>704</a> (Literal::List(list),
Type::List(list_type)) => <span
class="prelude-val">Ok</span>(JsonValue::Array(
+<a href=#705 id=705 data-nosnippet>705</a> list.into_iter()
+<a href=#706 id=706 data-nosnippet>706</a> .map(|opt| <span
class="kw">match </span>opt {
+<a href=#707 id=707 data-nosnippet>707</a> <span
class="prelude-val">Some</span>(literal) => literal.try_into_json(<span
class="kw-2">&</span>list_type.element_field.field_type),
+<a href=#708 id=708 data-nosnippet>708</a> <span
class="prelude-val">None </span>=> <span
class="prelude-val">Ok</span>(JsonValue::Null),
+<a href=#709 id=709 data-nosnippet>709</a> })
+<a href=#710 id=710 data-nosnippet>710</a>
.collect::<<span
class="prelude-ty">Result</span><Vec<JsonValue>>>()<span
class="question-mark">?</span>,
+<a href=#711 id=711 data-nosnippet>711</a> )),
+<a href=#712 id=712 data-nosnippet>712</a> (Literal::Map(map),
Type::Map(map_type)) => {
+<a href=#713 id=713 data-nosnippet>713</a> <span class="kw">let
</span><span class="kw-2">mut </span>object = JsonMap::with_capacity(<span
class="number">2</span>);
+<a href=#714 id=714 data-nosnippet>714</a> <span class="kw">let
</span><span class="kw-2">mut </span>json_keys = Vec::with_capacity(map.len());
+<a href=#715 id=715 data-nosnippet>715</a> <span class="kw">let
</span><span class="kw-2">mut </span>json_values =
Vec::with_capacity(map.len());
+<a href=#716 id=716 data-nosnippet>716</a> <span class="kw">for
</span>(key, value) <span class="kw">in </span>map.into_iter() {
+<a href=#717 id=717 data-nosnippet>717</a>
json_keys.push(key.try_into_json(<span
class="kw-2">&</span>map_type.key_field.field_type)<span
class="question-mark">?</span>);
+<a href=#718 id=718 data-nosnippet>718</a>
json_values.push(<span class="kw">match </span>value {
+<a href=#719 id=719 data-nosnippet>719</a> <span
class="prelude-val">Some</span>(literal) => literal.try_into_json(<span
class="kw-2">&</span>map_type.value_field.field_type)<span
class="question-mark">?</span>,
+<a href=#720 id=720 data-nosnippet>720</a> <span
class="prelude-val">None </span>=> JsonValue::Null,
+<a href=#721 id=721 data-nosnippet>721</a> });
+<a href=#722 id=722 data-nosnippet>722</a> }
+<a href=#723 id=723 data-nosnippet>723</a> object.insert(<span
class="string">"keys"</span>.to_string(), JsonValue::Array(json_keys));
+<a href=#724 id=724 data-nosnippet>724</a> object.insert(<span
class="string">"values"</span>.to_string(), JsonValue::Array(json_values));
+<a href=#725 id=725 data-nosnippet>725</a> <span
class="prelude-val">Ok</span>(JsonValue::Object(object))
+<a href=#726 id=726 data-nosnippet>726</a> }
+<a href=#727 id=727 data-nosnippet>727</a> (value, r#type) =>
<span class="prelude-val">Err</span>(Error::new(
+<a href=#728 id=728 data-nosnippet>728</a>
ErrorKind::DataInvalid,
+<a href=#729 id=729 data-nosnippet>729</a> <span
class="macro">format!</span>(<span class="string">"The iceberg value {value:?}
doesn't fit to the iceberg type {type}."</span>),
+<a href=#730 id=730 data-nosnippet>730</a> )),
+<a href=#731 id=731 data-nosnippet>731</a> }
+<a href=#732 id=732 data-nosnippet>732</a> }
+<a href=#733 id=733 data-nosnippet>733</a>
+<a href=#734 id=734 data-nosnippet>734</a> <span class="doccomment">///
Convert Value to the any type
+<a href=#735 id=735 data-nosnippet>735</a> </span><span class="kw">pub fn
</span>into_any(<span class="self">self</span>) -> Box<<span
class="kw">dyn </span>Any> {
+<a href=#736 id=736 data-nosnippet>736</a> <span class="kw">match
</span><span class="self">self </span>{
+<a href=#737 id=737 data-nosnippet>737</a> Literal::Primitive(prim)
=> <span class="kw">match </span>prim {
+<a href=#738 id=738 data-nosnippet>738</a>
PrimitiveLiteral::Boolean(any) => Box::new(any),
+<a href=#739 id=739 data-nosnippet>739</a>
PrimitiveLiteral::Int(any) => Box::new(any),
+<a href=#740 id=740 data-nosnippet>740</a>
PrimitiveLiteral::Long(any) => Box::new(any),
+<a href=#741 id=741 data-nosnippet>741</a>
PrimitiveLiteral::Float(any) => Box::new(any),
+<a href=#742 id=742 data-nosnippet>742</a>
PrimitiveLiteral::Double(any) => Box::new(any),
+<a href=#743 id=743 data-nosnippet>743</a>
PrimitiveLiteral::Binary(any) => Box::new(any),
+<a href=#744 id=744 data-nosnippet>744</a>
PrimitiveLiteral::String(any) => Box::new(any),
+<a href=#745 id=745 data-nosnippet>745</a>
PrimitiveLiteral::UInt128(any) => Box::new(any),
+<a href=#746 id=746 data-nosnippet>746</a>
PrimitiveLiteral::Int128(any) => Box::new(any),
+<a href=#747 id=747 data-nosnippet>747</a>
PrimitiveLiteral::AboveMax | PrimitiveLiteral::BelowMin => <span
class="macro">unimplemented!</span>(),
+<a href=#748 id=748 data-nosnippet>748</a> },
+<a href=#749 id=749 data-nosnippet>749</a> <span class="kw">_
</span>=> <span class="macro">unimplemented!</span>(),
+<a href=#750 id=750 data-nosnippet>750</a> }
+<a href=#751 id=751 data-nosnippet>751</a> }
+<a href=#752 id=752 data-nosnippet>752</a>}
+<a href=#753 id=753 data-nosnippet>753</a>
+<a href=#754 id=754 data-nosnippet>754</a><span class="kw">fn
</span>decode_hex_bytes(value: <span class="kw-2">&</span>str) -> <span
class="prelude-ty">Result</span><Vec<u8>> {
+<a href=#755 id=755 data-nosnippet>755</a> <span class="macro">if
!</span>value.len().is_multiple_of(<span class="number">2</span>) {
+<a href=#756 id=756 data-nosnippet>756</a> <span class="kw">return
</span><span class="prelude-val">Err</span>(Error::new(
+<a href=#757 id=757 data-nosnippet>757</a> ErrorKind::DataInvalid,
+<a href=#758 id=758 data-nosnippet>758</a> <span
class="macro">format!</span>(<span class="string">"Hex string must have an even
number of characters: {value:?}"</span>),
+<a href=#759 id=759 data-nosnippet>759</a> ));
+<a href=#760 id=760 data-nosnippet>760</a> }
+<a href=#761 id=761 data-nosnippet>761</a>
+<a href=#762 id=762 data-nosnippet>762</a> value
+<a href=#763 id=763 data-nosnippet>763</a> .as_bytes()
+<a href=#764 id=764 data-nosnippet>764</a> .chunks_exact(<span
class="number">2</span>)
+<a href=#765 id=765 data-nosnippet>765</a> .map(|chunk| {
+<a href=#766 id=766 data-nosnippet>766</a> <span class="kw">let
</span>high = decode_hex_digit(chunk[<span class="number">0</span>],
value)<span class="question-mark">?</span>;
+<a href=#767 id=767 data-nosnippet>767</a> <span class="kw">let
</span>low = decode_hex_digit(chunk[<span class="number">1</span>], value)<span
class="question-mark">?</span>;
+<a href=#768 id=768 data-nosnippet>768</a> <span
class="prelude-val">Ok</span>((high << <span class="number">4</span>) |
low)
+<a href=#769 id=769 data-nosnippet>769</a> })
+<a href=#770 id=770 data-nosnippet>770</a> .collect()
+<a href=#771 id=771 data-nosnippet>771</a>}
+<a href=#772 id=772 data-nosnippet>772</a>
+<a href=#773 id=773 data-nosnippet>773</a><span class="kw">fn
</span>decode_hex_digit(digit: u8, value: <span class="kw-2">&</span>str)
-> <span class="prelude-ty">Result</span><u8> {
+<a href=#774 id=774 data-nosnippet>774</a> <span class="kw">match
</span>digit {
+<a href=#775 id=775 data-nosnippet>775</a> <span
class="string">b'0'</span>..=<span class="string">b'9' </span>=> <span
class="prelude-val">Ok</span>(digit - <span class="string">b'0'</span>),
+<a href=#776 id=776 data-nosnippet>776</a> <span
class="string">b'a'</span>..=<span class="string">b'f' </span>=> <span
class="prelude-val">Ok</span>(digit - <span class="string">b'a' </span>+ <span
class="number">10</span>),
+<a href=#777 id=777 data-nosnippet>777</a> <span
class="string">b'A'</span>..=<span class="string">b'F' </span>=> <span
class="prelude-val">Ok</span>(digit - <span class="string">b'A' </span>+ <span
class="number">10</span>),
+<a href=#778 id=778 data-nosnippet>778</a> <span class="kw">_
</span>=> <span class="prelude-val">Err</span>(Error::new(
+<a href=#779 id=779 data-nosnippet>779</a> ErrorKind::DataInvalid,
+<a href=#780 id=780 data-nosnippet>780</a> <span
class="macro">format!</span>(<span class="string">"Hex string contains invalid
character: {value:?}"</span>),
+<a href=#781 id=781 data-nosnippet>781</a> )),
+<a href=#782 id=782 data-nosnippet>782</a> }
+<a href=#783 id=783 data-nosnippet>783</a>}
+<a href=#784 id=784 data-nosnippet>784</a>
+<a href=#785 id=785 data-nosnippet>785</a><span class="kw">fn
</span>encode_hex_bytes(bytes: <span class="kw-2">&</span>[u8]) ->
String {
+<a href=#786 id=786 data-nosnippet>786</a> <span class="kw">const
</span>HEX_DIGITS: <span class="kw-2">&</span>[u8; <span
class="number">16</span>] = <span class="string">b"0123456789abcdef"</span>;
+<a href=#787 id=787 data-nosnippet>787</a>
+<a href=#788 id=788 data-nosnippet>788</a> <span class="kw">let
</span><span class="kw-2">mut </span>output = String::with_capacity(bytes.len()
* <span class="number">2</span>);
+<a href=#789 id=789 data-nosnippet>789</a> <span class="kw">for </span>byte
<span class="kw">in </span>bytes {
+<a href=#790 id=790 data-nosnippet>790</a> output.push(HEX_DIGITS[(byte
>> <span class="number">4</span>) <span class="kw">as </span>usize] <span
class="kw">as </span>char);
+<a href=#791 id=791 data-nosnippet>791</a> output.push(HEX_DIGITS[(byte
& <span class="number">0x0f</span>) <span class="kw">as </span>usize] <span
class="kw">as </span>char);
+<a href=#792 id=792 data-nosnippet>792</a> }
+<a href=#793 id=793 data-nosnippet>793</a> output
+<a href=#794 id=794 data-nosnippet>794</a>}
+<a href=#795 id=795 data-nosnippet>795</a>
+<a href=#796 id=796 data-nosnippet>796</a><span class="kw">fn
</span>validate_fixed_size(actual: usize, expected: u64) -> <span
class="prelude-ty">Result</span><()> {
+<a href=#797 id=797 data-nosnippet>797</a> <span class="kw">if
</span>actual <span class="kw">as </span>u64 == expected {
+<a href=#798 id=798 data-nosnippet>798</a> <span
class="prelude-val">Ok</span>(())
+<a href=#799 id=799 data-nosnippet>799</a> } <span class="kw">else </span>{
+<a href=#800 id=800 data-nosnippet>800</a> <span
class="prelude-val">Err</span>(Error::new(
+<a href=#801 id=801 data-nosnippet>801</a> ErrorKind::DataInvalid,
+<a href=#802 id=802 data-nosnippet>802</a> <span
class="macro">format!</span>(<span class="string">"Fixed type must be exactly
{expected} bytes, got {actual}"</span>),
+<a href=#803 id=803 data-nosnippet>803</a> ))
+<a href=#804 id=804 data-nosnippet>804</a> }
+<a href=#805 id=805 data-nosnippet>805</a>}
</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/api/trait.impl/iceberg/catalog/trait.Catalog.js
b/api/trait.impl/iceberg/catalog/trait.Catalog.js
index 818669858..6a5715595 100644
--- a/api/trait.impl/iceberg/catalog/trait.Catalog.js
+++ b/api/trait.impl/iceberg/catalog/trait.Catalog.js
@@ -1,9 +1,9 @@
(function() {
- var implementors =
Object.fromEntries([["iceberg",[]],["iceberg_catalog_glue",[["impl <a
class=\"trait\" href=\"iceberg/catalog/trait.Catalog.html\" title=\"trait
iceberg::catalog::Catalog\">Catalog</a> for <a class=\"struct\"
href=\"iceberg_catalog_glue/struct.GlueCatalog.html\" title=\"struct
iceberg_catalog_glue::GlueCatalog\">GlueCatalog</a>"]]],["iceberg_catalog_hms",[["impl
<a class=\"trait\" href=\"iceberg/catalog/trait.Catalog.html\" title=\"trait
iceberg::catalog::Catalog\"> [...]
+ var implementors =
Object.fromEntries([["iceberg",[]],["iceberg_catalog_glue",[["impl <a
class=\"trait\" href=\"iceberg/catalog/trait.Catalog.html\" title=\"trait
iceberg::catalog::Catalog\">Catalog</a> for <a class=\"struct\"
href=\"iceberg_catalog_glue/struct.GlueCatalog.html\" title=\"struct
iceberg_catalog_glue::GlueCatalog\">GlueCatalog</a>"]]],["iceberg_catalog_hms",[["impl
Catalog for <a class=\"struct\"
href=\"iceberg_catalog_hms/struct.HmsCatalog.html\" title=\"struct iceber [...]
if (window.register_implementors) {
window.register_implementors(implementors);
} else {
window.pending_implementors = implementors;
}
})()
-//{"start":57,"fragment_lengths":[14,298,292,189,213,183]}
\ No newline at end of file
+//{"start":57,"fragment_lengths":[14,298,183,189,213,183]}
\ No newline at end of file
diff --git a/api/trait.impl/iceberg/catalog/trait.CatalogBuilder.js
b/api/trait.impl/iceberg/catalog/trait.CatalogBuilder.js
index 878cb1be5..a53aa68a0 100644
--- a/api/trait.impl/iceberg/catalog/trait.CatalogBuilder.js
+++ b/api/trait.impl/iceberg/catalog/trait.CatalogBuilder.js
@@ -1,9 +1,9 @@
(function() {
- var implementors =
Object.fromEntries([["iceberg",[]],["iceberg_catalog_glue",[["impl <a
class=\"trait\" href=\"iceberg/catalog/trait.CatalogBuilder.html\"
title=\"trait iceberg::catalog::CatalogBuilder\">CatalogBuilder</a> for <a
class=\"struct\" href=\"iceberg_catalog_glue/struct.GlueCatalogBuilder.html\"
title=\"struct
iceberg_catalog_glue::GlueCatalogBuilder\">GlueCatalogBuilder</a>"]]],["iceberg_catalog_hms",[["impl
<a class=\"trait\" href=\"iceberg/catalog/trait.CatalogBuilder. [...]
+ var implementors =
Object.fromEntries([["iceberg",[]],["iceberg_catalog_glue",[["impl <a
class=\"trait\" href=\"iceberg/catalog/trait.CatalogBuilder.html\"
title=\"trait iceberg::catalog::CatalogBuilder\">CatalogBuilder</a> for <a
class=\"struct\" href=\"iceberg_catalog_glue/struct.GlueCatalogBuilder.html\"
title=\"struct
iceberg_catalog_glue::GlueCatalogBuilder\">GlueCatalogBuilder</a>"]]],["iceberg_catalog_hms",[["impl
CatalogBuilder for <a class=\"struct\" href=\"iceberg_catalog_h [...]
if (window.register_implementors) {
window.register_implementors(implementors);
} else {
window.pending_implementors = implementors;
}
})()
-//{"start":57,"fragment_lengths":[14,340,334,217,241,211]}
\ No newline at end of file
+//{"start":57,"fragment_lengths":[14,340,211,217,241,211]}
\ No newline at end of file