From 6b9165f6333f924f776c8a46c3b6b5e70b65ffa2 Mon Sep 17 00:00:00 2001 From: Mohd Quamar Tyagi <104281681+Tyagiquamar@users.noreply.github.com> Date: Wed, 9 Sep 2026 06:27:31 +0000 Subject: [PATCH] fix(servers): return text[] for SELECT array[null] in PostgreSQL protocol (#9058) fix(servers): return text array for null array literals Signed-off-by: Tyagiquamar --- src/servers/src/postgres/types.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/servers/src/postgres/types.rs b/src/servers/src/postgres/types.rs index 7317dc933d..543f18d4fc 100644 --- a/src/servers/src/postgres/types.rs +++ b/src/servers/src/postgres/types.rs @@ -255,7 +255,7 @@ pub(super) fn type_gt_to_pg(origin: &ConcreteDataType) -> Result { &ConcreteDataType::Decimal128(_) => Ok(Type::NUMERIC), &ConcreteDataType::Json(_) => Ok(Type::JSON), ConcreteDataType::List(list) => match list.item_type() { - &ConcreteDataType::Null(_) => Ok(Type::UNKNOWN), + &ConcreteDataType::Null(_) => Ok(Type::TEXT_ARRAY), &ConcreteDataType::Boolean(_) => Ok(Type::BOOL_ARRAY), &ConcreteDataType::Int8(_) => Ok(Type::INT2_ARRAY), &ConcreteDataType::Int16(_) | &ConcreteDataType::UInt8(_) => Ok(Type::INT2_ARRAY), @@ -1300,6 +1300,12 @@ mod test { use crate::SqlPlan; use crate::postgres::handler::PgSqlPlan; + #[test] + fn test_null_array_maps_to_text_array() { + let array = ConcreteDataType::list_datatype(Arc::new(ConcreteDataType::null_datatype())); + assert_eq!(Type::TEXT_ARRAY, type_gt_to_pg(&array).unwrap()); + } + #[test] fn test_schema_convert() { let column_schemas = vec![