Open AnyhowStep opened 4 years ago
Then, if we want multiplication-but-allow-null-return-type-for-nan, we can have a separate function double.mulWithNan()
or some other such nonsense
Or maybe just not have mulWithNan
for the unified library at all
It all boils down to what this library is really intended to do.
The number 1 concern is to have consistent behavior across all supported databases, as long as the unified library is used to build the queries and expressions.
Given databases A and B, we have the following scenarios,
double.mul(), double.sub(), etc.
havethrowIfNull()
)
Right now, double.mul() and double.sub() have
number|null
for the return type.This only happens because of SQLite.
1e999 * 0e0
isnull
on SQLite.1e999 - 1e999
isnull
on SQLite.You can't even use
Infinity
in other databases; so, we don't get these problems.It would be nice if we made
mul()/sub()
just returnnumber
.In SQLite, this would be emulated with
COALESCE(x * y, (SELECT SUM(9223372036854775807) FROM (SELECT NULL UNION ALL SELECT NULL)))
Or,
throwIfNull(x * y)