Skip to content

Commit 9d4cb77

Browse files
authored
fix(query): return full float value in query results (#9492)
**Description** Updates `float` formatting to express full values. Switches from `%f` to `%g`, which according to [Golang docs](https://pkg.go.dev/fmt) will use as many digits as necessary to express the value. >for %g [the default precision] is the smallest number of digits necessary to identify the value uniquely. Closes #9491. **Discussion** This changes the output format but not semantics of float values in result data. Currently floats have a fixed precision of 6, filled with trailing zeros as necessary. ```json { "float": 1.000000 } ``` The new specifier `%g` drops unnecessary trailing zeros. ```json { "float": 1 } ``` I think this OK as they are semantically equivalent. Since unnecessary characters are dropped, it also saves bytes on the wire. It also aligns with the `bigfloat` format, which never gives trailing zeros. **Checklist** - [x] Code compiles correctly and linting passes locally - [x] For all _code_ changes, an entry added to the `CHANGELOG.md` file describing and linking to this PR - [x] Tests added for new functionality, or regression tests for bug fixes added as applicable
1 parent 5d6928f commit 9d4cb77

File tree

12 files changed

+696
-685
lines changed

12 files changed

+696
-685
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ adhere to [Semantic Versioning](https://semver.org) starting `v22.0.0`.
99

1010
- **Fixed**
1111
- fix(core): fix panic in verifyUniqueWithinMutation when mutation is conditionally pruned (#9450)
12+
- fix(query): return full float value in query results (#9492)
1213

1314
## [v24.X.X] - YYYY-MM-DD
1415

graphql/e2e/common/fragment.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ func fragmentInQuery(t *testing.T) {
9999
"queryStarship":[{
100100
"id":"%s",
101101
"name":"Millennium Falcon",
102-
"length":2.000000
102+
"length":2
103103
}]
104104
}`, newStarship.ID)
105105

@@ -270,9 +270,9 @@ func fragmentInQueryOnInterface(t *testing.T) {
270270
"__typename":"Starship",
271271
"id":"%s",
272272
"name":"Millennium Falcon",
273-
"length":2.000000
273+
"length":2
274274
}],
275-
"totalCredits":10.000000,
275+
"totalCredits":10,
276276
"ename":"Han_employee"
277277
},
278278
{
@@ -325,7 +325,7 @@ func fragmentInQueryOnInterface(t *testing.T) {
325325
"qcRep1":[
326326
{
327327
"name":"Han",
328-
"totalCredits":10.000000
328+
"totalCredits":10
329329
},
330330
{
331331
"name":"R2-D2",
@@ -334,7 +334,7 @@ func fragmentInQueryOnInterface(t *testing.T) {
334334
],
335335
"qcRep2":[
336336
{
337-
"totalCredits":10.000000,
337+
"totalCredits":10,
338338
"name":"Han"
339339
},
340340
{
@@ -547,9 +547,9 @@ func fragmentInQueryOnObject(t *testing.T) {
547547
"__typename":"Starship",
548548
"id":"%s",
549549
"name":"Millennium Falcon",
550-
"length":2.000000
550+
"length":2
551551
}],
552-
"totalCredits":10.000000,
552+
"totalCredits":10,
553553
"ename":"Han_employee"
554554
}
555555
]
@@ -590,7 +590,7 @@ func fragmentInQueryOnObject(t *testing.T) {
590590
{"id":"%s",
591591
"__typename":"Starship",
592592
"name":"Millennium Falcon",
593-
"length":2.000000}]
593+
"length":2}]
594594
}
595595
]
596596
}

query/fastjson_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ func TestSubgraphToFastJSON(t *testing.T) {
5959

6060
t.Run("With a valid float result", func(t *testing.T) {
6161
sg := subgraphWithSingleResultAndSingleValue(task.FromFloat(42.0))
62-
assertJSON(t, `{"query":[{"val":42.000000}]}`, sg)
62+
assertJSON(t, `{"query":[{"val":42}]}`, sg)
6363
})
6464

6565
t.Run("With invalid floating points", func(t *testing.T) {

query/outputnode.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -670,7 +670,7 @@ func valToBytes(v types.Val) ([]byte, error) {
670670
return nil, errors.New("Unsupported floating point number in float field")
671671
}
672672

673-
return []byte(fmt.Sprintf("%f", f)), nil
673+
return []byte(fmt.Sprintf("%g", f)), nil
674674
case types.BoolID:
675675
if v.Value.(bool) {
676676
return boolTrue, nil

query/outputnode_test.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -294,3 +294,13 @@ func TestMarshalTimeJson(t *testing.T) {
294294
require.Equal(t, tc.out, string(out))
295295
}
296296
}
297+
298+
func TestMarshalFloat(t *testing.T) {
299+
var (
300+
in = types.Val{Tid: types.FloatID, Value: 0.123456789012345}
301+
out = "0.123456789012345"
302+
)
303+
result, err := valToBytes(in)
304+
require.NoError(t, err)
305+
require.Equal(t, out, string(result))
306+
}

query/query0_test.go

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -625,7 +625,7 @@ func TestLevelBasedFacetVarAggSum(t *testing.T) {
625625
"path|weight": 0.7
626626
}
627627
],
628-
"sumw": 0.8
628+
"sumw": 0.7999999999999999
629629
}
630630
]
631631
}
@@ -661,7 +661,7 @@ func TestLevelBasedFacetVarSum(t *testing.T) {
661661
"path": [
662662
{
663663
"count(follow)": 1,
664-
"val(L4)": 1.2,
664+
"val(L4)": 1.2000000000000002,
665665
"path|weight": 0.1
666666
},
667667
{
@@ -692,7 +692,7 @@ func TestLevelBasedFacetVarSum(t *testing.T) {
692692
},
693693
{
694694
"name": "Matt",
695-
"val(L4)": 1.2
695+
"val(L4)": 1.2000000000000002
696696
}
697697
]
698698
}
@@ -914,19 +914,19 @@ func TestQueryConstMathVal(t *testing.T) {
914914
"AgeOrder":[
915915
{
916916
"name":"Michonne",
917-
"val(a)":9.000000
917+
"val(a)":9
918918
},
919919
{
920920
"name":"Rick Grimes",
921-
"val(a)":9.000000
921+
"val(a)":9
922922
},
923923
{
924924
"name":"Andrea",
925-
"val(a)":9.000000
925+
"val(a)":9
926926
},
927927
{
928928
"name":"Andrea With no friends",
929-
"val(a)":9.000000
929+
"val(a)":9
930930
}
931931
]
932932
}
@@ -986,7 +986,7 @@ func TestQueryVarValAggNestedFuncConst(t *testing.T) {
986986
`
987987
js := processQueryNoErr(t, query)
988988
require.JSONEq(t,
989-
`{"data": {"MaxMe":[{"name":"Rick Grimes","val(a)":15,"val(n)":38,"val(p)":25.000000,"val(s)":38},{"name":"Andrea","val(a)":19,"val(n)":15,"val(p)":29.000000,"val(s)":15},{"name":"Michonne","val(a)":38,"val(n)":15,"val(p)":52.000000,"val(s)":19}],"MinMe":[{"name":"Rick Grimes","val(a)":15,"val(n)":38,"val(q)":-21660.000000,"val(s)":38},{"name":"Michonne","val(a)":38,"val(n)":15,"val(q)":-10830.000000,"val(s)":19},{"name":"Andrea","val(a)":19,"val(n)":15,"val(q)":-4275.000000,"val(s)":15}]}}`,
989+
`{"data": {"MaxMe":[{"name":"Rick Grimes","val(a)":15,"val(n)":38,"val(p)":25,"val(s)":38},{"name":"Andrea","val(a)":19,"val(n)":15,"val(p)":29,"val(s)":15},{"name":"Michonne","val(a)":38,"val(n)":15,"val(p)":52,"val(s)":19}],"MinMe":[{"name":"Rick Grimes","val(a)":15,"val(n)":38,"val(q)":-21660,"val(s)":38},{"name":"Michonne","val(a)":38,"val(n)":15,"val(q)":-10830,"val(s)":19},{"name":"Andrea","val(a)":19,"val(n)":15,"val(q)":-4275,"val(s)":15}]}}`,
990990
js)
991991
}
992992

@@ -1057,7 +1057,7 @@ func TestQueryVarValAggNestedFuncConditional(t *testing.T) {
10571057
`
10581058
js := processQueryNoErr(t, query)
10591059
require.JSONEq(t,
1060-
`{"data": {"ExpMe":[{"name":"Michonne","val(a)":38,"val(condExp)":1.000000,"val(n)":15},{"name":"Rick Grimes","val(a)":15,"val(condExp)":1.000000,"val(n)":38},{"name":"Andrea","val(a)":19,"val(condExp)":1.000000,"val(n)":15}],"LogMe":[{"name":"Michonne","val(a)":38,"val(condLog)":1.682606,"val(n)":15},{"name":"Andrea","val(a)":19,"val(condLog)":1.682606,"val(n)":15},{"name":"Rick Grimes","val(a)":15,"val(condLog)":2.260159,"val(n)":38}]}}`,
1060+
`{"data": {"ExpMe":[{"name":"Michonne","val(a)":38,"val(condExp)":1,"val(n)":15},{"name":"Rick Grimes","val(a)":15,"val(condExp)":1,"val(n)":38},{"name":"Andrea","val(a)":19,"val(condExp)":1,"val(n)":15}],"LogMe":[{"name":"Michonne","val(a)":38,"val(condLog)":1.6826061944859854,"val(n)":15},{"name":"Andrea","val(a)":19,"val(condLog)":1.6826061944859854,"val(n)":15},{"name":"Rick Grimes","val(a)":15,"val(condLog)":2.2601593585085435,"val(n)":38}]}}`,
10611061
js)
10621062
}
10631063

@@ -1091,7 +1091,7 @@ func TestQueryVarValAggNestedFuncConditional2(t *testing.T) {
10911091
`
10921092
js := processQueryNoErr(t, query)
10931093
require.JSONEq(t,
1094-
`{"data": {"ExpMe":[{"name":"Rick Grimes","val(a)":15,"val(condExp)":1.000000,"val(n)":38},{"name":"Andrea","val(a)":19,"val(condExp)":1.000000,"val(n)":15},{"name":"Michonne","val(a)":38,"val(condExp)":5.477226,"val(n)":15}],"LogMe":[{"name":"Rick Grimes","val(a)":15,"val(condLog)":1.000000,"val(n)":38},{"name":"Andrea","val(a)":19,"val(condLog)":1.000000,"val(n)":15},{"name":"Michonne","val(a)":38,"val(condLog)":7.500000,"val(n)":15}]}}`,
1094+
`{"data": {"ExpMe":[{"name":"Rick Grimes","val(a)":15,"val(condExp)":1,"val(n)":38},{"name":"Andrea","val(a)":19,"val(condExp)":1,"val(n)":15},{"name":"Michonne","val(a)":38,"val(condExp)":5.477225575051661,"val(n)":15}],"LogMe":[{"name":"Rick Grimes","val(a)":15,"val(condLog)":1,"val(n)":38},{"name":"Andrea","val(a)":19,"val(condLog)":1,"val(n)":15},{"name":"Michonne","val(a)":38,"val(condLog)":7.5,"val(n)":15}]}}`,
10951095
js)
10961096
}
10971097

@@ -1128,7 +1128,7 @@ func TestQueryVarValAggNestedFuncUnary(t *testing.T) {
11281128
`
11291129
js := processQueryNoErr(t, query)
11301130
require.JSONEq(t,
1131-
`{"data": {"ExpMe":[{"name":"Rick Grimes","val(a)":15,"val(combiExp)":16.000000,"val(n)":38,"val(s)":38},{"name":"Andrea","val(a)":19,"val(combiExp)":20.000000,"val(n)":15,"val(s)":15},{"name":"Michonne","val(a)":38,"val(combiExp)":92.598150,"val(n)":15,"val(s)":19}],"LogMe":[{"name":"Rick Grimes","val(a)":15,"val(combiLog)":-179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000,"val(n)":38,"val(s)":38},{"name":"Andrea","val(a)":19,"val(combiLog)":-179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000,"val(n)":15,"val(s)":15},{"name":"Michonne","val(a)":38,"val(combiLog)":39.386294,"val(n)":15,"val(s)":19}]}}`,
1131+
`{"data": {"ExpMe":[{"name":"Rick Grimes","val(a)":15,"val(combiExp)":16,"val(n)":38,"val(s)":38},{"name":"Andrea","val(a)":19,"val(combiExp)":20,"val(n)":15,"val(s)":15},{"name":"Michonne","val(a)":38,"val(combiExp)":92.59815003314424,"val(n)":15,"val(s)":19}],"LogMe":[{"name":"Rick Grimes","val(a)":15,"val(combiLog)":-179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368,"val(n)":38,"val(s)":38},{"name":"Andrea","val(a)":19,"val(combiLog)":-179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368,"val(n)":15,"val(s)":15},{"name":"Michonne","val(a)":38,"val(combiLog)":39.38629436111989,"val(n)":15,"val(s)":19}]}}`,
11321132
js)
11331133
}
11341134

@@ -1257,7 +1257,7 @@ func TestQueryVarValAggMul(t *testing.T) {
12571257
`
12581258
js := processQueryNoErr(t, query)
12591259
require.JSONEq(t,
1260-
`{"data": {"me":[{"name":"Andrea","val(mul)":19.000000,"val(n)":19,"val(s)":1},{"name":"Rick Grimes","val(mul)":15.000000,"val(n)":15,"val(s)":1},{"name":"Glenn Rhee","val(mul)":0.000000,"val(n)":15,"val(s)":0},{"name":"Daryl Dixon","val(mul)":0.000000,"val(n)":17,"val(s)":0},{"val(mul)":0.000000,"val(s)":0}]}}`,
1260+
`{"data": {"me":[{"name":"Andrea","val(mul)":19,"val(n)":19,"val(s)":1},{"name":"Rick Grimes","val(mul)":15,"val(n)":15,"val(s)":1},{"name":"Glenn Rhee","val(mul)":0,"val(n)":15,"val(s)":0},{"name":"Daryl Dixon","val(mul)":0,"val(n)":17,"val(s)":0},{"val(mul)":0,"val(s)":0}]}}`,
12611261
js)
12621262
}
12631263

@@ -1371,7 +1371,7 @@ func TestQueryVarValAggOrderDesc(t *testing.T) {
13711371
`
13721372
js := processQueryNoErr(t, query)
13731373
require.JSONEq(t,
1374-
`{"data": {"info":[{"friend":[{"age":15,"count(friend)":1,"val(sum)":16.000000},{"age":15,"count(friend)":0,"val(sum)":15.000000},{"age":17,"count(friend)":0,"val(sum)":17.000000},{"age":19,"count(friend)":1,"val(sum)":20.000000},{"count(friend)":0,"val(sum)":0.000000}]}],"me":[{"age":19,"count(friend)":1,"name":"Andrea"},{"age":17,"count(friend)":0,"name":"Daryl Dixon"},{"age":15,"count(friend)":1,"name":"Rick Grimes"},{"age":15,"count(friend)":0,"name":"Glenn Rhee"},{"count(friend)":0}]}}`,
1374+
`{"data": {"info":[{"friend":[{"age":15,"count(friend)":1,"val(sum)":16},{"age":15,"count(friend)":0,"val(sum)":15},{"age":17,"count(friend)":0,"val(sum)":17},{"age":19,"count(friend)":1,"val(sum)":20},{"count(friend)":0,"val(sum)":0}]}],"me":[{"age":19,"count(friend)":1,"name":"Andrea"},{"age":17,"count(friend)":0,"name":"Daryl Dixon"},{"age":15,"count(friend)":1,"name":"Rick Grimes"},{"age":15,"count(friend)":0,"name":"Glenn Rhee"},{"count(friend)":0}]}}`,
13751375
js)
13761376
}
13771377

@@ -1395,7 +1395,7 @@ func TestQueryVarValAggOrderAsc(t *testing.T) {
13951395
`
13961396
js := processQueryNoErr(t, query)
13971397
require.JSONEq(t,
1398-
`{"data": {"me":[{"age":15,"name":"Rick Grimes","survival_rate":1.600000},{"age":15,"name":"Glenn Rhee","survival_rate":1.600000},{"age":17,"name":"Daryl Dixon","survival_rate":1.600000},{"age":19,"name":"Andrea","survival_rate":1.600000}]}}`,
1398+
`{"data": {"me":[{"age":15,"name":"Rick Grimes","survival_rate":1.6},{"age":15,"name":"Glenn Rhee","survival_rate":1.6},{"age":17,"name":"Daryl Dixon","survival_rate":1.6},{"age":19,"name":"Andrea","survival_rate":1.6}]}}`,
13991399
js)
14001400
}
14011401

@@ -2140,7 +2140,7 @@ func TestVarInIneqScore(t *testing.T) {
21402140
}
21412141
`
21422142
js := processQueryNoErr(t, query)
2143-
require.JSONEq(t, `{"data": {"me":[{"name":"Daryl Dixon","val(a)":17,"val(s)":0,"val(score)":35.000000},{"name":"Andrea","val(a)":19,"val(s)":1,"val(score)":42.000000}]}}`,
2143+
require.JSONEq(t, `{"data": {"me":[{"name":"Daryl Dixon","val(a)":17,"val(s)":0,"val(score)":35},{"name":"Andrea","val(a)":19,"val(s)":1,"val(score)":42}]}}`,
21442144
js)
21452145
}
21462146

@@ -3082,7 +3082,7 @@ func TestFilterNonIndexedPredicate(t *testing.T) {
30823082
}
30833083
}
30843084
`,
3085-
`{"data":{"me":[{"noindex_salary":589.040000},{"noindex_salary":967.680000}]}}`,
3085+
`{"data":{"me":[{"noindex_salary":589.04},{"noindex_salary":967.68}]}}`,
30863086
},
30873087
{
30883088
`Test gt filter on non-indexed float`,
@@ -3093,7 +3093,7 @@ func TestFilterNonIndexedPredicate(t *testing.T) {
30933093
}
30943094
}
30953095
`,
3096-
`{"data":{"me":[{"noindex_salary":967.680000}]}}`,
3096+
`{"data":{"me":[{"noindex_salary":967.68}]}}`,
30973097
},
30983098
{
30993099
`Test le filter on non-indexed float`,
@@ -3104,7 +3104,7 @@ func TestFilterNonIndexedPredicate(t *testing.T) {
31043104
}
31053105
}
31063106
`,
3107-
`{"data":{"me":[{"noindex_salary":501.230000},{"noindex_salary":589.040000},{"noindex_salary":459.470000}]}}`,
3107+
`{"data":{"me":[{"noindex_salary":501.23},{"noindex_salary":589.04},{"noindex_salary":459.47}]}}`,
31083108
},
31093109
{
31103110
`Test lt filter on non-indexed float`,
@@ -3115,7 +3115,7 @@ func TestFilterNonIndexedPredicate(t *testing.T) {
31153115
}
31163116
},
31173117
`,
3118-
`{"data":{"me":[{"noindex_salary":501.230000},{"noindex_salary":459.470000}]}}`,
3118+
`{"data":{"me":[{"noindex_salary":501.23},{"noindex_salary":459.47}]}}`,
31193119
},
31203120
{
31213121
`Test eq filter on non-indexed float`,
@@ -3126,7 +3126,7 @@ func TestFilterNonIndexedPredicate(t *testing.T) {
31263126
}
31273127
}
31283128
`,
3129-
`{"data":{"me":[{"noindex_salary":589.040000}]}}`,
3129+
`{"data":{"me":[{"noindex_salary":589.04}]}}`,
31303130
},
31313131
{
31323132
`Test eq filter on non-indexed bool`,
@@ -3153,7 +3153,7 @@ func TestFilterNonIndexedPredicate(t *testing.T) {
31533153
}
31543154
}
31553155
`,
3156-
`{"data":{"me":[{"friend":[{"name":"Rick Grimes","survival_rate":1.600000},{"name":"Glenn Rhee","survival_rate":1.600000},{"name":"Daryl Dixon","survival_rate":1.600000},{"name":"Andrea","survival_rate":1.600000}]}]}}`,
3156+
`{"data":{"me":[{"friend":[{"name":"Rick Grimes","survival_rate":1.6},{"name":"Glenn Rhee","survival_rate":1.6},{"name":"Daryl Dixon","survival_rate":1.6},{"name":"Andrea","survival_rate":1.6}]}]}}`,
31573157
},
31583158
}
31593159

@@ -3271,7 +3271,7 @@ func TestBetweenFloat(t *testing.T) {
32713271
}
32723272
}
32733273
`,
3274-
`{"data":{"me":[{"uid":"0x2710","salary":10000.000000},{"uid":"0x2712","salary":10002.000000}]}}`,
3274+
`{"data":{"me":[{"uid":"0x2710","salary":10000},{"uid":"0x2712","salary":10002}]}}`,
32753275
},
32763276
{
32773277
`Test between salary 1 result`,
@@ -3283,7 +3283,7 @@ func TestBetweenFloat(t *testing.T) {
32833283
}
32843284
}
32853285
`,
3286-
`{"data":{"me":[{"uid":"0x2712","salary":10002.000000}]}}`,
3286+
`{"data":{"me":[{"uid":"0x2712","salary":10002}]}}`,
32873287
},
32883288
{
32893289
`Test between salary empty response`,
@@ -3319,7 +3319,7 @@ func TestBetweenFloat(t *testing.T) {
33193319
}
33203320
}
33213321
`,
3322-
`{"data":{"me":[{"uid":"0x4e20","average":[46.930000,55.100000]},{"uid":"0x4e21","average":[35.200000,49.330000]}]}}`,
3322+
`{"data":{"me":[{"uid":"0x4e20","average":[46.93,55.1]},{"uid":"0x4e21","average":[35.2,49.33]}]}}`,
33233323
},
33243324
}
33253325

