ladybird/Tests/LibSQL
Timothy Flynn 72e41a7dbd LibSQL: Support 64-bit integer values and handle overflow errors
Currently, integers are stored in LibSQL as 32-bit signed integers, even
if the provided type is unsigned. This resulted in a series of unchecked
unsigned-to-signed conversions, and prevented storing 64-bit values.
Further, mathematical operations were performed without similar checks,
and without checking for overflow.

This changes SQL::Value to behave like SQLite for INTEGER types. In
SQLite, the INTEGER type does not imply a size or signedness of the
underlying type. Instead, SQLite determines on-the-fly what type is
needed as values are created and updated.

To do so, the SQL::Value variant can now hold an i64 or u64 integer. If
a specific type is requested, invalid conversions are now explictly an
error (e.g. converting a stored -1 to a u64 will fail). When binary
mathematical operations are performed, we now try to coerce the RHS
value to a type that works with the LHS value, failing the operation if
that isn't possible. Any overflow or invalid operation (e.g. bitshifting
a 64-bit value by more than 64 bytes) is an error.
2022-12-14 09:21:30 -05:00
..
CMakeLists.txt
TestSqlBtreeIndex.cpp LibSQL: Support 64-bit integer values and handle overflow errors 2022-12-14 09:21:30 -05:00
TestSqlDatabase.cpp LibSQL: Support 64-bit integer values and handle overflow errors 2022-12-14 09:21:30 -05:00
TestSqlExpressionParser.cpp LibSQL: Parse and execute sequential placeholder values 2022-12-07 13:09:00 +01:00
TestSqlHashIndex.cpp LibSQL: Support 64-bit integer values and handle overflow errors 2022-12-14 09:21:30 -05:00
TestSqlStatementExecution.cpp LibSQL: Support 64-bit integer values and handle overflow errors 2022-12-14 09:21:30 -05:00
TestSqlStatementParser.cpp LibSQL: Parse and execute sequential placeholder values 2022-12-07 13:09:00 +01:00
TestSqlValueAndTuple.cpp LibSQL: Support 64-bit integer values and handle overflow errors 2022-12-14 09:21:30 -05:00