This is an automated email from the ASF dual-hosted git repository.
github-bot pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/arrow-rs.git
The following commit(s) were added to refs/heads/asf-site by this push:
new 4718100731c deploy: 158e54da2cd8a2ac4e54744ad8861aded0d43281
4718100731c is described below
commit 4718100731c3c414b6c5910259046146938d5f8b
Author: alamb <[email protected]>
AuthorDate: Sat May 11 10:00:15 2024 +0000
deploy: 158e54da2cd8a2ac4e54744ad8861aded0d43281
---
arrow/all.html | 2 +-
arrow/util/data_gen/fn.create_random_array.html | 2 +-
.../util/data_gen/fn.create_random_list_array.html | 2 +-
.../util/data_gen/fn.create_random_map_array.html | 6 +
.../data_gen/fn.create_random_null_buffer.html | 2 +-
arrow/util/data_gen/fn.create_random_offsets.html | 2 +-
.../data_gen/fn.create_random_struct_array.html | 6 +
arrow/util/data_gen/index.html | 4 +-
arrow/util/data_gen/sidebar-items.js | 2 +-
search-index.js | 2 +-
search.desc/arrow/arrow-desc-0-.js | 2 +-
src/arrow/util/data_gen.rs.html | 556 +++++++++++++++++++--
12 files changed, 539 insertions(+), 49 deletions(-)
diff --git a/arrow/all.html b/arrow/all.html
index c311da1643d..f3652268006 100644
--- a/arrow/all.html
+++ b/arrow/all.html
@@ -1 +1 @@
-<!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="List of
all items in this crate"><title>List of all items in this
crate</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d
[...]
\ No newline at end of file
+<!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="List of
all items in this crate"><title>List of all items in this
crate</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d
[...]
\ No newline at end of file
diff --git a/arrow/util/data_gen/fn.create_random_array.html
b/arrow/util/data_gen/fn.create_random_array.html
index 104d893f825..e21bc5ff97e 100644
--- a/arrow/util/data_gen/fn.create_random_array.html
+++ b/arrow/util/data_gen/fn.create_random_array.html
@@ -1,4 +1,4 @@
-<!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="Create a
random ArrayRef from a DataType with a length, null density and true density
(for BooleanArray)."><title>create_random_array in arrow::util::data_gen -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46
[...]
+<!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="Create a
random ArrayRef from a DataType with a length, null density and true density
(for BooleanArray)."><title>create_random_array in arrow::util::data_gen -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46
[...]
field: &<a class="struct" href="../../datatypes/struct.Field.html"
title="struct arrow::datatypes::Field">Field</a>,
size: <a class="primitive"
href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,
null_density: <a class="primitive"
href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>,
diff --git a/arrow/util/data_gen/fn.create_random_list_array.html
b/arrow/util/data_gen/fn.create_random_list_array.html
index 1c70ca83a72..70357f8dd5c 100644
--- a/arrow/util/data_gen/fn.create_random_list_array.html
+++ b/arrow/util/data_gen/fn.create_random_list_array.html
@@ -1,4 +1,4 @@
-<!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="API
documentation for the Rust `create_random_list_array` fn in crate
`arrow`."><title>create_random_list_array in arrow::util::data_gen -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.wof
[...]
+<!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="API
documentation for the Rust `create_random_list_array` fn in crate
`arrow`."><title>create_random_list_array in arrow::util::data_gen -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.wof
[...]
field: &<a class="struct" href="../../datatypes/struct.Field.html"
title="struct arrow::datatypes::Field">Field</a>,
size: <a class="primitive"
href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,
null_density: <a class="primitive"
href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>,
diff --git a/arrow/util/data_gen/fn.create_random_map_array.html
b/arrow/util/data_gen/fn.create_random_map_array.html
new file mode 100644
index 00000000000..5dabfaeeaae
--- /dev/null
+++ b/arrow/util/data_gen/fn.create_random_map_array.html
@@ -0,0 +1,6 @@
+<!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="API
documentation for the Rust `create_random_map_array` fn in crate
`arrow`."><title>create_random_map_array in arrow::util::data_gen -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2
[...]
+ field: &<a class="struct" href="../../datatypes/struct.Field.html"
title="struct arrow::datatypes::Field">Field</a>,
+ size: <a class="primitive"
href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,
+ null_density: <a class="primitive"
href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>,
+ true_density: <a class="primitive"
href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>
+) -> <a class="type" href="../../error/type.Result.html" title="type
arrow::error::Result">Result</a><<a class="type"
href="../../array/type.ArrayRef.html" title="type
arrow::array::ArrayRef">ArrayRef</a>></code></pre></section></div></main></body></html>
\ No newline at end of file
diff --git a/arrow/util/data_gen/fn.create_random_null_buffer.html
b/arrow/util/data_gen/fn.create_random_null_buffer.html
index cd53411d43d..9eeed1b208c 100644
--- a/arrow/util/data_gen/fn.create_random_null_buffer.html
+++ b/arrow/util/data_gen/fn.create_random_null_buffer.html
@@ -1 +1 @@
-<!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="API
documentation for the Rust `create_random_null_buffer` fn in crate
`arrow`."><title>create_random_null_buffer in arrow::util::data_gen -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.w
[...]
\ No newline at end of file
+<!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="API
documentation for the Rust `create_random_null_buffer` fn in crate
`arrow`."><title>create_random_null_buffer in arrow::util::data_gen -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.w
[...]
\ No newline at end of file
diff --git a/arrow/util/data_gen/fn.create_random_offsets.html
b/arrow/util/data_gen/fn.create_random_offsets.html
index fd1b27b539d..a367af8f95c 100644
--- a/arrow/util/data_gen/fn.create_random_offsets.html
+++ b/arrow/util/data_gen/fn.create_random_offsets.html
@@ -1,4 +1,4 @@
-<!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="Generate
random offsets for list arrays"><title>create_random_offsets in
arrow::util::data_gen -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2
[...]
+<!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="Generate
random offsets for list arrays"><title>create_random_offsets in
arrow::util::data_gen -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2
[...]
size: <a class="primitive"
href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,
min: T,
max: T
diff --git a/arrow/util/data_gen/fn.create_random_struct_array.html
b/arrow/util/data_gen/fn.create_random_struct_array.html
new file mode 100644
index 00000000000..70bf6187c77
--- /dev/null
+++ b/arrow/util/data_gen/fn.create_random_struct_array.html
@@ -0,0 +1,6 @@
+<!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="API
documentation for the Rust `create_random_struct_array` fn in crate
`arrow`."><title>create_random_struct_array in arrow::util::data_gen -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf
[...]
+ field: &<a class="struct" href="../../datatypes/struct.Field.html"
title="struct arrow::datatypes::Field">Field</a>,
+ size: <a class="primitive"
href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,
+ null_density: <a class="primitive"
href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>,
+ true_density: <a class="primitive"
href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>
+) -> <a class="type" href="../../error/type.Result.html" title="type
arrow::error::Result">Result</a><<a class="type"
href="../../array/type.ArrayRef.html" title="type
arrow::array::ArrayRef">ArrayRef</a>></code></pre></section></div></main></body></html>
\ No newline at end of file
diff --git a/arrow/util/data_gen/index.html b/arrow/util/data_gen/index.html
index 9f803ac345c..5bf70dbd9e7 100644
--- a/arrow/util/data_gen/index.html
+++ b/arrow/util/data_gen/index.html
@@ -1,3 +1,3 @@
-<!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="Utilities
to generate random arrays and batches"><title>arrow::util::data_gen -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-
[...]
+<!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="Utilities
to generate random arrays and batches"><title>arrow::util::data_gen -
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-
[...]
</div></details><h2 id="functions" class="section-header">Functions<a
href="#functions" class="anchor">§</a></h2><ul class="item-table"><li><div
class="item-name"><a class="fn" href="fn.create_random_array.html" title="fn
arrow::util::data_gen::create_random_array">create_random_array</a></div><div
class="desc docblock-short">Create a random <a
href="../../array/type.ArrayRef.html" title="type
arrow::array::ArrayRef">ArrayRef</a> from a <a
href="../../datatypes/enum.DataType.html" title= [...]
-null density and true density (for <a
href="../../array/struct.BooleanArray.html" title="struct
arrow::array::BooleanArray">BooleanArray</a>).</div></li><li><div
class="item-name"><a class="fn" href="fn.create_random_batch.html" title="fn
arrow::util::data_gen::create_random_batch">create_random_batch</a></div><div
class="desc docblock-short">Create a random <a
href="../../record_batch/struct.RecordBatch.html" title="struct
arrow::record_batch::RecordBatch">RecordBatch</a> from a schema< [...]
\ No newline at end of file
+null density and true density (for <a
href="../../array/struct.BooleanArray.html" title="struct
arrow::array::BooleanArray">BooleanArray</a>).</div></li><li><div
class="item-name"><a class="fn" href="fn.create_random_batch.html" title="fn
arrow::util::data_gen::create_random_batch">create_random_batch</a></div><div
class="desc docblock-short">Create a random <a
href="../../record_batch/struct.RecordBatch.html" title="struct
arrow::record_batch::RecordBatch">RecordBatch</a> from a schema< [...]
\ No newline at end of file
diff --git a/arrow/util/data_gen/sidebar-items.js
b/arrow/util/data_gen/sidebar-items.js
index a37a12bcfb7..1826ffafb07 100644
--- a/arrow/util/data_gen/sidebar-items.js
+++ b/arrow/util/data_gen/sidebar-items.js
@@ -1 +1 @@
-window.SIDEBAR_ITEMS =
{"fn":["create_random_array","create_random_batch","create_random_list_array","create_random_null_buffer","create_random_offsets"]};
\ No newline at end of file
+window.SIDEBAR_ITEMS =
{"fn":["create_random_array","create_random_batch","create_random_list_array","create_random_map_array","create_random_null_buffer","create_random_offsets","create_random_struct_array"]};
\ No newline at end of file
diff --git a/search-index.js b/search-index.js
index 8574a36de22..cd548fdfe7b 100644
--- a/search-index.js
+++ b/search-index.js
@@ -1,5 +1,5 @@
var searchIndex = new Map(JSON.parse('[\
-["arrow",{"t":"CCCCECQQCCCEECCECCCSKPKKPKKFFIFIKKKKPIIIIIIPFFFIFGGTTTFIIIIIIKIIIIIIPFIIIIIIIIIIIIIFFIFFIPIIIIIIIIIIIIFFFFFFFIFIIITIIIIIIIIIIIIIIIIIIIIIIIIIIIIRIIIIIIIIIIPIITTFIFFFRFFFTKTFFFIFFFFKKFFIIIIIIPFFIIIIIIIIIIIIIIIIIIIIIIIIFFIIIIIIIIIIIIIIIIFFPTOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNMNMNOOCOOOOOOOOOOMMNNNNNNNNNNNNNNNNMNMNNNNNHMNNMNNMNHNHMNNMNNHMNHHHHNHMNNHMNHNHMNHNHNNNNHMNHOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNOOOOOONNHNCNNNNOCNNNOONNNNNNNN
[...]
+["arrow",{"t":"CCCCECQQCCCEECCECCCSKPKKPKKFFIFIKKKKPIIIIIIPFFFIFGGTTTFIIIIIIKIIIIIIPFIIIIIIIIIIIIIFFIFFIPIIIIIIIIIIIIFFFFFFFIFIIITIIIIIIIIIIIIIIIIIIIIIIIIIIIIRIIIIIIIIIIPIITTFIFFFRFFFTKTFFFIFFFFKKFFIIIIIIPFFIIIIIIIIIIIIIIIIIIIIIIIIFFIIIIIIIIIIIIIIIIFFPTOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNMNMNOOCOOOOOOOOOOMMNNNNNNNNNNNNNNNNMNMNNNNNHMNNMNNMNHNHMNNMNNHMNHHHHNHMNNHMNHNHMNHNHNNNNHMNHOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNOOOOOONNHNCNNNNOCNNNOONNNNNNNN
[...]
["arrow_arith",{"t":"CCCCCCFFKSSFMNNNMNNNHHHHHHHQHHHHNNNNNNNNNNNNNNNMNNNNNNNNNHOHHHHMNNNHOHHHHHHHHHOHHHNNNNNNNNNNNNHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHPPKPRKPPGPPPKHMMMMMHMMHNNNNNQHHHHHNNNHHNHHHQHQQQHHMMMMMHMMQHNNNNQQNKGPPPPKPPPPPPPPPPNNNNHMHHHHHNNNNNNHHHHNHHHHHHHHHHHMHHMHHMMHQHHNNNNNHHHHH","n":["aggregate","arity","bitwise","boolean","numeric","temporal","MaxAccumulator","MinAccumulator","NumericAccumulator","PREFERRED_VECTOR_SIZE","PREFERRED_VECTOR_SIZE_NON_NULL","SumAccumulator","accu
[...]
["arrow_array",{"t":"KKKTTTFFFKKFTMMCCCCMOMCMMQQQQQQQQCCMOOMMCOMMMMMMCMMCOOCCMOMMCCCCMKTTTTMMMMMMNNNNNNNNNNMMMMMQQMMMMMMKKKIEIIFIIIIFIIIIFFIIIIFFFITIIIIIIIIIIIIIIRIIIIFFFKTFFIIFIIIIIIIIFFIIIIIIIIFOMNNNNNNNNNNNNNNNNNNNNNNNCCOOOCCMNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOCONNOOCCNNMNMNHMNMNNNNNOOOOOOOOONNMOOOOOOOOOMNOOOOCNNHCOHHMCNNMNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMNOOOOOCHOCOOOOOMNCCMNOCMOOOOOOOOOOOOOOOOOOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
[...]
["arrow_avro",{"t":"CCCCFFPPGPPPPPPPPPPPGFPPPPPPNNNNNNNNNNNNNNNNNNNONONNNNNNNNNNNNNNNNNNNHOOOONNNNNNNNNNNNNNNNNNNNNNSGPPPNNNNNNNNNNNNNCCHHCFFGPPPPPNNNNNNOOONNNNNNNNNNONNNOONNNNNNNNNOPPPFFGPPSPPPPNNNNNNONNNNNNNNNNNNNNNNOOOONONOONNNNNNNONNNOFNNNNNONNONNNFPFPPPGPFPFFPPPPFPPPGFPPSGPFPGPPOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNOOONNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOONNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNO","n":["
[...]
diff --git a/search.desc/arrow/arrow-desc-0-.js
b/search.desc/arrow/arrow-desc-0-.js
index f37876221ad..c226d726fdb 100644
--- a/search.desc/arrow/arrow-desc-0-.js
+++ b/search.desc/arrow/arrow-desc-0-.js
@@ -1 +1 @@
-searchState.loadedDescShard("arrow", 0, "A complete, safe, native Rust
implementation of Apache …\nDefines the low-level <code>Allocation</code> API
for shared memory …\nStatically typed implementations of Arrow Arrays\nTypes of
shared memory region\nComputation kernels on Arrow Arrays\nDefines the logical
data types of Arrow arrays.\nDowncast an <code>Array</code> to a
<code>DictionaryArray</code> based on its …\nDowncast an <code>Array</code> to
a <code>PrimitiveArray</code> based on i [...]
\ No newline at end of file
+searchState.loadedDescShard("arrow", 0, "A complete, safe, native Rust
implementation of Apache …\nDefines the low-level <code>Allocation</code> API
for shared memory …\nStatically typed implementations of Arrow Arrays\nTypes of
shared memory region\nComputation kernels on Arrow Arrays\nDefines the logical
data types of Arrow arrays.\nDowncast an <code>Array</code> to a
<code>DictionaryArray</code> based on its …\nDowncast an <code>Array</code> to
a <code>PrimitiveArray</code> based on i [...]
\ No newline at end of file
diff --git a/src/arrow/util/data_gen.rs.html b/src/arrow/util/data_gen.rs.html
index e8362e0bf47..580d1e3933c 100644
--- a/src/arrow/util/data_gen.rs.html
+++ b/src/arrow/util/data_gen.rs.html
@@ -353,6 +353,245 @@
<a href="#353" id="353">353</a>
<a href="#354" id="354">354</a>
<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+<a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</a>
+<a href="#450" id="450">450</a>
+<a href="#451" id="451">451</a>
+<a href="#452" id="452">452</a>
+<a href="#453" id="453">453</a>
+<a href="#454" id="454">454</a>
+<a href="#455" id="455">455</a>
+<a href="#456" id="456">456</a>
+<a href="#457" id="457">457</a>
+<a href="#458" id="458">458</a>
+<a href="#459" id="459">459</a>
+<a href="#460" id="460">460</a>
+<a href="#461" id="461">461</a>
+<a href="#462" id="462">462</a>
+<a href="#463" id="463">463</a>
+<a href="#464" id="464">464</a>
+<a href="#465" id="465">465</a>
+<a href="#466" id="466">466</a>
+<a href="#467" id="467">467</a>
+<a href="#468" id="468">468</a>
+<a href="#469" id="469">469</a>
+<a href="#470" id="470">470</a>
+<a href="#471" id="471">471</a>
+<a href="#472" id="472">472</a>
+<a href="#473" id="473">473</a>
+<a href="#474" id="474">474</a>
+<a href="#475" id="475">475</a>
+<a href="#476" id="476">476</a>
+<a href="#477" id="477">477</a>
+<a href="#478" id="478">478</a>
+<a href="#479" id="479">479</a>
+<a href="#480" id="480">480</a>
+<a href="#481" id="481">481</a>
+<a href="#482" id="482">482</a>
+<a href="#483" id="483">483</a>
+<a href="#484" id="484">484</a>
+<a href="#485" id="485">485</a>
+<a href="#486" id="486">486</a>
+<a href="#487" id="487">487</a>
+<a href="#488" id="488">488</a>
+<a href="#489" id="489">489</a>
+<a href="#490" id="490">490</a>
+<a href="#491" id="491">491</a>
+<a href="#492" id="492">492</a>
+<a href="#493" id="493">493</a>
+<a href="#494" id="494">494</a>
+<a href="#495" id="495">495</a>
+<a href="#496" id="496">496</a>
+<a href="#497" id="497">497</a>
+<a href="#498" id="498">498</a>
+<a href="#499" id="499">499</a>
+<a href="#500" id="500">500</a>
+<a href="#501" id="501">501</a>
+<a href="#502" id="502">502</a>
+<a href="#503" id="503">503</a>
+<a href="#504" id="504">504</a>
+<a href="#505" id="505">505</a>
+<a href="#506" id="506">506</a>
+<a href="#507" id="507">507</a>
+<a href="#508" id="508">508</a>
+<a href="#509" id="509">509</a>
+<a href="#510" id="510">510</a>
+<a href="#511" id="511">511</a>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</a>
+<a href="#530" id="530">530</a>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</a>
+<a href="#540" id="540">540</a>
+<a href="#541" id="541">541</a>
+<a href="#542" id="542">542</a>
+<a href="#543" id="543">543</a>
+<a href="#544" id="544">544</a>
+<a href="#545" id="545">545</a>
+<a href="#546" id="546">546</a>
+<a href="#547" id="547">547</a>
+<a href="#548" id="548">548</a>
+<a href="#549" id="549">549</a>
+<a href="#550" id="550">550</a>
+<a href="#551" id="551">551</a>
+<a href="#552" id="552">552</a>
+<a href="#553" id="553">553</a>
+<a href="#554" id="554">554</a>
+<a href="#555" id="555">555</a>
+<a href="#556" id="556">556</a>
+<a href="#557" id="557">557</a>
+<a href="#558" id="558">558</a>
+<a href="#559" id="559">559</a>
+<a href="#560" id="560">560</a>
+<a href="#561" id="561">561</a>
+<a href="#562" id="562">562</a>
+<a href="#563" id="563">563</a>
+<a href="#564" id="564">564</a>
+<a href="#565" id="565">565</a>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</a>
+<a href="#569" id="569">569</a>
+<a href="#570" id="570">570</a>
+<a href="#571" id="571">571</a>
+<a href="#572" id="572">572</a>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</a>
+<a href="#582" id="582">582</a>
+<a href="#583" id="583">583</a>
+<a href="#584" id="584">584</a>
+<a href="#585" id="585">585</a>
+<a href="#586" id="586">586</a>
+<a href="#587" id="587">587</a>
+<a href="#588" id="588">588</a>
+<a href="#589" id="589">589</a>
+<a href="#590" id="590">590</a>
+<a href="#591" id="591">591</a>
+<a href="#592" id="592">592</a>
+<a href="#593" id="593">593</a>
+<a href="#594" id="594">594</a>
</pre></div><pre class="rust"><code><span class="comment">// Licensed to the
Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
@@ -414,44 +653,87 @@
true_density: f32,
) -> <span class="prelude-ty">Result</span><ArrayRef> {
<span class="comment">// Override null density with 0.0 if the array is
non-nullable
- </span><span class="kw">let </span>null_density = <span class="kw">match
</span>field.is_nullable() {
+ // and a primitive type in case a nested field is nullable
+ </span><span class="kw">let </span>primitive_null_density = <span
class="kw">match </span>field.is_nullable() {
<span class="bool-val">true </span>=> null_density,
<span class="bool-val">false </span>=> <span
class="number">0.0</span>,
};
<span class="kw">use </span>DataType::<span class="kw-2">*</span>;
<span class="prelude-val">Ok</span>(<span class="kw">match
</span>field.data_type() {
Null => Arc::new(NullArray::new(size)) <span class="kw">as
</span>ArrayRef,
- Boolean => Arc::new(create_boolean_array(size, null_density,
true_density)),
- Int8 => Arc::new(create_primitive_array::<Int8Type>(size,
null_density)),
- Int16 => Arc::new(create_primitive_array::<Int16Type>(size,
null_density)),
- Int32 => Arc::new(create_primitive_array::<Int32Type>(size,
null_density)),
- Int64 => Arc::new(create_primitive_array::<Int64Type>(size,
null_density)),
- UInt8 => Arc::new(create_primitive_array::<UInt8Type>(size,
null_density)),
- UInt16 => Arc::new(create_primitive_array::<UInt16Type>(size,
null_density)),
- UInt32 => Arc::new(create_primitive_array::<UInt32Type>(size,
null_density)),
- UInt64 => Arc::new(create_primitive_array::<UInt64Type>(size,
null_density)),
+ Boolean => Arc::new(create_boolean_array(
+ size,
+ primitive_null_density,
+ true_density,
+ )),
+ Int8 => Arc::new(create_primitive_array::<Int8Type>(
+ size,
+ primitive_null_density,
+ )),
+ Int16 => Arc::new(create_primitive_array::<Int16Type>(
+ size,
+ primitive_null_density,
+ )),
+ Int32 => Arc::new(create_primitive_array::<Int32Type>(
+ size,
+ primitive_null_density,
+ )),
+ Int64 => Arc::new(create_primitive_array::<Int64Type>(
+ size,
+ primitive_null_density,
+ )),
+ UInt8 => Arc::new(create_primitive_array::<UInt8Type>(
+ size,
+ primitive_null_density,
+ )),
+ UInt16 => Arc::new(create_primitive_array::<UInt16Type>(
+ size,
+ primitive_null_density,
+ )),
+ UInt32 => Arc::new(create_primitive_array::<UInt32Type>(
+ size,
+ primitive_null_density,
+ )),
+ UInt64 => Arc::new(create_primitive_array::<UInt64Type>(
+ size,
+ primitive_null_density,
+ )),
Float16 => {
<span class="kw">return </span><span
class="prelude-val">Err</span>(ArrowError::NotYetImplemented(
<span class="string">"Float16 is not
implemented"</span>.to_string(),
))
}
- Float32 =>
Arc::new(create_primitive_array::<Float32Type>(size, null_density)),
- Float64 =>
Arc::new(create_primitive_array::<Float64Type>(size, null_density)),
+ Float32 => Arc::new(create_primitive_array::<Float32Type>(
+ size,
+ primitive_null_density,
+ )),
+ Float64 => Arc::new(create_primitive_array::<Float64Type>(
+ size,
+ primitive_null_density,
+ )),
Timestamp(<span class="kw">_</span>, <span class="kw">_</span>) => {
- <span class="kw">let </span>int64_array =
- Arc::new(create_primitive_array::<Int64Type>(size,
null_density)) <span class="kw">as </span>ArrayRef;
+ <span class="kw">let </span>int64_array =
Arc::new(create_primitive_array::<Int64Type>(
+ size,
+ primitive_null_density,
+ )) <span class="kw">as </span>ArrayRef;
<span class="kw">return </span><span
class="kw">crate</span>::compute::cast(<span
class="kw-2">&</span>int64_array, field.data_type());
}
- Date32 => Arc::new(create_primitive_array::<Date32Type>(size,
null_density)),
- Date64 => Arc::new(create_primitive_array::<Date64Type>(size,
null_density)),
+ Date32 => Arc::new(create_primitive_array::<Date32Type>(
+ size,
+ primitive_null_density,
+ )),
+ Date64 => Arc::new(create_primitive_array::<Date64Type>(
+ size,
+ primitive_null_density,
+ )),
Time32(unit) => <span class="kw">match </span>unit {
TimeUnit::Second =>
Arc::new(create_primitive_array::<Time32SecondType>(
size,
- null_density,
+ primitive_null_density,
)) <span class="kw">as </span>ArrayRef,
TimeUnit::Millisecond =>
Arc::new(create_primitive_array::<Time32MillisecondType>(
size,
- null_density,
+ primitive_null_density,
)),
<span class="kw">_ </span>=> {
<span class="kw">return </span><span
class="prelude-val">Err</span>(ArrowError::InvalidArgumentError(<span
class="macro">format!</span>(
@@ -462,11 +744,11 @@
Time64(unit) => <span class="kw">match </span>unit {
TimeUnit::Microsecond =>
Arc::new(create_primitive_array::<Time64MicrosecondType>(
size,
- null_density,
+ primitive_null_density,
)) <span class="kw">as </span>ArrayRef,
TimeUnit::Nanosecond =>
Arc::new(create_primitive_array::<Time64NanosecondType>(
size,
- null_density,
+ primitive_null_density,
)),
<span class="kw">_ </span>=> {
<span class="kw">return </span><span
class="prelude-val">Err</span>(ArrowError::InvalidArgumentError(<span
class="macro">format!</span>(
@@ -474,31 +756,28 @@
</span>)))
}
},
- Utf8 => Arc::new(create_string_array::<i32>(size,
null_density)),
- LargeUtf8 => Arc::new(create_string_array::<i64>(size,
null_density)),
+ Utf8 => Arc::new(create_string_array::<i32>(size,
primitive_null_density)),
+ LargeUtf8 => Arc::new(create_string_array::<i64>(size,
primitive_null_density)),
Utf8View => Arc::new(create_string_view_array_with_len(
size,
- null_density,
+ primitive_null_density,
<span class="number">4</span>,
<span class="bool-val">false</span>,
)),
- Binary => Arc::new(create_binary_array::<i32>(size,
null_density)),
- LargeBinary => Arc::new(create_binary_array::<i64>(size,
null_density)),
- FixedSizeBinary(len) => Arc::new(create_fsb_array(size,
null_density, <span class="kw-2">*</span>len <span class="kw">as </span>usize)),
+ Binary => Arc::new(create_binary_array::<i32>(size,
primitive_null_density)),
+ LargeBinary => Arc::new(create_binary_array::<i64>(size,
primitive_null_density)),
+ FixedSizeBinary(len) => Arc::new(create_fsb_array(
+ size,
+ primitive_null_density,
+ <span class="kw-2">*</span>len <span class="kw">as </span>usize,
+ )),
BinaryView => Arc::new(
- create_string_view_array_with_len(size, null_density, <span
class="number">4</span>, <span class="bool-val">false</span>).to_binary_view(),
+ create_string_view_array_with_len(size, primitive_null_density,
<span class="number">4</span>, <span class="bool-val">false</span>)
+ .to_binary_view(),
),
List(<span class="kw">_</span>) => create_random_list_array(field,
size, null_density, true_density)<span class="question-mark">?</span>,
LargeList(<span class="kw">_</span>) =>
create_random_list_array(field, size, null_density, true_density)<span
class="question-mark">?</span>,
- Struct(fields) => Arc::new(StructArray::try_from(
- fields
- .iter()
- .map(|struct_field| {
- create_random_array(struct_field, size, null_density,
true_density)
- .map(|array_ref| (struct_field.name().as_str(),
array_ref))
- })
- .collect::<<span
class="prelude-ty">Result</span><Vec<(<span class="kw-2">&</span>str,
ArrayRef)>>>()<span class="question-mark">?</span>,
- )<span class="question-mark">?</span>),
+ Struct(<span class="kw">_</span>) =>
create_random_struct_array(field, size, null_density, true_density)<span
class="question-mark">?</span>,
d @ Dictionary(<span class="kw">_</span>, value_type) <span
class="kw">if </span><span
class="kw">crate</span>::compute::can_cast_types(value_type, d) => {
<span class="kw">let </span>f = Field::new(
field.name(),
@@ -508,6 +787,7 @@
<span class="kw">let </span>v = create_random_array(<span
class="kw-2">&</span>f, size, null_density, true_density)<span
class="question-mark">?</span>;
<span class="kw">crate</span>::compute::cast(<span
class="kw-2">&</span>v, d)<span class="question-mark">?
</span>}
+ Map(<span class="kw">_</span>, <span class="kw">_</span>) =>
create_random_map_array(field, size, null_density, true_density)<span
class="question-mark">?</span>,
other => {
<span class="kw">return </span><span
class="prelude-val">Err</span>(ArrowError::NotYetImplemented(<span
class="macro">format!</span>(
<span class="string">"Generating random arrays not yet
implemented for {other:?}"
@@ -524,7 +804,7 @@
true_density: f32,
) -> <span class="prelude-ty">Result</span><ArrayRef> {
<span class="comment">// Override null density with 0.0 if the array is
non-nullable
- </span><span class="kw">let </span>null_density = <span class="kw">match
</span>field.is_nullable() {
+ </span><span class="kw">let </span>list_null_density = <span
class="kw">match </span>field.is_nullable() {
<span class="bool-val">true </span>=> null_density,
<span class="bool-val">false </span>=> <span
class="number">0.0</span>,
};
@@ -552,7 +832,7 @@
<span class="kw">let </span>child_data = child_array.to_data();
<span class="comment">// Create list's null buffers, if it is nullable
</span><span class="kw">let </span>null_buffer = <span class="kw">match
</span>field.is_nullable() {
- <span class="bool-val">true </span>=> <span
class="prelude-val">Some</span>(create_random_null_buffer(size, null_density)),
+ <span class="bool-val">true </span>=> <span
class="prelude-val">Some</span>(create_random_null_buffer(size,
list_null_density)),
<span class="bool-val">false </span>=> <span
class="prelude-val">None</span>,
};
<span class="kw">let </span>list_data = <span class="kw">unsafe </span>{
@@ -569,6 +849,98 @@
<span class="prelude-val">Ok</span>(make_array(list_data))
}
+<span class="attr">#[inline]
+</span><span class="kw">fn </span>create_random_struct_array(
+ field: <span class="kw-2">&</span>Field,
+ size: usize,
+ null_density: f32,
+ true_density: f32,
+) -> <span class="prelude-ty">Result</span><ArrayRef> {
+ <span class="kw">let </span>struct_fields = <span class="kw">match
</span>field.data_type() {
+ DataType::Struct(fields) => fields,
+ <span class="kw">_ </span>=> {
+ <span class="kw">return </span><span
class="prelude-val">Err</span>(ArrowError::InvalidArgumentError(<span
class="macro">format!</span>(
+ <span class="string">"Cannot create struct array for field
{field:?}"
+ </span>)))
+ }
+ };
+
+ <span class="kw">let </span>child_arrays = struct_fields
+ .iter()
+ .map(|struct_field| create_random_array(struct_field, size,
null_density, true_density))
+ .collect::<<span class="prelude-ty">Result</span><Vec<<span
class="kw">_</span>>>>()<span class="question-mark">?</span>;
+
+ <span class="kw">let </span>null_buffer = <span class="kw">match
</span>field.is_nullable() {
+ <span class="bool-val">true </span>=> {
+ <span class="kw">let </span>nulls =
arrow_buffer::BooleanBuffer::new(
+ create_random_null_buffer(size, null_density),
+ <span class="number">0</span>,
+ size,
+ );
+ <span class="prelude-val">Some</span>(nulls.into())
+ }
+ <span class="bool-val">false </span>=> <span
class="prelude-val">None</span>,
+ };
+
+ <span class="prelude-val">Ok</span>(Arc::new(StructArray::try_new(
+ struct_fields.clone(),
+ child_arrays,
+ null_buffer,
+ )<span class="question-mark">?</span>))
+}
+
+<span class="attr">#[inline]
+</span><span class="kw">fn </span>create_random_map_array(
+ field: <span class="kw-2">&</span>Field,
+ size: usize,
+ null_density: f32,
+ true_density: f32,
+) -> <span class="prelude-ty">Result</span><ArrayRef> {
+ <span class="comment">// Override null density with 0.0 if the array is
non-nullable
+ </span><span class="kw">let </span>map_null_density = <span
class="kw">match </span>field.is_nullable() {
+ <span class="bool-val">true </span>=> null_density,
+ <span class="bool-val">false </span>=> <span
class="number">0.0</span>,
+ };
+
+ <span class="kw">let </span>entries_field = <span class="kw">match
</span>field.data_type() {
+ DataType::Map(f, <span class="kw">_</span>) => f,
+ <span class="kw">_ </span>=> {
+ <span class="kw">return </span><span
class="prelude-val">Err</span>(ArrowError::InvalidArgumentError(<span
class="macro">format!</span>(
+ <span class="string">"Cannot create map array for field
{field:?}"
+ </span>)))
+ }
+ };
+
+ <span class="kw">let </span>(offsets, child_len) =
create_random_offsets::<i32>(size, <span class="number">0</span>, <span
class="number">5</span>);
+ <span class="kw">let </span>offsets =
Buffer::from(offsets.to_byte_slice());
+
+ <span class="kw">let </span>entries = create_random_array(
+ entries_field,
+ child_len <span class="kw">as </span>usize,
+ null_density,
+ true_density,
+ )<span class="question-mark">?
+ </span>.to_data();
+
+ <span class="kw">let </span>null_buffer = <span class="kw">match
</span>field.is_nullable() {
+ <span class="bool-val">true </span>=> <span
class="prelude-val">Some</span>(create_random_null_buffer(size,
map_null_density)),
+ <span class="bool-val">false </span>=> <span
class="prelude-val">None</span>,
+ };
+
+ <span class="kw">let </span>map_data = <span class="kw">unsafe </span>{
+ ArrayData::new_unchecked(
+ field.data_type().clone(),
+ size,
+ <span class="prelude-val">None</span>,
+ null_buffer,
+ <span class="number">0</span>,
+ <span class="macro">vec!</span>[offsets],
+ <span class="macro">vec!</span>[entries],
+ )
+ };
+ <span class="prelude-val">Ok</span>(make_array(map_data))
+}
+
<span class="doccomment">/// Generate random offsets for list arrays
</span><span class="kw">fn </span>create_random_offsets<T: OffsetSizeTrait
+ SampleUniform>(
size: usize,
@@ -630,7 +1002,7 @@
Field::new(<span class="string">"a"</span>, DataType::Int32, <span
class="bool-val">false</span>),
Field::new(
<span class="string">"b"</span>,
- DataType::List(Arc::new(Field::new(<span
class="string">"item"</span>, DataType::LargeUtf8, <span
class="bool-val">true</span>))),
+ DataType::List(Arc::new(Field::new(<span
class="string">"item"</span>, DataType::LargeUtf8, <span
class="bool-val">false</span>))),
<span class="bool-val">false</span>,
),
Field::new(<span class="string">"a"</span>, DataType::Int32, <span
class="bool-val">false</span>),
@@ -707,5 +1079,111 @@
<span class="macro">assert_eq!</span>(col_d_y.data_type(), <span
class="kw-2">&</span>DataType::Float32);
<span class="macro">assert_eq!</span>(col_d_y.null_count(), <span
class="number">0</span>);
}
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn
</span>test_create_list_array_nested_nullability() {
+ <span class="kw">let </span>list_field = Field::new_list(
+ <span class="string">"not_null_list"</span>,
+ Field::new_list_field(DataType::Boolean, <span
class="bool-val">true</span>),
+ <span class="bool-val">false</span>,
+ );
+
+ <span class="kw">let </span>list_array = create_random_array(<span
class="kw-2">&</span>list_field, <span class="number">100</span>, <span
class="number">0.95</span>, <span class="number">0.5</span>).unwrap();
+
+ <span class="macro">assert_eq!</span>(list_array.null_count(), <span
class="number">0</span>);
+ <span
class="macro">assert!</span>(list_array.as_list::<i32>().values().null_count()
> <span class="number">0</span>);
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn
</span>test_create_struct_array_nested_nullability() {
+ <span class="kw">let </span>struct_child_fields = <span
class="macro">vec!</span>[
+ Field::new(<span class="string">"null_int"</span>,
DataType::Int32, <span class="bool-val">true</span>),
+ Field::new(<span class="string">"int"</span>, DataType::Int32,
<span class="bool-val">false</span>),
+ ];
+ <span class="kw">let </span>struct_field = Field::new_struct(<span
class="string">"not_null_struct"</span>, struct_child_fields, <span
class="bool-val">false</span>);
+
+ <span class="kw">let </span>struct_array = create_random_array(<span
class="kw-2">&</span>struct_field, <span class="number">100</span>, <span
class="number">0.95</span>, <span class="number">0.5</span>).unwrap();
+
+ <span class="macro">assert_eq!</span>(struct_array.null_count(), <span
class="number">0</span>);
+ <span class="macro">assert!</span>(
+ struct_array
+ .as_struct()
+ .column_by_name(<span class="string">"null_int"</span>)
+ .unwrap()
+ .null_count()
+ > <span class="number">0
+ </span>);
+ <span class="macro">assert_eq!</span>(
+ struct_array
+ .as_struct()
+ .column_by_name(<span class="string">"int"</span>)
+ .unwrap()
+ .null_count(),
+ <span class="number">0
+ </span>);
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn
</span>test_create_list_array_nested_struct_nullability() {
+ <span class="kw">let </span>struct_child_fields = <span
class="macro">vec!</span>[
+ Field::new(<span class="string">"null_int"</span>,
DataType::Int32, <span class="bool-val">true</span>),
+ Field::new(<span class="string">"int"</span>, DataType::Int32,
<span class="bool-val">false</span>),
+ ];
+ <span class="kw">let </span>list_item_field =
+
Field::new_list_field(DataType::Struct(struct_child_fields.into()), <span
class="bool-val">true</span>);
+ <span class="kw">let </span>list_field = Field::new_list(<span
class="string">"not_null_list"</span>, list_item_field, <span
class="bool-val">false</span>);
+
+ <span class="kw">let </span>list_array = create_random_array(<span
class="kw-2">&</span>list_field, <span class="number">100</span>, <span
class="number">0.95</span>, <span class="number">0.5</span>).unwrap();
+
+ <span class="macro">assert_eq!</span>(list_array.null_count(), <span
class="number">0</span>);
+ <span
class="macro">assert!</span>(list_array.as_list::<i32>().values().null_count()
> <span class="number">0</span>);
+ <span class="macro">assert!</span>(
+ list_array
+ .as_list::<i32>()
+ .values()
+ .as_struct()
+ .column_by_name(<span class="string">"null_int"</span>)
+ .unwrap()
+ .null_count()
+ > <span class="number">0
+ </span>);
+ <span class="macro">assert_eq!</span>(
+ list_array
+ .as_list::<i32>()
+ .values()
+ .as_struct()
+ .column_by_name(<span class="string">"int"</span>)
+ .unwrap()
+ .null_count(),
+ <span class="number">0
+ </span>);
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_create_map_array() {
+ <span class="kw">let </span>map_field = Field::new_map(
+ <span class="string">"map"</span>,
+ <span class="string">"entries"</span>,
+ Field::new(<span class="string">"key"</span>, DataType::Utf8,
<span class="bool-val">false</span>),
+ Field::new(<span class="string">"value"</span>, DataType::Utf8,
<span class="bool-val">true</span>),
+ <span class="bool-val">false</span>,
+ <span class="bool-val">false</span>,
+ );
+ <span class="kw">let </span>array = create_random_array(<span
class="kw-2">&</span>map_field, <span class="number">100</span>, <span
class="number">0.8</span>, <span class="number">0.5</span>).unwrap();
+
+ <span class="macro">assert_eq!</span>(array.len(), <span
class="number">100</span>);
+ <span class="comment">// Map field is not null
+ </span><span class="macro">assert_eq!</span>(array.null_count(), <span
class="number">0</span>);
+ <span class="comment">// Maps have multiple values like a list, so
internal arrays are longer
+ </span><span class="macro">assert!</span>(array.as_map().keys().len()
> array.len());
+ <span class="macro">assert!</span>(array.as_map().values().len() >
array.len());
+ <span class="comment">// Keys are not nullable
+ </span><span
class="macro">assert_eq!</span>(array.as_map().keys().null_count(), <span
class="number">0</span>);
+ <span class="comment">// Values are nullable
+ </span><span
class="macro">assert!</span>(array.as_map().values().null_count() > <span
class="number">0</span>);
+
+ <span
class="macro">assert_eq!</span>(array.as_map().keys().data_type(), <span
class="kw-2">&</span>DataType::Utf8);
+ <span
class="macro">assert_eq!</span>(array.as_map().values().data_type(), <span
class="kw-2">&</span>DataType::Utf8);
+ }
}
</code></pre></div></section></main></body></html>
\ No newline at end of file