From 3f9144a2e37562f39758efe6bec6c2b6b0099dd5 Mon Sep 17 00:00:00 2001 From: "Lei, Huang" <6406592+v0y4g3r@users.noreply.github.com> Date: Fri, 2 Sep 2022 11:25:33 +0800 Subject: [PATCH] fix: StringVector use Utf8Array (#222) --- src/catalog/src/tables.rs | 16 ++++++++-------- src/common/grpc/src/physical/plan.rs | 4 ++-- src/common/query/src/logical_plan/accumulator.rs | 10 +++++----- src/datanode/src/tests/http_test.rs | 2 +- src/datatypes/src/arrow_array.rs | 4 ++-- src/datatypes/src/data_type.rs | 2 +- src/datatypes/src/types/string_type.rs | 2 +- src/datatypes/src/vectors/string.rs | 4 ++-- 8 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/catalog/src/tables.rs b/src/catalog/src/tables.rs index 40d04329ce..a366ccac74 100644 --- a/src/catalog/src/tables.rs +++ b/src/catalog/src/tables.rs @@ -299,16 +299,16 @@ mod tests { let batch = t.unwrap().df_recordbatch; assert_eq!(1, batch.num_rows()); assert_eq!(4, batch.num_columns()); - assert_eq!(&DataType::LargeUtf8, batch.column(0).data_type()); - assert_eq!(&DataType::LargeUtf8, batch.column(1).data_type()); - assert_eq!(&DataType::LargeUtf8, batch.column(2).data_type()); - assert_eq!(&DataType::LargeUtf8, batch.column(3).data_type()); + assert_eq!(&DataType::Utf8, batch.column(0).data_type()); + assert_eq!(&DataType::Utf8, batch.column(1).data_type()); + assert_eq!(&DataType::Utf8, batch.column(2).data_type()); + assert_eq!(&DataType::Utf8, batch.column(3).data_type()); assert_eq!( "test_catalog", batch .column(0) .as_any() - .downcast_ref::>() + .downcast_ref::>() .unwrap() .value(0) ); @@ -318,7 +318,7 @@ mod tests { batch .column(1) .as_any() - .downcast_ref::>() + .downcast_ref::>() .unwrap() .value(0) ); @@ -328,7 +328,7 @@ mod tests { batch .column(2) .as_any() - .downcast_ref::>() + .downcast_ref::>() .unwrap() .value(0) ); @@ -338,7 +338,7 @@ mod tests { batch .column(3) .as_any() - .downcast_ref::>() + .downcast_ref::>() .unwrap() .value(0) ); diff --git a/src/common/grpc/src/physical/plan.rs b/src/common/grpc/src/physical/plan.rs index 9b5a9079f1..dd12183cd3 100644 --- a/src/common/grpc/src/physical/plan.rs +++ b/src/common/grpc/src/physical/plan.rs @@ -152,7 +152,7 @@ impl ExecutionPlan for MockExecution { fn schema(&self) -> arrow::datatypes::SchemaRef { let field1 = Field::new("id", DataType::UInt32, false); - let field2 = Field::new("name", DataType::LargeUtf8, false); + let field2 = Field::new("name", DataType::Utf8, false); let field3 = Field::new("age", DataType::UInt32, false); Arc::new(arrow::datatypes::Schema::new(vec![field1, field2, field3])) } @@ -190,7 +190,7 @@ impl ExecutionPlan for MockExecution { let age_array = Arc::new(PrimitiveArray::from_slice([25u32, 28, 27, 35, 25])); let schema = Arc::new(Schema::new(vec![ Field::new("id", DataType::UInt32, false), - Field::new("name", DataType::LargeUtf8, false), + Field::new("name", DataType::Utf8, false), Field::new("age", DataType::UInt32, false), ])); let record_batch = diff --git a/src/common/query/src/logical_plan/accumulator.rs b/src/common/query/src/logical_plan/accumulator.rs index 58eb2ab9d9..d03c50423a 100644 --- a/src/common/query/src/logical_plan/accumulator.rs +++ b/src/common/query/src/logical_plan/accumulator.rs @@ -178,7 +178,7 @@ fn try_into_scalar_value(value: Value, datatype: &ConcreteDataType) -> Result ScalarValue::Int64(Some(v)), Value::Float32(v) => ScalarValue::Float32(Some(v.0)), Value::Float64(v) => ScalarValue::Float64(Some(v.0)), - Value::String(v) => ScalarValue::LargeUtf8(Some(v.as_utf8().to_string())), + Value::String(v) => ScalarValue::Utf8(Some(v.as_utf8().to_string())), Value::Binary(v) => ScalarValue::LargeBinary(Some(v.to_vec())), Value::Date(v) => ScalarValue::Date32(Some(v.val())), Value::DateTime(v) => ScalarValue::Date64(Some(v.val())), @@ -201,7 +201,7 @@ fn try_convert_null_value(datatype: &ConcreteDataType) -> Result { ConcreteDataType::Float32(_) => ScalarValue::Float32(None), ConcreteDataType::Float64(_) => ScalarValue::Float64(None), ConcreteDataType::Binary(_) => ScalarValue::LargeBinary(None), - ConcreteDataType::String(_) => ScalarValue::LargeUtf8(None), + ConcreteDataType::String(_) => ScalarValue::Utf8(None), _ => { return error::BadAccumulatorImplSnafu { err_msg: format!( @@ -330,10 +330,10 @@ mod tests { .unwrap() ); assert_eq!( - ScalarValue::LargeUtf8(Some("hello".to_string())), + ScalarValue::Utf8(Some("hello".to_string())), try_into_scalar_value( Value::String(StringBytes::from("hello")), - &ConcreteDataType::string_datatype() + &ConcreteDataType::string_datatype(), ) .unwrap() ); @@ -394,7 +394,7 @@ mod tests { try_into_scalar_value(Value::Null, &ConcreteDataType::float64_datatype()).unwrap() ); assert_eq!( - ScalarValue::LargeUtf8(None), + ScalarValue::Utf8(None), try_into_scalar_value(Value::Null, &ConcreteDataType::string_datatype()).unwrap() ); assert_eq!( diff --git a/src/datanode/src/tests/http_test.rs b/src/datanode/src/tests/http_test.rs index 1d882dd764..dc625d9c68 100644 --- a/src/datanode/src/tests/http_test.rs +++ b/src/datanode/src/tests/http_test.rs @@ -64,7 +64,7 @@ async fn test_sql_api() { let body = res.text().await; assert_eq!( body, - r#"{"success":true,"output":{"Rows":[{"schema":{"fields":[{"name":"host","data_type":"LargeUtf8","is_nullable":false,"metadata":{}},{"name":"cpu","data_type":"Float64","is_nullable":true,"metadata":{}},{"name":"memory","data_type":"Float64","is_nullable":true,"metadata":{}},{"name":"ts","data_type":"Int64","is_nullable":true,"metadata":{}}],"metadata":{"greptime:timestamp_column":"ts","greptime:version":"0"}},"columns":[["host"],[66.6],[1024.0],[0]]}]}}"# + r#"{"success":true,"output":{"Rows":[{"schema":{"fields":[{"name":"host","data_type":"Utf8","is_nullable":false,"metadata":{}},{"name":"cpu","data_type":"Float64","is_nullable":true,"metadata":{}},{"name":"memory","data_type":"Float64","is_nullable":true,"metadata":{}},{"name":"ts","data_type":"Int64","is_nullable":true,"metadata":{}}],"metadata":{"greptime:timestamp_column":"ts","greptime:version":"0"}},"columns":[["host"],[66.6],[1024.0],[0]]}]}}"# ); // select with projections diff --git a/src/datatypes/src/arrow_array.rs b/src/datatypes/src/arrow_array.rs index bc4711d724..deaf9b4c09 100644 --- a/src/datatypes/src/arrow_array.rs +++ b/src/datatypes/src/arrow_array.rs @@ -10,8 +10,8 @@ use crate::value::Value; pub type BinaryArray = ArrowBinaryArray; pub type MutableBinaryArray = ArrowMutableBinaryArray; -pub type MutableStringArray = MutableUtf8Array; -pub type StringArray = Utf8Array; +pub type MutableStringArray = MutableUtf8Array; +pub type StringArray = Utf8Array; macro_rules! cast_array { ($arr: ident, $CastType: ty) => { diff --git a/src/datatypes/src/data_type.rs b/src/datatypes/src/data_type.rs index 605d08ba89..003c0ed14a 100644 --- a/src/datatypes/src/data_type.rs +++ b/src/datatypes/src/data_type.rs @@ -268,7 +268,7 @@ mod tests { ConcreteDataType::String(_) )); assert!(matches!( - ConcreteDataType::from_arrow_type(&ArrowDataType::LargeUtf8), + ConcreteDataType::from_arrow_type(&ArrowDataType::Utf8), ConcreteDataType::String(_) )); assert_eq!( diff --git a/src/datatypes/src/types/string_type.rs b/src/datatypes/src/types/string_type.rs index e0ba6b6ca4..f200957ad6 100644 --- a/src/datatypes/src/types/string_type.rs +++ b/src/datatypes/src/types/string_type.rs @@ -30,6 +30,6 @@ impl DataType for StringType { } fn as_arrow_type(&self) -> ArrowDataType { - ArrowDataType::LargeUtf8 + ArrowDataType::Utf8 } } diff --git a/src/datatypes/src/vectors/string.rs b/src/datatypes/src/vectors/string.rs index 702ca19688..d7d99dd583 100644 --- a/src/datatypes/src/vectors/string.rs +++ b/src/datatypes/src/vectors/string.rs @@ -117,7 +117,7 @@ impl Vector for StringVector { impl ScalarVector for StringVector { type OwnedItem = String; type RefItem<'a> = &'a str; - type Iter<'a> = ZipValidity<'a, &'a str, Utf8ValuesIter<'a, i64>>; + type Iter<'a> = ZipValidity<'a, &'a str, Utf8ValuesIter<'a, i32>>; type Builder = StringVectorBuilder; fn get_data(&self, idx: usize) -> Option> { @@ -218,7 +218,7 @@ mod tests { let arrow_arr = v.to_arrow_array(); assert_eq!(3, arrow_arr.len()); - assert_eq!(&ArrowDataType::LargeUtf8, arrow_arr.data_type()); + assert_eq!(&ArrowDataType::Utf8, arrow_arr.data_type()); } #[test]