diff --git a/datafusion/sqllogictest/src/engines/conversion.rs b/datafusion/sqllogictest/src/engines/conversion.rs index d22b518234803..94002a3e976a9 100644 --- a/datafusion/sqllogictest/src/engines/conversion.rs +++ b/datafusion/sqllogictest/src/engines/conversion.rs @@ -96,7 +96,7 @@ pub(crate) fn arrow_decimal_to_str( } #[cfg(feature = "postgres")] -pub(crate) fn decimal_to_str(value: BigDecimal) -> String { +pub(crate) fn decimal_to_str(value: &BigDecimal) -> String { value.to_plain_string() } @@ -162,4 +162,11 @@ mod tests { "0.12345678901234567890123456789012345678" ); } + + #[cfg(feature = "postgres")] + #[test] + fn test_decimal_to_str() { + let value = BigDecimal::from_str("1.2300").unwrap(); + assert_eq!(decimal_to_str(&value), "1.2300"); + } } diff --git a/datafusion/sqllogictest/src/engines/postgres_engine/mod.rs b/datafusion/sqllogictest/src/engines/postgres_engine/mod.rs index 7ab5f1977d0e4..daa5acf165891 100644 --- a/datafusion/sqllogictest/src/engines/postgres_engine/mod.rs +++ b/datafusion/sqllogictest/src/engines/postgres_engine/mod.rs @@ -377,7 +377,7 @@ fn cell_to_string(row: &SimpleQueryRow, column_type: &Type, idx: usize) -> Strin (&Type::INT4, Some(value)) => value.parse::().unwrap().to_string(), (&Type::INT8, Some(value)) => value.parse::().unwrap().to_string(), (&Type::NUMERIC, Some(value)) => { - decimal_to_str(BigDecimal::from_str(value).unwrap()) + decimal_to_str(&BigDecimal::from_str(value).unwrap()) } // Parse date/time strings explicitly to avoid locale-specific formatting. (&Type::DATE, Some(value)) => NaiveDate::parse_from_str(value, "%Y-%m-%d")