Skip to content

Commit

Permalink
Merge pull request #3814 from katzyn/decfloat
Browse files Browse the repository at this point in the history
Fix regression in comparisons with infinities and NaNs
  • Loading branch information
katzyn committed Jun 7, 2023
2 parents 6992cb9 + 78253ee commit 09ab495
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 1 deletion.
5 changes: 4 additions & 1 deletion h2/src/main/org/h2/value/Value.java
Original file line number Diff line number Diff line change
Expand Up @@ -2657,13 +2657,16 @@ private static int compareNumeric(Value l, Value r, int leftType, int rightType,
return Integer.compare(l.getInt(), r.getInt());
case BIGINT:
return Long.compare(l.getLong(), r.getLong());
case NUMERIC:
return l.getBigDecimal().compareTo(r.getBigDecimal());
case REAL:
return Float.compare(l.getFloat(), r.getFloat());
case DOUBLE:
return Double.compare(l.getDouble(), r.getDouble());
}
}
return l.getBigDecimal().compareTo(r.getBigDecimal());
return l.convertToDecfloat(null, CONVERT_TO).compareTypeSafe( //
r.convertToDecfloat(null, CONVERT_TO), null, null);
}

/**
Expand Down
6 changes: 6 additions & 0 deletions h2/src/test/org/h2/test/scripts/datatypes/decfloat.sql
Original file line number Diff line number Diff line change
Expand Up @@ -284,3 +284,9 @@ DROP TABLE TEST;

VALUES '1E100' > 0;
>> TRUE

SELECT 'NaN' = CAST('NaN' AS DECFLOAT);
>> TRUE

SELECT CAST('NaN' AS DOUBLE ) = CAST('NaN' AS DECFLOAT);
>> TRUE
Original file line number Diff line number Diff line change
Expand Up @@ -234,3 +234,6 @@ DROP TABLE TEST;

SELECT CAST(PI() AS DOUBLE PRECISION) / 1e0;
>> 3.141592653589793

SELECT 'NaN' = CAST('NaN' AS DOUBLE);
>> TRUE

0 comments on commit 09ab495

Please sign in to comment.