query/query1_test.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -806,7 +806,7 @@ func TestMathVarAlias(t *testing.T) {
806806
}
807807
`
808808
js := processQueryNoErr(t, query)
809-
require.JSONEq(t, `{"data": {"f":[{"a":76.000000,"age":38},{"a":30.000000,"age":15},{"a":38.000000,"age":19}]}}`, js)
809+
require.JSONEq(t, `{"data": {"f":[{"a":76,"age":38},{"a":30,"age":15},{"a":38,"age":19}]}}`, js)
810810
}
811811

812812
func TestMathVarAlias2(t *testing.T) {
@@ -824,7 +824,7 @@ func TestMathVarAlias2(t *testing.T) {
824824
}
825825
`
826826
js := processQueryNoErr(t, query)
827-
require.JSONEq(t, `{"data": {"me":[{"age":38,"doubleAge":76.000000},{"age":15,"doubleAge":30.000000},{"age":19,"doubleAge":38.000000}],"me2":[{"val(a)":76.000000},{"val(a)":30.000000},{"val(a)":38.000000}]}}`, js)
827+
require.JSONEq(t, `{"data": {"me":[{"age":38,"doubleAge":76},{"age":15,"doubleAge":30},{"age":19,"doubleAge":38}],"me2":[{"val(a)":76},{"val(a)":30},{"val(a)":38}]}}`, js)
828828
}
829829

