Skip to content

Commit e86c7dc

Browse files
committed
test
1 parent 337378a commit e86c7dc

File tree

1 file changed

+101
-1
lines changed
  • datafusion/core/tests/dataframe

1 file changed

+101
-1
lines changed

datafusion/core/tests/dataframe/mod.rs

Lines changed: 101 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ use arrow::array::{
2525
Int8Array, LargeListArray, ListArray, ListBuilder, RecordBatch, StringArray,
2626
StringBuilder, StructBuilder, UInt32Array, UInt32Builder, UnionArray,
2727
};
28-
use arrow::buffer::ScalarBuffer;
28+
use arrow::buffer::{OffsetBuffer, ScalarBuffer};
2929
use arrow::datatypes::{
3030
DataType, Field, Float32Type, Int32Type, Schema, UInt64Type, UnionFields, UnionMode,
3131
};
@@ -6479,3 +6479,103 @@ async fn test_duplicate_state_fields_for_dfschema_construct() -> Result<()> {
64796479

64806480
Ok(())
64816481
}
6482+
6483+
#[tokio::test]
6484+
async fn array_distinct_type_mismatch() -> Result<()> {
6485+
let inner_field = Arc::new(Field::new("data", DataType::Int32, false));
6486+
let array = ListArray::new(
6487+
Arc::clone(&inner_field),
6488+
OffsetBuffer::new(vec![0, 7].into()),
6489+
Arc::new(Int32Array::from(vec![1, 1, 2, 2, 0, 0, 3])),
6490+
None,
6491+
);
6492+
6493+
let field = Field::new("my_array", DataType::List(Arc::clone(&inner_field)), true);
6494+
let schema = Arc::new(Schema::new(vec![field]));
6495+
6496+
let batch = RecordBatch::try_new(schema, vec![Arc::new(array)]).unwrap();
6497+
6498+
let ctx = SessionContext::new();
6499+
6500+
ctx.register_batch("array_batch", batch).unwrap();
6501+
6502+
let df = ctx.table("array_batch").await.unwrap();
6503+
6504+
// view_all
6505+
assert_snapshot!(
6506+
batches_to_string(&df.clone().collect().await.unwrap()),
6507+
@r"
6508+
+-----------------------+
6509+
| my_array |
6510+
+-----------------------+
6511+
| [1, 1, 2, 2, 0, 0, 3] |
6512+
+-----------------------+
6513+
"
6514+
);
6515+
Ok(())
6516+
//
6517+
// let result_df = df.clone().filter(col("my_dict")).unwrap();
6518+
//
6519+
// assert_snapshot!(
6520+
// batches_to_string(&result_df.collect().await.unwrap()),
6521+
// @r###"
6522+
// +---------+
6523+
// | my_dict |
6524+
// +---------+
6525+
// | true |
6526+
// | true |
6527+
// | true |
6528+
// +---------+
6529+
// "###
6530+
// );
6531+
//
6532+
// // test nested dictionary
6533+
// let keys = vec![0, 2]; // 0 -> true, 2 -> false
6534+
// let keys_array = Int8Array::from(keys);
6535+
// let nested_array = DictionaryArray::new(keys_array, array);
6536+
//
6537+
// let field = Field::new(
6538+
// "my_nested_dict",
6539+
// DataType::Dictionary(
6540+
// Box::new(DataType::Int8),
6541+
// Box::new(DataType::Dictionary(
6542+
// Box::new(DataType::Int8),
6543+
// Box::new(DataType::Boolean),
6544+
// )),
6545+
// ),
6546+
// true,
6547+
// );
6548+
//
6549+
// let schema = Arc::new(Schema::new(vec![field]));
6550+
//
6551+
// let batch = RecordBatch::try_new(schema, vec![Arc::new(nested_array)]).unwrap();
6552+
//
6553+
// ctx.register_batch("nested_dict_batch", batch).unwrap();
6554+
//
6555+
// let df = ctx.table("nested_dict_batch").await.unwrap();
6556+
//
6557+
// // view_all
6558+
// assert_snapshot!(
6559+
// batches_to_string(&df.clone().collect().await.unwrap()),
6560+
// @r###"
6561+
// +----------------+
6562+
// | my_nested_dict |
6563+
// +----------------+
6564+
// | true |
6565+
// | false |
6566+
// +----------------+
6567+
// "###
6568+
// );
6569+
//
6570+
// let result_df = df.clone().filter(col("my_nested_dict")).unwrap();
6571+
// assert_snapshot!(
6572+
// batches_to_string(&result_df.collect().await.unwrap()),
6573+
// @r###"
6574+
// +----------------+
6575+
// | my_nested_dict |
6576+
// +----------------+
6577+
// | true |
6578+
// +----------------+
6579+
// "###
6580+
// );
6581+
}

0 commit comments

Comments
 (0)