diff --git a/src/Core/Services/ExecutionHelper.cs b/src/Core/Services/ExecutionHelper.cs index 3a33a030cb..8f201b3012 100644 --- a/src/Core/Services/ExecutionHelper.cs +++ b/src/Core/Services/ExecutionHelper.cs @@ -318,9 +318,9 @@ private static bool TryGetPropertyFromParent( SupportedHotChocolateTypes.SHORT_TYPE => ((IntValueNode)value).ToInt16(), SupportedHotChocolateTypes.INT_TYPE => ((IntValueNode)value).ToInt32(), SupportedHotChocolateTypes.LONG_TYPE => ((IntValueNode)value).ToInt64(), - SupportedHotChocolateTypes.SINGLE_TYPE => ((FloatValueNode)value).ToSingle(), - SupportedHotChocolateTypes.FLOAT_TYPE => ((FloatValueNode)value).ToDouble(), - SupportedHotChocolateTypes.DECIMAL_TYPE => ((FloatValueNode)value).ToDecimal(), + SupportedHotChocolateTypes.SINGLE_TYPE => value is IntValueNode intValueNode ? intValueNode.ToSingle() : ((FloatValueNode)value).ToSingle(), + SupportedHotChocolateTypes.FLOAT_TYPE => value is IntValueNode intValueNode ? intValueNode.ToDouble() : ((FloatValueNode)value).ToDouble(), + SupportedHotChocolateTypes.DECIMAL_TYPE => value is IntValueNode intValueNode ? intValueNode.ToDecimal() : ((FloatValueNode)value).ToDecimal(), SupportedHotChocolateTypes.UUID_TYPE => Guid.TryParse(value.Value!.ToString(), out Guid guidValue) ? guidValue : value.Value, _ => value.Value }; diff --git a/src/Service.Tests/SqlTests/GraphQLSupportedTypesTests/GraphQLSupportedTypesTestsBase.cs b/src/Service.Tests/SqlTests/GraphQLSupportedTypesTests/GraphQLSupportedTypesTestsBase.cs index 0f121f21c1..da6a1d3257 100644 --- a/src/Service.Tests/SqlTests/GraphQLSupportedTypesTests/GraphQLSupportedTypesTestsBase.cs +++ b/src/Service.Tests/SqlTests/GraphQLSupportedTypesTests/GraphQLSupportedTypesTestsBase.cs @@ -325,6 +325,7 @@ public async Task TestTimeTypePrecisionCheck(string gqlValue, int count) [DataRow(STRING_TYPE, "null")] [DataRow(SINGLE_TYPE, "-3.33")] [DataRow(SINGLE_TYPE, "2E35")] + [DataRow(SINGLE_TYPE, "123")] [DataRow(SINGLE_TYPE, "null")] [DataRow(FLOAT_TYPE, "-3.33")] [DataRow(FLOAT_TYPE, "2E150")] @@ -413,8 +414,15 @@ public async Task InsertInvalidTimeIntoTimeTypeColumn(string type, string value) [DataRow(INT_TYPE, 9999)] [DataRow(LONG_TYPE, 9000000000000000000)] [DataRow(STRING_TYPE, "aaaaaaaaaa")] + [DataRow(SINGLE_TYPE, 123.1)] + [DataRow(SINGLE_TYPE, 123)] + [DataRow(SINGLE_TYPE, null)] [DataRow(FLOAT_TYPE, -3.33)] + [DataRow(FLOAT_TYPE, 123)] + [DataRow(FLOAT_TYPE, null)] [DataRow(DECIMAL_TYPE, 1222222.00000929292)] + [DataRow(DECIMAL_TYPE, 123)] + [DataRow(DECIMAL_TYPE, null)] [DataRow(BOOLEAN_TYPE, true)] [DataRow(DATETIMEOFFSET_TYPE, "1999-01-08 10:23:54+8:00")] [DataRow(DATETIME_TYPE, "1999-01-08 10:23:54")] @@ -464,13 +472,16 @@ public async Task InsertIntoTypeColumnWithArgument(string type, object value) [DataRow(STRING_TYPE, "null")] [DataRow(SINGLE_TYPE, "-3.33")] [DataRow(SINGLE_TYPE, "2E35")] + [DataRow(SINGLE_TYPE, "123")] [DataRow(SINGLE_TYPE, "null")] [DataRow(FLOAT_TYPE, "-3.33")] [DataRow(FLOAT_TYPE, "2E150")] [DataRow(FLOAT_TYPE, "null")] + [DataRow(FLOAT_TYPE, "123")] [DataRow(DECIMAL_TYPE, "-3.333333")] [DataRow(DECIMAL_TYPE, "1222222.00000929292")] [DataRow(DECIMAL_TYPE, "null")] + [DataRow(DECIMAL_TYPE, "123")] [DataRow(BOOLEAN_TYPE, "true")] [DataRow(BOOLEAN_TYPE, "false")] [DataRow(BOOLEAN_TYPE, "null")] @@ -512,8 +523,15 @@ public async Task UpdateTypeColumn(string type, string value) [DataRow(INT_TYPE, 9999)] [DataRow(LONG_TYPE, 9000000000000000000)] [DataRow(STRING_TYPE, "aaaaaaaaaa")] + [DataRow(SINGLE_TYPE, 2E35)] + [DataRow(SINGLE_TYPE, 123)] + [DataRow(SINGLE_TYPE, null)] [DataRow(FLOAT_TYPE, -3.33)] + [DataRow(FLOAT_TYPE, 123)] + [DataRow(FLOAT_TYPE, null)] [DataRow(DECIMAL_TYPE, 1222222.00000929292)] + [DataRow(DECIMAL_TYPE, 123)] + [DataRow(DECIMAL_TYPE, null)] [DataRow(BOOLEAN_TYPE, true)] [DataRow(DATETIME_TYPE, "1999-01-08 10:23:54")] [DataRow(DATETIMEOFFSET_TYPE, "1999-01-08 10:23:54+8:00")]