From 00ca29018e1ee49c0ea7a272367bc83b08c9caad Mon Sep 17 00:00:00 2001 From: Martin Garton Date: Tue, 28 Jan 2025 12:32:55 +0000 Subject: [PATCH 1/2] Add support for UTF8View types This adds support for UTF8View data types. --- datafusion-postgres/src/datatypes.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/datafusion-postgres/src/datatypes.rs b/datafusion-postgres/src/datatypes.rs index ca199b1..9d149ee 100644 --- a/datafusion-postgres/src/datatypes.rs +++ b/datafusion-postgres/src/datatypes.rs @@ -70,6 +70,7 @@ pub(crate) fn into_pg_type(df_type: &DataType) -> PgWireResult { } } } + DataType::Utf8View => Type::TEXT, _ => { return Err(PgWireError::UserError(Box::new(ErrorInfo::new( "ERROR".to_owned(), @@ -161,6 +162,14 @@ get_primitive_list_value!(get_u64_list_value, UInt64Type, i64, |val: u64| { get_primitive_list_value!(get_f32_list_value, Float32Type, f32); get_primitive_list_value!(get_f64_list_value, Float64Type, f64); + +fn get_utf8_view_value(arr: &Arc, idx: usize) -> &str { + arr.as_any() + .downcast_ref::() + .unwrap() + .value(idx) +} + fn get_utf8_value(arr: &Arc, idx: usize) -> &str { arr.as_any() .downcast_ref::() @@ -249,6 +258,7 @@ fn encode_value( DataType::Float32 => encoder.encode_field(&get_f32_value(arr, idx))?, DataType::Float64 => encoder.encode_field(&get_f64_value(arr, idx))?, DataType::Utf8 => encoder.encode_field(&get_utf8_value(arr, idx))?, + DataType::Utf8View => encoder.encode_field(&get_utf8_view_value(arr, idx))?, DataType::LargeUtf8 => encoder.encode_field(&get_large_utf8_value(arr, idx))?, DataType::Binary => encoder.encode_field(&get_binary_value(arr, idx))?, DataType::LargeBinary => encoder.encode_field(&get_large_binary_value(arr, idx))?, From 2860917c0cdccdf952230d81543a12d5dc38e2c6 Mon Sep 17 00:00:00 2001 From: Martin Garton Date: Tue, 28 Jan 2025 17:14:47 +0000 Subject: [PATCH 2/2] Run cargo fmt --- datafusion-postgres/src/datatypes.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/datafusion-postgres/src/datatypes.rs b/datafusion-postgres/src/datatypes.rs index 9d149ee..5714e2a 100644 --- a/datafusion-postgres/src/datatypes.rs +++ b/datafusion-postgres/src/datatypes.rs @@ -162,7 +162,6 @@ get_primitive_list_value!(get_u64_list_value, UInt64Type, i64, |val: u64| { get_primitive_list_value!(get_f32_list_value, Float32Type, f32); get_primitive_list_value!(get_f64_list_value, Float64Type, f64); - fn get_utf8_view_value(arr: &Arc, idx: usize) -> &str { arr.as_any() .downcast_ref::()