From bd8808353254aaccd6b17e2bfbb2c41be631e2c5 Mon Sep 17 00:00:00 2001 From: Mike Shauneu Date: Wed, 23 Apr 2025 21:24:53 -0400 Subject: [PATCH] Add Utf8View support --- convergence-arrow/src/table.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/convergence-arrow/src/table.rs b/convergence-arrow/src/table.rs index fb23e98..7d57454 100644 --- a/convergence-arrow/src/table.rs +++ b/convergence-arrow/src/table.rs @@ -4,7 +4,7 @@ use convergence::protocol::{DataTypeOid, ErrorResponse, FieldDescription, SqlSta use convergence::protocol_ext::DataRowBatch; use datafusion::arrow::array::{ BooleanArray, Date32Array, Date64Array, Float16Array, Float32Array, Float64Array, Int16Array, Int32Array, - Int64Array, Int8Array, StringArray, TimestampMicrosecondArray, TimestampMillisecondArray, TimestampNanosecondArray, + Int64Array, Int8Array, StringArray, StringViewArray, TimestampMicrosecondArray, TimestampMillisecondArray, TimestampNanosecondArray, TimestampSecondArray, UInt16Array, UInt32Array, UInt64Array, UInt8Array, }; use datafusion::arrow::datatypes::{DataType, Schema, TimeUnit}; @@ -48,6 +48,7 @@ pub fn record_batch_to_rows(arrow_batch: &RecordBatch, pg_batch: &mut DataRowBat DataType::Float32 => row.write_float4(array_val!(Float32Array, col, row_idx)), DataType::Float64 => row.write_float8(array_val!(Float64Array, col, row_idx)), DataType::Utf8 => row.write_string(array_val!(StringArray, col, row_idx)), + DataType::Utf8View => row.write_string(array_val!(StringViewArray, col, row_idx)), DataType::Date32 => { row.write_date(array_val!(Date32Array, col, row_idx, value_as_date).ok_or_else(|| { ErrorResponse::error(SqlState::InvalidDatetimeFormat, "unsupported date type") @@ -103,6 +104,7 @@ pub fn data_type_to_oid(ty: &DataType) -> Result { DataType::Float16 | DataType::Float32 => DataTypeOid::Float4, DataType::Float64 => DataTypeOid::Float8, DataType::Utf8 => DataTypeOid::Text, + DataType::Utf8View => DataTypeOid::Text, DataType::Date32 | DataType::Date64 => DataTypeOid::Date, DataType::Timestamp(_, None) => DataTypeOid::Timestamp, other => {