Skip to content

Commit

Permalink
Deprecate infinity values in data documents (#1296)
Browse files Browse the repository at this point in the history
Refs #1151.
  • Loading branch information
noisersup committed Oct 25, 2022
1 parent e757e4b commit 38b30b5
Show file tree
Hide file tree
Showing 8 changed files with 68 additions and 179 deletions.
119 changes: 40 additions & 79 deletions integration/query_comparison_test.go
Expand Up @@ -116,14 +116,6 @@ func TestQueryComparisonImplicit(t *testing.T) {
filter: bson.D{{"v", 42.13}},
expectedIDs: []any{"array-two", "double"},
},
"DoubleNegativeInfinity": {
filter: bson.D{{"v", math.Inf(-1)}},
expectedIDs: []any{"double-negative-infinity"},
},
"DoublePositiveInfinity": {
filter: bson.D{{"v", math.Inf(+1)}},
expectedIDs: []any{"double-positive-infinity"},
},
"DoubleMax": {
filter: bson.D{{"v", math.MaxFloat64}},
expectedIDs: []any{"double-max"},
Expand Down Expand Up @@ -188,8 +180,8 @@ func TestQueryComparisonImplicit(t *testing.T) {
"bool-false", "bool-true",
"datetime", "datetime-epoch", "datetime-year-max", "datetime-year-min",
"document", "document-composite", "document-composite-reverse", "document-empty", "document-null",
"double", "double-big", "double-max", "double-nan", "double-negative-infinity", "double-negative-zero",
"double-positive-infinity", "double-smallest", "double-whole", "double-zero",
"double", "double-big", "double-max", "double-nan", "double-negative-zero",
"double-smallest", "double-whole", "double-zero",
"int32", "int32-max", "int32-min", "int32-zero",
"int64", "int64-big", "int64-max", "int64-min", "int64-zero",
"null",
Expand Down Expand Up @@ -318,14 +310,6 @@ func TestQueryComparisonEq(t *testing.T) {
filter: bson.D{{"v", bson.D{{"$eq", math.SmallestNonzeroFloat64}}}},
expectedIDs: []any{"double-smallest"},
},
"DoublePositiveInfinity": {
filter: bson.D{{"v", bson.D{{"$eq", math.Inf(+1)}}}},
expectedIDs: []any{"double-positive-infinity"},
},
"DoubleNegativeInfinity": {
filter: bson.D{{"v", bson.D{{"$eq", math.Inf(-1)}}}},
expectedIDs: []any{"double-negative-infinity"},
},
"DoubleNaN": {
filter: bson.D{{"v", bson.D{{"$eq", math.NaN()}}}},
expectedIDs: []any{"array-two", "double-nan"},
Expand Down Expand Up @@ -485,8 +469,8 @@ func TestQueryComparisonEq(t *testing.T) {
"bool-false", "bool-true",
"datetime", "datetime-epoch", "datetime-year-max", "datetime-year-min",
"document", "document-composite", "document-composite-reverse", "document-empty", "document-null",
"double", "double-big", "double-max", "double-nan", "double-negative-infinity", "double-negative-zero",
"double-positive-infinity", "double-smallest", "double-whole", "double-zero",
"double", "double-big", "double-max", "double-nan", "double-negative-zero",
"double-smallest", "double-whole", "double-zero",
"int32", "int32-max", "int32-min", "int32-zero",
"int64", "int64-big", "int64-max", "int64-min", "int64-zero",
"null",
Expand Down Expand Up @@ -579,7 +563,7 @@ func TestQueryComparisonGt(t *testing.T) {
value: 41.13,
expectedIDs: []any{
"array", "array-three", "array-three-reverse", "array-two",
"double", "double-big", "double-max", "double-positive-infinity", "double-whole",
"double", "double-big", "double-max", "double-whole",
"int32", "int32-max",
"int64", "int64-big", "int64-max",
},
Expand All @@ -588,17 +572,13 @@ func TestQueryComparisonGt(t *testing.T) {
value: math.Copysign(0, -1),
expectedIDs: []any{
"array", "array-three", "array-three-reverse", "array-two",
"double", "double-big", "double-max", "double-positive-infinity", "double-smallest", "double-whole",
"double", "double-big", "double-max", "double-smallest", "double-whole",
"int32", "int32-max",
"int64", "int64-big", "int64-max",
},
},
"DoubleMax": {
value: math.MaxFloat64,
expectedIDs: []any{"double-positive-infinity"},
},
"DoublePositiveInfinity": {
value: math.Inf(+1),
expectedIDs: []any{},
},
"DoubleNaN": {
Expand Down Expand Up @@ -669,15 +649,15 @@ func TestQueryComparisonGt(t *testing.T) {
value: int32(42),
expectedIDs: []any{
"array-two",
"double", "double-big", "double-max", "double-positive-infinity",
"double", "double-big", "double-max",
"int32-max",
"int64-big", "int64-max",
},
},
"Int32Max": {
value: int32(math.MaxInt32),
expectedIDs: []any{
"double-big", "double-max", "double-positive-infinity",
"double-big", "double-max",
"int64-big", "int64-max",
},
},
Expand All @@ -699,19 +679,19 @@ func TestQueryComparisonGt(t *testing.T) {
value: int64(42),
expectedIDs: []any{
"array-two",
"double", "double-big", "double-max", "double-positive-infinity",
"double", "double-big", "double-max",
"int32-max",
"int64-big", "int64-max",
},
},
"Int64Max": {
value: int64(math.MaxInt64),
expectedIDs: []any{"double-max", "double-positive-infinity"},
expectedIDs: []any{"double-max"},
},
"Int64Big": {
value: int64(2<<60 - 1),
expectedIDs: []any{
"double-big", "double-max", "double-positive-infinity",
"double-big", "double-max",
"int64-big", "int64-max",
},
},
Expand Down Expand Up @@ -806,26 +786,23 @@ func TestQueryComparisonGte(t *testing.T) {
"Double": {
value: 42.13,
expectedIDs: []any{
"array-two", "double", "double-big", "double-max", "double-positive-infinity", "int32-max", "int64-big", "int64-max",
"array-two", "double", "double-big", "double-max", "int32-max", "int64-big", "int64-max",
},
},
"DoubleNegativeZero": {
value: math.Copysign(0, -1),
expectedIDs: []any{
"array", "array-three", "array-three-reverse", "array-two",
"double", "double-big", "double-max", "double-negative-zero", "double-positive-infinity", "double-smallest", "double-whole", "double-zero",
"double", "double-big", "double-max", "double-negative-zero", "double-smallest", "double-whole", "double-zero",
"int32", "int32-max", "int32-zero",
"int64", "int64-big", "int64-max", "int64-zero",
},
},
"DoubleMax": {
value: math.MaxFloat64,
expectedIDs: []any{"double-max", "double-positive-infinity"},
},
"DoublePositiveInfinity": {
value: math.Inf(+1),
expectedIDs: []any{"double-positive-infinity"},
expectedIDs: []any{"double-max"},
},

"DoubleNaN": {
value: math.NaN(),
expectedIDs: []any{"array-two", "double-nan"},
Expand Down Expand Up @@ -897,14 +874,14 @@ func TestQueryComparisonGte(t *testing.T) {
value: int32(42),
expectedIDs: []any{
"array", "array-three", "array-three-reverse", "array-two",
"double", "double-big", "double-max", "double-positive-infinity", "double-whole",
"double", "double-big", "double-max", "double-whole",
"int32", "int32-max",
"int64", "int64-big", "int64-max",
},
},
"Int32Max": {
value: int32(math.MaxInt32),
expectedIDs: []any{"double-big", "double-max", "double-positive-infinity", "int32-max", "int64-big", "int64-max"},
expectedIDs: []any{"double-big", "double-max", "int32-max", "int64-big", "int64-max"},
},

"Timestamp": {
Expand All @@ -924,14 +901,14 @@ func TestQueryComparisonGte(t *testing.T) {
value: int64(42),
expectedIDs: []any{
"array", "array-three", "array-three-reverse", "array-two",
"double", "double-big", "double-max", "double-positive-infinity", "double-whole",
"double", "double-big", "double-max", "double-whole",
"int32", "int32-max",
"int64", "int64-big", "int64-max",
},
},
"Int64Max": {
value: int64(math.MaxInt64),
expectedIDs: []any{"double-max", "double-positive-infinity", "int64-max"},
expectedIDs: []any{"double-max", "int64-max"},
},
} {
name, tc := name, tc
Expand Down Expand Up @@ -1028,27 +1005,23 @@ func TestQueryComparisonLt(t *testing.T) {
value: 43.13,
expectedIDs: []any{
"array", "array-three", "array-three-reverse", "array-two",
"double", "double-negative-infinity", "double-negative-zero", "double-smallest", "double-whole", "double-zero",
"double", "double-negative-zero", "double-smallest", "double-whole", "double-zero",
"int32", "int32-min", "int32-zero",
"int64", "int64-min", "int64-zero",
},
},
"DoubleNegativeZero": {
value: math.Copysign(0, -1),
expectedIDs: []any{"double-negative-infinity", "int32-min", "int64-min"},
expectedIDs: []any{"int32-min", "int64-min"},
},
"DoubleSmallest": {
value: math.SmallestNonzeroFloat64,
expectedIDs: []any{
"double-negative-infinity", "double-negative-zero", "double-zero",
"double-negative-zero", "double-zero",
"int32-min", "int32-zero",
"int64-min", "int64-zero",
},
},
"DoubleNegativeInfinity": {
value: math.Inf(-1),
expectedIDs: []any{},
},
"DoubleNaN": {
value: math.NaN(),
expectedIDs: []any{},
Expand Down Expand Up @@ -1116,14 +1089,14 @@ func TestQueryComparisonLt(t *testing.T) {
"Int32": {
value: int32(42),
expectedIDs: []any{
"double-negative-infinity", "double-negative-zero", "double-smallest", "double-zero",
"double-negative-zero", "double-smallest", "double-zero",
"int32-min", "int32-zero",
"int64-min", "int64-zero",
},
},
"Int32Min": {
value: int32(math.MinInt32),
expectedIDs: []any{"double-negative-infinity", "int64-min"},
expectedIDs: []any{"int64-min"},
},

"Timestamp": {
Expand All @@ -1142,20 +1115,20 @@ func TestQueryComparisonLt(t *testing.T) {
"Int64": {
value: int64(42),
expectedIDs: []any{
"double-negative-infinity", "double-negative-zero", "double-smallest", "double-zero",
"double-negative-zero", "double-smallest", "double-zero",
"int32-min", "int32-zero",
"int64-min", "int64-zero",
},
},
"Int64Min": {
value: int64(math.MinInt64),
expectedIDs: []any{"double-negative-infinity"},
expectedIDs: []any{},
},
"Int64Big": {
value: int64(2<<60 + 1),
expectedIDs: []any{
"array", "array-three", "array-three-reverse", "array-two",
"double", "double-big", "double-negative-infinity", "double-negative-zero", "double-smallest", "double-whole", "double-zero",
"double", "double-big", "double-negative-zero", "double-smallest", "double-whole", "double-zero",
"int32", "int32-max", "int32-min", "int32-zero",
"int64", "int64-min", "int64-zero",
},
Expand Down Expand Up @@ -1255,31 +1228,27 @@ func TestQueryComparisonLte(t *testing.T) {
value: 42.13,
expectedIDs: []any{
"array", "array-three", "array-three-reverse", "array-two",
"double", "double-negative-infinity", "double-negative-zero", "double-smallest", "double-whole", "double-zero",
"double", "double-negative-zero", "double-smallest", "double-whole", "double-zero",
"int32", "int32-min", "int32-zero",
"int64", "int64-min", "int64-zero",
},
},
"DoubleNegativeZero": {
value: math.Copysign(0, -1),
expectedIDs: []any{
"double-negative-infinity", "double-negative-zero", "double-zero",
"double-negative-zero", "double-zero",
"int32-min", "int32-zero",
"int64-min", "int64-zero",
},
},
"DoubleSmallest": {
value: math.SmallestNonzeroFloat64,
expectedIDs: []any{
"double-negative-infinity", "double-negative-zero", "double-smallest", "double-zero",
"double-negative-zero", "double-smallest", "double-zero",
"int32-min", "int32-zero",
"int64-min", "int64-zero",
},
},
"DoubleNegativeInfinity": {
value: math.Inf(-1),
expectedIDs: []any{"double-negative-infinity"},
},
"DoubleNaN": {
value: math.NaN(),
expectedIDs: []any{"array-two", "double-nan"},
Expand Down Expand Up @@ -1351,14 +1320,14 @@ func TestQueryComparisonLte(t *testing.T) {
value: int32(42),
expectedIDs: []any{
"array", "array-three", "array-three-reverse",
"double-negative-infinity", "double-negative-zero", "double-smallest", "double-whole", "double-zero",
"double-negative-zero", "double-smallest", "double-whole", "double-zero",
"int32", "int32-min", "int32-zero",
"int64", "int64-min", "int64-zero",
},
},
"Int32Min": {
value: int32(math.MinInt32),
expectedIDs: []any{"double-negative-infinity", "int32-min", "int64-min"},
expectedIDs: []any{"int32-min", "int64-min"},
},

"Timestamp": {
Expand All @@ -1378,14 +1347,14 @@ func TestQueryComparisonLte(t *testing.T) {
value: int64(42),
expectedIDs: []any{
"array", "array-three", "array-three-reverse",
"double-negative-infinity", "double-negative-zero", "double-smallest", "double-whole", "double-zero",
"double-negative-zero", "double-smallest", "double-whole", "double-zero",
"int32", "int32-min", "int32-zero",
"int64", "int64-min", "int64-zero",
},
},
"Int64Min": {
value: int64(math.MinInt64),
expectedIDs: []any{"double-negative-infinity", "int64-min"},
expectedIDs: []any{"int64-min"},
},
} {
name, tc := name, tc
Expand Down Expand Up @@ -1444,8 +1413,8 @@ func TestQueryComparisonNin(t *testing.T) {
"binary", "binary-empty",
"bool-false", "bool-true",
"datetime", "datetime-epoch", "datetime-year-max", "datetime-year-min",
"double", "double-big", "double-max", "double-nan", "double-negative-infinity", "double-negative-zero",
"double-positive-infinity", "double-smallest", "double-whole", "double-zero",
"double", "double-big", "double-max", "double-nan", "double-negative-zero",
"double-smallest", "double-whole", "double-zero",
"int32", "int32-max", "int32-min", "int32-zero",
"int64", "int64-big", "int64-max", "int64-min", "int64-zero",
"null",
Expand Down Expand Up @@ -1473,8 +1442,8 @@ func TestQueryComparisonNin(t *testing.T) {
"bool-false", "bool-true",
"datetime", "datetime-epoch", "datetime-year-max", "datetime-year-min",
"document", "document-composite", "document-composite-reverse", "document-empty", "document-null",
"double", "double-big", "double-max", "double-nan", "double-negative-infinity", "double-negative-zero",
"double-positive-infinity", "double-smallest", "double-whole", "double-zero",
"double", "double-big", "double-max", "double-nan", "double-negative-zero",
"double-smallest", "double-whole", "double-zero",
"int32", "int32-max", "int32-min", "int32-zero",
"int64", "int64-big", "int64-max", "int64-min", "int64-zero",
"null",
Expand Down Expand Up @@ -1553,8 +1522,8 @@ func TestQueryComparisonIn(t *testing.T) {
"binary", "binary-empty",
"bool-false", "bool-true",
"datetime", "datetime-epoch", "datetime-year-max", "datetime-year-min",
"double", "double-big", "double-max", "double-nan", "double-negative-infinity", "double-negative-zero",
"double-positive-infinity", "double-smallest", "double-whole", "double-zero",
"double", "double-big", "double-max", "double-nan", "double-negative-zero",
"double-smallest", "double-whole", "double-zero",
"int32", "int32-max", "int32-min", "int32-zero",
"int64", "int64-big", "int64-max", "int64-min", "int64-zero",
"null",
Expand Down Expand Up @@ -1666,18 +1635,10 @@ func TestQueryComparisonNe(t *testing.T) {
value: 42.13,
unexpectedID: "double",
},
"DoubleNegativeInfinity": {
value: math.Inf(-1),
unexpectedID: "double-negative-infinity",
},
"DoubleNegativeZero": {
value: math.Copysign(0, -1),
unexpectedID: "double-negative-zero",
},
"DoublePositiveInfinity": {
value: math.Inf(+1),
unexpectedID: "double-positive-infinity",
},
"DoubleMax": {
value: math.MaxFloat64,
unexpectedID: "double-max",
Expand Down
7 changes: 2 additions & 5 deletions integration/query_element_test.go
Expand Up @@ -126,8 +126,7 @@ func TestQueryElementType(t *testing.T) {
v: "double",
expectedIDs: []any{
"array-two", "double", "double-big", "double-max", "double-nan",
"double-negative-infinity", "double-negative-zero", "double-positive-infinity",
"double-smallest", "double-whole", "double-zero",
"double-negative-zero", "double-smallest", "double-whole", "double-zero",
},
},
"String": {
Expand Down Expand Up @@ -179,9 +178,7 @@ func TestQueryElementType(t *testing.T) {
expectedIDs: []any{
"array", "array-three", "array-three-reverse", "array-two",
"double", "double-big", "double-max", "double-nan",
"double-negative-infinity", "double-negative-zero",
"double-positive-infinity", "double-smallest",
"double-whole", "double-zero",
"double-negative-zero", "double-smallest", "double-whole", "double-zero",
"int32", "int32-max", "int32-min", "int32-zero",
"int64", "int64-big", "int64-max", "int64-min", "int64-zero",
},
Expand Down

1 comment on commit 38b30b5

@vercel
Copy link

@vercel vercel bot commented on 38b30b5 Oct 25, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Successfully deployed to the following URLs:

ferret-db – ./

ferret-db-git-main-ferretdb.vercel.app
ferret-db-ferretdb.vercel.app
ferret-db.vercel.app

Please sign in to comment.