diff --git a/arrow-pg/src/datatypes.rs b/arrow-pg/src/datatypes.rs index 7af25f1..c3c6276 100644 --- a/arrow-pg/src/datatypes.rs +++ b/arrow-pg/src/datatypes.rs @@ -42,8 +42,7 @@ pub fn into_pg_type(arrow_type: &DataType) -> PgWireResult { DataType::Float16 | DataType::Float32 => Type::FLOAT4, DataType::Float64 => Type::FLOAT8, DataType::Decimal128(_, _) => Type::NUMERIC, - DataType::Utf8 => Type::VARCHAR, - DataType::LargeUtf8 | DataType::Utf8View => Type::TEXT, + DataType::Utf8 | DataType::LargeUtf8 | DataType::Utf8View => Type::TEXT, DataType::List(field) | DataType::FixedSizeList(field, _) | DataType::LargeList(field) => { match field.data_type() { DataType::Boolean => Type::BOOL_ARRAY, @@ -67,8 +66,7 @@ pub fn into_pg_type(arrow_type: &DataType) -> PgWireResult { | DataType::BinaryView => Type::BYTEA_ARRAY, DataType::Float16 | DataType::Float32 => Type::FLOAT4_ARRAY, DataType::Float64 => Type::FLOAT8_ARRAY, - DataType::Utf8 => Type::VARCHAR_ARRAY, - DataType::LargeUtf8 | DataType::Utf8View => Type::TEXT_ARRAY, + DataType::Utf8 | DataType::LargeUtf8 | DataType::Utf8View => Type::TEXT_ARRAY, struct_type @ DataType::Struct(_) => Type::new( Type::RECORD_ARRAY.name().into(), Type::RECORD_ARRAY.oid(), diff --git a/arrow-pg/src/datatypes/df.rs b/arrow-pg/src/datatypes/df.rs index af98b99..c91ab56 100644 --- a/arrow-pg/src/datatypes/df.rs +++ b/arrow-pg/src/datatypes/df.rs @@ -66,11 +66,9 @@ where } else if let Some(infer_type) = inferenced_type { into_pg_type(infer_type) } else { - Err(PgWireError::UserError(Box::new(ErrorInfo::new( - "FATAL".to_string(), - "XX000".to_string(), - "Unknown parameter type".to_string(), - )))) + // Default to TEXT for untyped parameters in extended queries + // This allows arithmetic operations to work with implicit casting + Ok(Type::TEXT) } }