830830
func TestMathVar3(t *testing.T) {
@@ -842,7 +842,7 @@ func TestMathVar3(t *testing.T) {
842842
}
843843
`
844844
js := processQueryNoErr(t, query)
845-
require.JSONEq(t, `{"data": {"me":[{"age":38,"val(a)":76.000000},{"age":15,"val(a)":30.000000},{"age":19,"val(a)":38.000000}],"me2":[{"val(a)":76.000000},{"val(a)":30.000000},{"val(a)":38.000000}]}}`, js)
845+
require.JSONEq(t, `{"data": {"me":[{"age":38,"val(a)":76},{"age":15,"val(a)":30},{"age":19,"val(a)":38}],"me2":[{"val(a)":76},{"val(a)":30},{"val(a)":38}]}}`, js)
846846
}
847847

848848
func TestMultipleEquality(t *testing.T) {
@@ -1424,7 +1424,7 @@ func TestAggregateRoot2(t *testing.T) {
14241424
}
14251425
`
14261426
js := processQueryNoErr(t, query)
1427-
require.JSONEq(t, `{"data": {"me":[{"avg(val(a))":24.000000},{"min(val(a))":15},{"max(val(a))":38}]}}`, js)
1427+
require.JSONEq(t, `{"data": {"me":[{"avg(val(a))":24},{"min(val(a))":15},{"max(val(a))":38}]}}`, js)
14281428
}
14291429

