diff --git a/query-engine/connector-test-kit-rs/query-engine-tests/tests/writes/data_types/native_types/mysql.rs b/query-engine/connector-test-kit-rs/query-engine-tests/tests/writes/data_types/native_types/mysql.rs index c29b12d5b73..4d3c3137f4a 100644 --- a/query-engine/connector-test-kit-rs/query-engine-tests/tests/writes/data_types/native_types/mysql.rs +++ b/query-engine/connector-test-kit-rs/query-engine-tests/tests/writes/data_types/native_types/mysql.rs @@ -198,6 +198,35 @@ mod mysql { Ok(()) } + fn schema_decimal_vitess() -> String { + let schema = indoc! { + r#"model Model { + #id(id, String, @id, @default(cuid())) + decLarge Decimal @test.Decimal(20, 10) + }"# + }; + + schema.to_owned() + } + + #[connector_test(only(Vitess), schema(schema_decimal_vitess))] + async fn native_decimal_vitess_precision(runner: Runner) -> TestResult<()> { + insta::assert_snapshot!( + run_query!(&runner, r#"mutation { + createOneModel( + data: { + decLarge: "131603421.38724228" + } + ) { + decLarge + } + }"#), + @r###"{"data":{"createOneModel":{"decLarge":"131603421.38724228"}}}"### + ); + + Ok(()) + } + fn schema_string() -> String { let schema = indoc! { r#"model Model { diff --git a/query-engine/driver-adapters/src/conversion.rs b/query-engine/driver-adapters/src/conversion.rs index f65cc955fb2..8344464562b 100644 --- a/query-engine/driver-adapters/src/conversion.rs +++ b/query-engine/driver-adapters/src/conversion.rs @@ -75,11 +75,8 @@ pub fn values_to_js_args(values: &[quaint::Value<'_>]) -> serde_json::Result JSArg::Buffer(bytes.to_vec()), None => JsonValue::Null.into(), }, - quaint_value @ quaint::ValueType::Numeric(bd) => match bd { - Some(bd) => match bd.to_string().parse::() { - Ok(double) => JSArg::from(JsonValue::from(double)), - Err(_) => JSArg::from(JsonValue::from(quaint_value.clone())), - }, + quaint::ValueType::Numeric(bd) => match bd { + Some(bd) => JSArg::RawString(bd.to_string()), None => JsonValue::Null.into(), }, quaint::ValueType::Array(Some(items)) => JSArg::Array(values_to_js_args(items)?), diff --git a/query-engine/driver-adapters/src/conversion/postgres.rs b/query-engine/driver-adapters/src/conversion/postgres.rs index 21b1ec6b2fb..abb09a57f37 100644 --- a/query-engine/driver-adapters/src/conversion/postgres.rs +++ b/query-engine/driver-adapters/src/conversion/postgres.rs @@ -37,10 +37,6 @@ pub fn values_to_js_args(values: &[quaint::Value<'_>]) -> serde_json::Result JSArg::Buffer(bytes.to_vec()), None => JsonValue::Null.into(), }, - (quaint::ValueType::Numeric(bd), _) => match bd { - Some(bd) => JSArg::RawString(bd.to_string()), - None => JsonValue::Null.into(), - }, (quaint::ValueType::Array(Some(items)), _) => JSArg::Array(values_to_js_args(items)?), (quaint_value, _) => JSArg::from(JsonValue::from(quaint_value.clone())), };