[I hope that this kind of announcement is not off-topic here] SQLite3 Decimal is an extension implementing exact decimal arithmetic for SQLite3. It is currently unfinished and under development. At this point anything, including the user interface and the internals, is subject to change. I am publishing it early because I am seeking to get as much feedback as possible to "get it right".
The extension is currently using the excellent decNumber library, but it does not aim to become an IEEE 754 conforming implementation. It is also totally unrelated to SQL decimal/numeric types. Decimals are stored as blobs and the storage format is a minor variant of decimalInfinite (https://arxiv.org/abs/1506.01598). That is a totally ordered encoding, so decimals can be compared directly (memcmp()) and also indexed (does SQLite support indexes on blobs?). [Here, I must thank Dr. Hipp, with whom I had a brief email exchange severals moons ago, who convinced me that the IEEE 754 encoding was not an ideal storage format for databases] By default, the precision is limited to 39 digits and exponents must be in the range [-99,999,999,+99,999,999] (for some mathematical operations, the exponent must not exceed 99,999 in absolute value). Such parameters may be configured at compile time and also changed at runtime. Any integer or fractional number satisfying such requirements can be manipulated. Note that the on-disk representation is *not* subject to such limits and can accommodate arbitrarily small or arbitrarily large decimals. With the defaults just mentioned, a decimal occupies between 1 and 24 bytes on disk (plus any overhead that blobs may add). As I have said, I welcome any feedback, from the super-technical to the end-user oriented. There is no manual so far, but the code is mostly documented. You may find a sample session in the repository's home page. Also, this is my first public Fossil repository: if you have any suggestions on how I should improve its configuration, let me know. So, here for the adventurous ones: Official repository: https://chiselapp.com/user/lifepillar/repository/sqlite3decimal Git mirror (which exists only for testing `fossil git export`...): https://github.com/lifepillar/sqlite3decimal-mirror Enjoy, Life. _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users