Skip to content

Commit

Permalink
Fix support for integer values in float/decimal type columns (#2205)
Browse files Browse the repository at this point in the history
## 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>
  • Loading branch information
abhishekkumams and Aniruddh25 committed May 13, 2024
1 parent 0e4696d commit df426a4
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 3 deletions.
6 changes: 3 additions & 3 deletions src/Core/Services/ExecutionHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -318,9 +318,9 @@ private static void SetContextResult(IMiddlewareContext context, JsonDocument? r
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
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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")]
Expand Down Expand Up @@ -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")]
Expand Down Expand Up @@ -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")]
Expand Down Expand Up @@ -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")]
Expand Down

0 comments on commit df426a4

Please sign in to comment.