| | @@ -16,11 +16,11 @@ |
| 16 | 16 | ** if you want a wrapper to interface SQLite with your choice of programming |
| 17 | 17 | ** language. The code for the "sqlite3" command-line shell is also in a |
| 18 | 18 | ** separate file. This file contains only code for the core SQLite library. |
| 19 | 19 | ** |
| 20 | 20 | ** The content in this amalgamation comes from Fossil check-in |
| 21 | | -** 2610105a439e25c050b2deb32953861187c8 with changes in files: |
| 21 | +** e540f6c370675ae043af8cdbb80f7eb17c08 with changes in files: |
| 22 | 22 | ** |
| 23 | 23 | ** |
| 24 | 24 | */ |
| 25 | 25 | #ifndef SQLITE_AMALGAMATION |
| 26 | 26 | #define SQLITE_CORE 1 |
| | @@ -467,14 +467,14 @@ |
| 467 | 467 | ** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
| 468 | 468 | ** [sqlite_version()] and [sqlite_source_id()]. |
| 469 | 469 | */ |
| 470 | 470 | #define SQLITE_VERSION "3.52.0" |
| 471 | 471 | #define SQLITE_VERSION_NUMBER 3052000 |
| 472 | | -#define SQLITE_SOURCE_ID "2026-02-17 11:28:48 2610105a439e25c050b2deb32953861187c81b1d97407f41dc188e6627e0ac4d" |
| 472 | +#define SQLITE_SOURCE_ID "2026-02-19 12:59:42 e540f6c370675ae043af8cdbb80f7eb17c08e50f7634e0b78f0b1dccf7bd4b18" |
| 473 | 473 | #define SQLITE_SCM_BRANCH "trunk" |
| 474 | 474 | #define SQLITE_SCM_TAGS "" |
| 475 | | -#define SQLITE_SCM_DATETIME "2026-02-17T11:28:48.505Z" |
| 475 | +#define SQLITE_SCM_DATETIME "2026-02-19T12:59:42.005Z" |
| 476 | 476 | |
| 477 | 477 | /* |
| 478 | 478 | ** CAPI3REF: Run-Time Library Version Numbers |
| 479 | 479 | ** KEYWORDS: sqlite3_version sqlite3_sourceid |
| 480 | 480 | ** |
| | @@ -36653,17 +36653,16 @@ |
| 36653 | 36653 | ** The input m is required to have its highest bit set. In other words, |
| 36654 | 36654 | ** m should be left-shifted, and e decremented, to maximize the value of m. |
| 36655 | 36655 | */ |
| 36656 | 36656 | static void sqlite3Fp2Convert10(u64 m, int e, int n, u64 *pD, int *pP){ |
| 36657 | 36657 | int p; |
| 36658 | | - u64 h, out; |
| 36658 | + u64 h; |
| 36659 | 36659 | p = n - 1 - pwr2to10(e+63); |
| 36660 | 36660 | h = sqlite3Multiply128(m, powerOfTen(p)); |
| 36661 | | - assert( -(e + pwr10to2(p) + 3) >=0 ); |
| 36662 | | - assert( -(e + pwr10to2(p) + 3) <64 ); |
| 36663 | | - out = h >> -(e + pwr10to2(p) + 3); |
| 36664 | | - *pD = (out + 2 + ((out>>2)&1)) >> 2; |
| 36661 | + assert( -(e + pwr10to2(p) + 1) >=0 ); |
| 36662 | + assert( -(e + pwr10to2(p) + 1) <64 ); |
| 36663 | + *pD = h >> -(e + pwr10to2(p) + 1); |
| 36665 | 36664 | *pP = -p; |
| 36666 | 36665 | } |
| 36667 | 36666 | |
| 36668 | 36667 | /* |
| 36669 | 36668 | ** Return an IEEE754 floating point value that approximates d*pow(10,p). |
| | @@ -36849,11 +36848,11 @@ |
| 36849 | 36848 | /* |
| 36850 | 36849 | ** Digit pairs used to convert a U64 or I64 into text, two digits |
| 36851 | 36850 | ** at a time. |
| 36852 | 36851 | */ |
| 36853 | 36852 | static const union { |
| 36854 | | - char a[200]; |
| 36853 | + char a[201]; |
| 36855 | 36854 | short int forceAlignment; |
| 36856 | 36855 | } sqlite3DigitPairs = { |
| 36857 | 36856 | "00010203040506070809" |
| 36858 | 36857 | "10111213141516171819" |
| 36859 | 36858 | "20212223242526272829" |
| | @@ -37161,11 +37160,11 @@ |
| 37161 | 37160 | /* |
| 37162 | 37161 | ** Decode a floating-point value into an approximate decimal |
| 37163 | 37162 | ** representation. |
| 37164 | 37163 | ** |
| 37165 | 37164 | ** If iRound<=0 then round to -iRound significant digits to the |
| 37166 | | -** the left of the decimal point, or to a maximum of mxRound total |
| 37165 | +** the right of the decimal point, or to a maximum of mxRound total |
| 37167 | 37166 | ** significant digits. |
| 37168 | 37167 | ** |
| 37169 | 37168 | ** If iRound>0 round to min(iRound,mxRound) significant digits total. |
| 37170 | 37169 | ** |
| 37171 | 37170 | ** mxRound must be positive. |
| | @@ -37213,11 +37212,11 @@ |
| 37213 | 37212 | e = -1074 - n; |
| 37214 | 37213 | }else{ |
| 37215 | 37214 | v = (v<<11) | U64_BIT(63); |
| 37216 | 37215 | e -= 1086; |
| 37217 | 37216 | } |
| 37218 | | - sqlite3Fp2Convert10(v, e, 17, &v, &exp); |
| 37217 | + sqlite3Fp2Convert10(v, e, (iRound<=0||iRound>=18)?18:iRound+1, &v, &exp); |
| 37219 | 37218 | |
| 37220 | 37219 | /* Extract significant digits. */ |
| 37221 | 37220 | i = sizeof(p->zBuf)-1; |
| 37222 | 37221 | assert( v>0 ); |
| 37223 | 37222 | while( v>=10 ){ |
| | @@ -261750,11 +261749,11 @@ |
| 261750 | 261749 | int nArg, /* Number of args */ |
| 261751 | 261750 | sqlite3_value **apUnused /* Function arguments */ |
| 261752 | 261751 | ){ |
| 261753 | 261752 | assert( nArg==0 ); |
| 261754 | 261753 | UNUSED_PARAM2(nArg, apUnused); |
| 261755 | | - sqlite3_result_text(pCtx, "fts5: 2026-02-17 01:04:23 dd5af703e1082951a4295a3453611db12b23cfbcfee4258ec3985abe96ab54ba", -1, SQLITE_TRANSIENT); |
| 261754 | + sqlite3_result_text(pCtx, "fts5: 2026-02-19 12:59:42 e540f6c370675ae043af8cdbb80f7eb17c08e50f7634e0b78f0b1dccf7bd4b18", -1, SQLITE_TRANSIENT); |
| 261756 | 261755 | } |
| 261757 | 261756 | |
| 261758 | 261757 | /* |
| 261759 | 261758 | ** Implementation of fts5_locale(LOCALE, TEXT) function. |
| 261760 | 261759 | ** |
| 261761 | 261760 | |