Skip to content
Closed
Show file tree
Hide file tree
Changes from 9 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions rust/arrow/examples/builders.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,9 @@ use arrow::array::{
StringArray, StructArray,
};
use arrow::buffer::Buffer;
use arrow::datatypes::{DataType, Date64Type, Field, Time64NanosecondType, ToByteSlice};
use arrow::datatypes::{
DataType, DataTypeContext, Date64Type, Field, Time64NanosecondType, ToByteSlice,
};

fn main() {
// Primitive Arrays
Expand Down Expand Up @@ -100,7 +102,7 @@ fn main() {

// Construct a list array from the above two
let list_data_type =
DataType::List(Box::new(Field::new("item", DataType::Int32, false)));
DataType::List(Box::new(DataTypeContext::new(DataType::Int32, false)));
let list_data = ArrayData::builder(list_data_type)
.len(3)
.add_buffer(value_offsets)
Expand Down
4 changes: 2 additions & 2 deletions rust/arrow/src/array/array_binary.rs
Original file line number Diff line number Diff line change
Expand Up @@ -596,7 +596,7 @@ impl Array for DecimalArray {

#[cfg(test)]
mod tests {
use crate::datatypes::Field;
use crate::datatypes::DataTypeContext;

use super::*;

Expand Down Expand Up @@ -908,7 +908,7 @@ mod tests {
.build();

let array_data = ArrayData::builder(DataType::FixedSizeList(
Box::new(Field::new("item", DataType::Binary, false)),
Box::new(DataTypeContext::new(DataType::Binary, false)),
4,
))
.len(3)
Expand Down
31 changes: 14 additions & 17 deletions rust/arrow/src/array/array_list.rs
Original file line number Diff line number Diff line change
Expand Up @@ -297,15 +297,12 @@ impl fmt::Debug for FixedSizeListArray {
#[cfg(test)]
mod tests {
use crate::{
array::ArrayData,
array::Int32Array,
buffer::Buffer,
datatypes::{Field, ToByteSlice},
memory,
util::bit_util,
array::ArrayData, array::Int32Array, buffer::Buffer, datatypes::ToByteSlice,
memory, util::bit_util,
};

use super::*;
use crate::datatypes::DataTypeContext;

#[test]
fn test_list_array() {
Expand All @@ -321,7 +318,7 @@ mod tests {

// Construct a list array from the above two
let list_data_type =
DataType::List(Box::new(Field::new("item", DataType::Int32, false)));
DataType::List(Box::new(DataTypeContext::new(DataType::Int32, false)));
let list_data = ArrayData::builder(list_data_type.clone())
.len(3)
.add_buffer(value_offsets.clone())
Expand Down Expand Up @@ -391,7 +388,7 @@ mod tests {

// Construct a list array from the above two
let list_data_type =
DataType::LargeList(Box::new(Field::new("item", DataType::Int32, false)));
DataType::LargeList(Box::new(DataTypeContext::new(DataType::Int32, false)));
let list_data = ArrayData::builder(list_data_type.clone())
.len(3)
.add_buffer(value_offsets.clone())
Expand Down Expand Up @@ -457,7 +454,7 @@ mod tests {

// Construct a list array from the above two
let list_data_type = DataType::FixedSizeList(
Box::new(Field::new("item", DataType::Int32, false)),
Box::new(DataTypeContext::new(DataType::Int32, false)),
3,
);
let list_data = ArrayData::builder(list_data_type.clone())
Expand Down Expand Up @@ -526,7 +523,7 @@ mod tests {

// Construct a list array from the above two
let list_data_type = DataType::FixedSizeList(
Box::new(Field::new("item", DataType::Int32, false)),
Box::new(DataTypeContext::new(DataType::Int32, false)),
3,
);
let list_data = ArrayData::builder(list_data_type)
Expand Down Expand Up @@ -560,7 +557,7 @@ mod tests {

// Construct a list array from the above two
let list_data_type =
DataType::List(Box::new(Field::new("item", DataType::Int32, false)));
DataType::List(Box::new(DataTypeContext::new(DataType::Int32, false)));
let list_data = ArrayData::builder(list_data_type)
.len(9)
.add_buffer(value_offsets)
Expand Down Expand Up @@ -625,7 +622,7 @@ mod tests {

// Construct a list array from the above two
let list_data_type =
DataType::LargeList(Box::new(Field::new("item", DataType::Int32, false)));
DataType::LargeList(Box::new(DataTypeContext::new(DataType::Int32, false)));
let list_data = ArrayData::builder(list_data_type)
.len(9)
.add_buffer(value_offsets)
Expand Down Expand Up @@ -688,7 +685,7 @@ mod tests {

// Construct a fixed size list array from the above two
let list_data_type = DataType::FixedSizeList(
Box::new(Field::new("item", DataType::Int32, false)),
Box::new(DataTypeContext::new(DataType::Int32, false)),
2,
);
let list_data = ArrayData::builder(list_data_type)
Expand Down Expand Up @@ -739,7 +736,7 @@ mod tests {
.add_buffer(Buffer::from(&[0, 1, 2, 3, 4, 5, 6, 7].to_byte_slice()))
.build();
let list_data_type =
DataType::List(Box::new(Field::new("item", DataType::Int32, false)));
DataType::List(Box::new(DataTypeContext::new(DataType::Int32, false)));
let list_data = ArrayData::builder(list_data_type)
.len(3)
.add_child_data(value_data)
Expand All @@ -754,7 +751,7 @@ mod tests {
fn test_list_array_invalid_child_array_len() {
let value_offsets = Buffer::from(&[0, 2, 5, 7].to_byte_slice());
let list_data_type =
DataType::List(Box::new(Field::new("item", DataType::Int32, false)));
DataType::List(Box::new(DataTypeContext::new(DataType::Int32, false)));
let list_data = ArrayData::builder(list_data_type)
.len(3)
.add_buffer(value_offsets)
Expand All @@ -773,7 +770,7 @@ mod tests {
let value_offsets = Buffer::from(&[2, 2, 5, 7].to_byte_slice());

let list_data_type =
DataType::List(Box::new(Field::new("item", DataType::Int32, false)));
DataType::List(Box::new(DataTypeContext::new(DataType::Int32, false)));
let list_data = ArrayData::builder(list_data_type)
.len(3)
.add_buffer(value_offsets)
Expand Down Expand Up @@ -805,7 +802,7 @@ mod tests {
.build();

let list_data_type =
DataType::List(Box::new(Field::new("item", DataType::Int32, false)));
DataType::List(Box::new(DataTypeContext::new(DataType::Int32, false)));
let list_data = ArrayData::builder(list_data_type)
.add_buffer(buf2)
.add_child_data(value_data)
Expand Down
46 changes: 20 additions & 26 deletions rust/arrow/src/array/builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -764,8 +764,7 @@ where
///
/// This is used for validating array data types in `append_data`
fn data_type(&self) -> DataType {
DataType::List(Box::new(Field::new(
"item",
DataType::List(Box::new(DataTypeContext::new(
self.values_builder.data_type(),
true,
)))
Expand Down Expand Up @@ -834,8 +833,7 @@ where
let null_bit_buffer = self.bitmap_builder.finish();
let nulls = null_bit_buffer.count_set_bits();
self.offsets_builder.append(0).unwrap();
let data = ArrayData::builder(DataType::List(Box::new(Field::new(
"item",
let data = ArrayData::builder(DataType::List(Box::new(DataTypeContext::new(
values_data.data_type().clone(),
true, // TODO: find a consistent way of getting this
))))
Expand Down Expand Up @@ -976,8 +974,7 @@ where
///
/// This is used for validating array data types in `append_data`
fn data_type(&self) -> DataType {
DataType::LargeList(Box::new(Field::new(
"item",
DataType::LargeList(Box::new(DataTypeContext::new(
self.values_builder.data_type(),
true,
)))
Expand Down Expand Up @@ -1046,11 +1043,9 @@ where
let null_bit_buffer = self.bitmap_builder.finish();
let nulls = null_bit_buffer.count_set_bits();
self.offsets_builder.append(0).unwrap();
let data = ArrayData::builder(DataType::LargeList(Box::new(Field::new(
"item",
values_data.data_type().clone(),
true,
))))
let data = ArrayData::builder(DataType::LargeList(Box::new(
DataTypeContext::new(values_data.data_type().clone(), true),
)))
.len(len)
.null_count(len - nulls)
.add_buffer(offset_buffer)
Expand Down Expand Up @@ -1158,7 +1153,7 @@ where
/// This is used for validating array data types in `append_data`
fn data_type(&self) -> DataType {
DataType::FixedSizeList(
Box::new(Field::new("item", self.values_builder.data_type(), true)),
Box::new(DataTypeContext::new(self.values_builder.data_type(), true)),
self.list_len,
)
}
Expand Down Expand Up @@ -1237,7 +1232,7 @@ where
let null_bit_buffer = self.bitmap_builder.finish();
let nulls = null_bit_buffer.count_set_bits();
let data = ArrayData::builder(DataType::FixedSizeList(
Box::new(Field::new("item", values_data.data_type().clone(), true)),
Box::new(DataTypeContext::new(values_data.data_type().clone(), true)),
self.list_len,
))
.len(len)
Expand Down Expand Up @@ -1458,7 +1453,7 @@ fn append_binary_data(
)) as ArrayDataRef;

Arc::new(ArrayData::new(
DataType::List(Box::new(Field::new("item", DataType::UInt8, true))),
DataType::List(Box::new(DataTypeContext::new(DataType::UInt8, true))),
array.len(),
None,
array.null_buffer().cloned(),
Expand Down Expand Up @@ -1510,8 +1505,7 @@ fn append_large_binary_data(
)) as ArrayDataRef;

Arc::new(ArrayData::new(
DataType::LargeList(Box::new(Field::new(
"item",
DataType::LargeList(Box::new(DataTypeContext::new(
DataType::UInt8,
true,
))),
Expand Down Expand Up @@ -1613,7 +1607,7 @@ impl ArrayBuilder for FixedSizeBinaryBuilder {
)) as ArrayDataRef;
let list_data = Arc::new(ArrayData::new(
DataType::FixedSizeList(
Box::new(Field::new("item", DataType::UInt8, true)),
Box::new(DataTypeContext::new(DataType::UInt8, true)),
self.builder.list_len,
),
array.len(),
Expand Down Expand Up @@ -1699,7 +1693,7 @@ impl ArrayBuilder for DecimalBuilder {
)) as ArrayDataRef;
let list_data = Arc::new(ArrayData::new(
DataType::FixedSizeList(
Box::new(Field::new("item", DataType::UInt8, true)),
Box::new(DataTypeContext::new(DataType::UInt8, true)),
self.builder.list_len,
),
array.len(),
Expand Down Expand Up @@ -3820,13 +3814,13 @@ mod tests {

#[test]
#[should_panic(
expected = "Data type List(Field { name: \"item\", data_type: Int64, nullable: true, dict_id: 0, dict_is_ordered: false }) is not currently supported"
expected = "Data type List(DataTypeContext { data_type: Int64, nullable: true }) is not currently supported"
)]
fn test_struct_array_builder_from_schema_unsupported_type() {
let mut fields = Vec::new();
fields.push(Field::new("f1", DataType::Int16, false));
let list_type =
DataType::List(Box::new(Field::new("item", DataType::Int64, true)));
DataType::List(Box::new(DataTypeContext::new(DataType::Int64, true)));
fields.push(Field::new("f2", list_type, false));

let _ = StructBuilder::from_fields(fields, 5);
Expand Down Expand Up @@ -4125,7 +4119,7 @@ mod tests {
let list_value_offsets =
Buffer::from(&[0, 3, 5, 11, 13, 13, 15, 15, 17].to_byte_slice());
let expected_list_data = ArrayData::new(
DataType::List(Box::new(Field::new("item", DataType::Int64, true))),
DataType::List(Box::new(DataTypeContext::new(DataType::Int64, true))),
8,
None,
None,
Expand Down Expand Up @@ -4211,7 +4205,7 @@ mod tests {
&[0, 3, 5, 5, 13, 15, 15, 15, 19, 19, 19, 19, 23].to_byte_slice(),
);
let expected_list_data = ArrayData::new(
DataType::List(Box::new(Field::new("item", DataType::Int64, true))),
DataType::List(Box::new(DataTypeContext::new(DataType::Int64, true))),
12,
None,
None,
Expand Down Expand Up @@ -4253,7 +4247,7 @@ mod tests {
]);
let list_value_offsets = Buffer::from(&[0, 2, 3, 6].to_byte_slice());
let list_data = ArrayData::new(
DataType::List(Box::new(Field::new("item", DataType::Utf8, true))),
DataType::List(Box::new(DataTypeContext::new(DataType::Utf8, true))),
3,
None,
None,
Expand Down Expand Up @@ -4288,7 +4282,7 @@ mod tests {
]);
let list_value_offsets = Buffer::from(&[0, 2, 2, 4, 5, 8, 9, 12].to_byte_slice());
let expected_list_data = ArrayData::new(
DataType::List(Box::new(Field::new("item", DataType::Utf8, true))),
DataType::List(Box::new(DataTypeContext::new(DataType::Utf8, true))),
7,
None,
None, // is this correct?
Expand Down Expand Up @@ -4377,7 +4371,7 @@ mod tests {
]);
let expected_list_data = ArrayData::new(
DataType::FixedSizeList(
Box::new(Field::new("item", DataType::UInt16, true)),
Box::new(DataTypeContext::new(DataType::UInt16, true)),
2,
),
12,
Expand Down Expand Up @@ -4450,7 +4444,7 @@ mod tests {
]);
let expected_list_data = ArrayData::new(
DataType::FixedSizeList(
Box::new(Field::new("item", DataType::UInt8, true)),
Box::new(DataTypeContext::new(DataType::UInt8, true)),
2,
),
12,
Expand Down
Loading