Skip to content

Commit df426a4

Browse files
Fix support for integer values in float/decimal type columns (#2205)
## Why make this change? - Closes #1629 - Unable to cast object of type 'HotChocolate.Language.IntValueNode' to type 'HotChocolate.Language.FloatValueNode', when using Integer values for float/decimal/single column types ## What is this change? - using `float.Parse()` and `decimal.Parse()` which automatically takes care of int values. ## How was this tested? - Added new test data points in the existing tests for insertion/updation of float/decimal/single type columns with Integer values ## Sample Request(s) ### Before: ![image](https://github.com/Azure/data-api-builder/assets/102276754/4d08254e-2fe0-458a-b0fc-9974c2e66caa) ![image](https://github.com/Azure/data-api-builder/assets/102276754/288c05aa-6f65-456f-9d81-29a71e5c6606) ### After: ![image](https://github.com/Azure/data-api-builder/assets/102276754/36da5645-8f51-45e2-9b46-bfa29c8802e1) ![image](https://github.com/Azure/data-api-builder/assets/102276754/15f9cd93-9f26-4b64-85d7-c79e2f1ad051) --------- Co-authored-by: Aniruddh Munde <anmunde@microsoft.com>
1 parent 0e4696d commit df426a4

File tree

2 files changed

+21
-3
lines changed

2 files changed

+21
-3
lines changed

src/Core/Services/ExecutionHelper.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -318,9 +318,9 @@ private static bool TryGetPropertyFromParent(
318318
SupportedHotChocolateTypes.SHORT_TYPE => ((IntValueNode)value).ToInt16(),
319319
SupportedHotChocolateTypes.INT_TYPE => ((IntValueNode)value).ToInt32(),
320320
SupportedHotChocolateTypes.LONG_TYPE => ((IntValueNode)value).ToInt64(),
321-
SupportedHotChocolateTypes.SINGLE_TYPE => ((FloatValueNode)value).ToSingle(),
322-
SupportedHotChocolateTypes.FLOAT_TYPE => ((FloatValueNode)value).ToDouble(),
323-
SupportedHotChocolateTypes.DECIMAL_TYPE => ((FloatValueNode)value).ToDecimal(),
321+
SupportedHotChocolateTypes.SINGLE_TYPE => value is IntValueNode intValueNode ? intValueNode.ToSingle() : ((FloatValueNode)value).ToSingle(),
322+
SupportedHotChocolateTypes.FLOAT_TYPE => value is IntValueNode intValueNode ? intValueNode.ToDouble() : ((FloatValueNode)value).ToDouble(),
323+
SupportedHotChocolateTypes.DECIMAL_TYPE => value is IntValueNode intValueNode ? intValueNode.ToDecimal() : ((FloatValueNode)value).ToDecimal(),
324324
SupportedHotChocolateTypes.UUID_TYPE => Guid.TryParse(value.Value!.ToString(), out Guid guidValue) ? guidValue : value.Value,
325325
_ => value.Value
326326
};

src/Service.Tests/SqlTests/GraphQLSupportedTypesTests/GraphQLSupportedTypesTestsBase.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,7 @@ public async Task TestTimeTypePrecisionCheck(string gqlValue, int count)
325325
[DataRow(STRING_TYPE, "null")]
326326
[DataRow(SINGLE_TYPE, "-3.33")]
327327
[DataRow(SINGLE_TYPE, "2E35")]
328+
[DataRow(SINGLE_TYPE, "123")]
328329
[DataRow(SINGLE_TYPE, "null")]
329330
[DataRow(FLOAT_TYPE, "-3.33")]
330331
[DataRow(FLOAT_TYPE, "2E150")]
@@ -413,8 +414,15 @@ public async Task InsertInvalidTimeIntoTimeTypeColumn(string type, string value)
413414
[DataRow(INT_TYPE, 9999)]
414415
[DataRow(LONG_TYPE, 9000000000000000000)]
415416
[DataRow(STRING_TYPE, "aaaaaaaaaa")]
417+
[DataRow(SINGLE_TYPE, 123.1)]
418+
[DataRow(SINGLE_TYPE, 123)]
419+
[DataRow(SINGLE_TYPE, null)]
416420
[DataRow(FLOAT_TYPE, -3.33)]
421+
[DataRow(FLOAT_TYPE, 123)]
422+
[DataRow(FLOAT_TYPE, null)]
417423
[DataRow(DECIMAL_TYPE, 1222222.00000929292)]
424+
[DataRow(DECIMAL_TYPE, 123)]
425+
[DataRow(DECIMAL_TYPE, null)]
418426
[DataRow(BOOLEAN_TYPE, true)]
419427
[DataRow(DATETIMEOFFSET_TYPE, "1999-01-08 10:23:54+8:00")]
420428
[DataRow(DATETIME_TYPE, "1999-01-08 10:23:54")]
@@ -464,13 +472,16 @@ public async Task InsertIntoTypeColumnWithArgument(string type, object value)
464472
[DataRow(STRING_TYPE, "null")]
465473
[DataRow(SINGLE_TYPE, "-3.33")]
466474
[DataRow(SINGLE_TYPE, "2E35")]
475+
[DataRow(SINGLE_TYPE, "123")]
467476
[DataRow(SINGLE_TYPE, "null")]
468477
[DataRow(FLOAT_TYPE, "-3.33")]
469478
[DataRow(FLOAT_TYPE, "2E150")]
470479
[DataRow(FLOAT_TYPE, "null")]
480+
[DataRow(FLOAT_TYPE, "123")]
471481
[DataRow(DECIMAL_TYPE, "-3.333333")]
472482
[DataRow(DECIMAL_TYPE, "1222222.00000929292")]
473483
[DataRow(DECIMAL_TYPE, "null")]
484+
[DataRow(DECIMAL_TYPE, "123")]
474485
[DataRow(BOOLEAN_TYPE, "true")]
475486
[DataRow(BOOLEAN_TYPE, "false")]
476487
[DataRow(BOOLEAN_TYPE, "null")]
@@ -512,8 +523,15 @@ public async Task UpdateTypeColumn(string type, string value)
512523
[DataRow(INT_TYPE, 9999)]
513524
[DataRow(LONG_TYPE, 9000000000000000000)]
514525
[DataRow(STRING_TYPE, "aaaaaaaaaa")]
526+
[DataRow(SINGLE_TYPE, 2E35)]
527+
[DataRow(SINGLE_TYPE, 123)]
528+
[DataRow(SINGLE_TYPE, null)]
515529
[DataRow(FLOAT_TYPE, -3.33)]
530+
[DataRow(FLOAT_TYPE, 123)]
531+
[DataRow(FLOAT_TYPE, null)]
516532
[DataRow(DECIMAL_TYPE, 1222222.00000929292)]
533+
[DataRow(DECIMAL_TYPE, 123)]
534+
[DataRow(DECIMAL_TYPE, null)]
517535
[DataRow(BOOLEAN_TYPE, true)]
518536
[DataRow(DATETIME_TYPE, "1999-01-08 10:23:54")]
519537
[DataRow(DATETIMEOFFSET_TYPE, "1999-01-08 10:23:54+8:00")]

0 commit comments

Comments
 (0)