in rust/driver/dummy/src/lib.rs [637:747]
fn get_statistics(
&self,
_catalog: Option<&str>,
_db_schema: Option<&str>,
_table_name: Option<&str>,
_approximate: bool,
) -> Result<impl RecordBatchReader> {
let statistic_value_int64_array = Int64Array::from(Vec::<i64>::new());
let statistic_value_uint64_array = UInt64Array::from(vec![42]);
let statistic_value_float64_array = Float64Array::from(Vec::<f64>::new());
let statistic_value_binary_array = BinaryArray::from(Vec::<&[u8]>::new());
let type_id_buffer = [1_i8].into_iter().collect::<ScalarBuffer<i8>>();
let value_offsets_buffer = [0_i32].into_iter().collect::<ScalarBuffer<i32>>();
let statistic_value_array = UnionArray::try_new(
UnionFields::new(
[0, 1, 2, 3],
[
Field::new("int64", DataType::Int64, true),
Field::new("uint64", DataType::UInt64, true),
Field::new("float64", DataType::Float64, true),
Field::new("binary", DataType::Binary, true),
],
),
type_id_buffer,
Some(value_offsets_buffer),
vec![
Arc::new(statistic_value_int64_array),
Arc::new(statistic_value_uint64_array),
Arc::new(statistic_value_float64_array),
Arc::new(statistic_value_binary_array),
],
)?;
let db_schema_statistics_array_inner = StructArray::from(vec![
(
Arc::new(Field::new("table_name", DataType::Utf8, false)),
Arc::new(StringArray::from(vec!["default"])) as ArrayRef,
),
(
Arc::new(Field::new("column_name", DataType::Utf8, true)),
Arc::new(StringArray::from(vec!["my_column"])) as ArrayRef,
),
(
Arc::new(Field::new("statistic_key", DataType::Int16, false)),
Arc::new(Int16Array::from(vec![Into::<i16>::into(
Statistics::AverageByteWidth,
)])) as ArrayRef,
),
(
Arc::new(Field::new(
"statistic_value",
schemas::STATISTIC_VALUE_SCHEMA.clone(),
false,
)),
Arc::new(statistic_value_array) as ArrayRef,
),
(
Arc::new(Field::new(
"statistic_is_approximate",
DataType::Boolean,
false,
)),
Arc::new(BooleanArray::from(vec![false])) as ArrayRef,
),
]);
let db_schema_statistics_array = ListArray::new(
Arc::new(Field::new("item", schemas::STATISTICS_SCHEMA.clone(), true)),
OffsetBuffer::new(ScalarBuffer::from(vec![0, 1])),
Arc::new(db_schema_statistics_array_inner),
None,
);
let catalog_db_schemas_array_inner = StructArray::from(vec![
(
Arc::new(Field::new("db_schema_name", DataType::Utf8, true)),
Arc::new(StringArray::from(vec!["default"])) as ArrayRef,
),
(
Arc::new(Field::new_list(
"db_schema_statistics",
Arc::new(Field::new("item", schemas::STATISTICS_SCHEMA.clone(), true)),
false,
)),
Arc::new(db_schema_statistics_array) as ArrayRef,
),
]);
let catalog_name_array = StringArray::from(vec!["default"]);
let catalog_db_schemas_array = ListArray::new(
Arc::new(Field::new(
"item",
schemas::STATISTICS_DB_SCHEMA_SCHEMA.clone(),
true,
)),
OffsetBuffer::new(ScalarBuffer::from(vec![0, 1])),
Arc::new(catalog_db_schemas_array_inner),
None,
);
let batch = RecordBatch::try_new(
schemas::GET_STATISTICS_SCHEMA.clone(),
vec![
Arc::new(catalog_name_array),
Arc::new(catalog_db_schemas_array),
],
)?;
let reader = SingleBatchReader::new(batch);
Ok(reader)
}