14301430
func TestAggregateRoot3(t *testing.T) {
@@ -1460,7 +1460,7 @@ func TestAggregateRoot4(t *testing.T) {
14601460
}
14611461
`
14621462
js := processQueryNoErr(t, query)
1463-
require.JSONEq(t, `{"data": {"me":[{"min(val(a))":15},{"max(val(a))":38},{"Sum":53.000000}]}}`, js)
1463+
require.JSONEq(t, `{"data": {"me":[{"min(val(a))":15},{"max(val(a))":38},{"Sum":53}]}}`, js)
14641464
}
14651465

14661466
func TestAggregateRoot5(t *testing.T) {
@@ -1713,7 +1713,7 @@ func TestMathCeil2(t *testing.T) {
17131713
}
17141714
`
17151715
js := processQueryNoErr(t, query)
1716-
require.JSONEq(t, `{"data": {"me":[{"ceilAge":14.000000}]}}`, js)
1716+
require.JSONEq(t, `{"data": {"me":[{"ceilAge":14}]}}`, js)
17171717
}
17181718

17191719
func TestUidAttr(t *testing.T) {
@@ -1954,7 +1954,7 @@ func TestMultiSort4(t *testing.T) {
19541954
}`
19551955
js := processQueryNoErr(t, query)
19561956
// Null value for third Alice comes at last.
1957-
require.JSONEq(t, `{"data": {"me":[{"name":"Alice","age":25,"salary":10000.000000},{"name":"Alice","age":75,"salary":10002.000000},{"name":"Alice","age":75},{"name":"Bob","age":75},{"name":"Bob","age":25},{"name":"Colin","age":25},{"name":"Elizabeth","age":75},{"name":"Elizabeth","age":25}]}}`, js)
1957+
require.JSONEq(t, `{"data": {"me":[{"name":"Alice","age":25,"salary":10000},{"name":"Alice","age":75,"salary":10002},{"name":"Alice","age":75},{"name":"Bob","age":75},{"name":"Bob","age":25},{"name":"Colin","age":25},{"name":"Elizabeth","age":75},{"name":"Elizabeth","age":25}]}}`, js)
19581958
}
19591959

19601960
func TestMultiSort5(t *testing.T) {
@@ -1968,7 +1968,7 @@ func TestMultiSort5(t *testing.T) {
19681968
}`
19691969
js := processQueryNoErr(t, query)
19701970
// Null value for third Alice comes at first.
1971-
require.JSONEq(t, `{"data": {"me":[{"name":"Alice","age":75,"salary":10002.000000},{"name":"Alice","age":25,"salary":10000.000000},{"name":"Alice","age":75},{"name":"Bob","age":25},{"name":"Bob","age":75},{"name":"Colin","age":25},{"name":"Elizabeth","age":25},{"name":"Elizabeth","age":75}]}}`, js)
1971+
require.JSONEq(t, `{"data": {"me":[{"name":"Alice","age":75,"salary":10002},{"name":"Alice","age":25,"salary":10000},{"name":"Alice","age":75},{"name":"Bob","age":25},{"name":"Bob","age":75},{"name":"Colin","age":25},{"name":"Elizabeth","age":25},{"name":"Elizabeth","age":75}]}}`, js)
19721972
}
19731973

19741974
func TestMultiSort6Paginate(t *testing.T) {
@@ -2422,7 +2422,7 @@ func TestMathAlias(t *testing.T) {
24222422
}`
24232423

24242424
js := processQueryNoErr(t, query)
2425-
require.JSONEq(t, `{"data": {"me":[{"count(friend)":5,"score":6.000000,"name":"Michonne"}]}}`, js)
2425+
require.JSONEq(t, `{"data": {"me":[{"count(friend)":5,"score":6,"name":"Michonne"}]}}`, js)
24262426
}
24272427

24282428
func TestUidVariable(t *testing.T) {

0 commit comments

Comments
 (0)