|
1 | 1 | /****************************************************************************** |
2 | 2 | ** This file is an amalgamation of many separate C source files from SQLite |
3 | | -** version 3.47.1. By combining all the individual C code files into this |
| 3 | +** version 3.47.2. By combining all the individual C code files into this |
4 | 4 | ** single large file, the entire code can be compiled as a single translation |
5 | 5 | ** unit. This allows many compilers to do optimizations that would not be |
6 | 6 | ** possible if the files were compiled separately. Performance improvements |
|
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 | | -** b95d11e958643b969c47a8e5857f3793b9e6. |
| 21 | +** 2aabe05e2e8cae4847a802ee2daddc1d7413. |
22 | 22 | */ |
23 | 23 | #define SQLITE_CORE 1 |
24 | 24 | #define SQLITE_AMALGAMATION 1 |
@@ -462,9 +462,9 @@ extern "C" { |
462 | 462 | ** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
463 | 463 | ** [sqlite_version()] and [sqlite_source_id()]. |
464 | 464 | */ |
465 | | -#define SQLITE_VERSION "3.47.1" |
466 | | -#define SQLITE_VERSION_NUMBER 3047001 |
467 | | -#define SQLITE_SOURCE_ID "2024-11-25 12:07:48 b95d11e958643b969c47a8e5857f3793b9e69700b8f1469371386369a26e577e" |
| 465 | +#define SQLITE_VERSION "3.47.2" |
| 466 | +#define SQLITE_VERSION_NUMBER 3047002 |
| 467 | +#define SQLITE_SOURCE_ID "2024-12-07 20:39:59 2aabe05e2e8cae4847a802ee2daddc1d7413d8fc560254d93ee3e72c14685b6c" |
468 | 468 |
|
469 | 469 | /* |
470 | 470 | ** CAPI3REF: Run-Time Library Version Numbers |
@@ -35697,8 +35697,8 @@ SQLITE_PRIVATE int sqlite3AtoF(const char *z, double *pResult, int length, u8 en |
35697 | 35697 | int eValid = 1; /* True exponent is either not used or is well-formed */ |
35698 | 35698 | int nDigit = 0; /* Number of digits processed */ |
35699 | 35699 | int eType = 1; /* 1: pure integer, 2+: fractional -1 or less: bad UTF16 */ |
| 35700 | + u64 s2; /* round-tripped significand */ |
35700 | 35701 | double rr[2]; |
35701 | | - u64 s2; |
35702 | 35702 |
|
35703 | 35703 | assert( enc==SQLITE_UTF8 || enc==SQLITE_UTF16LE || enc==SQLITE_UTF16BE ); |
35704 | 35704 | *pResult = 0.0; /* Default return value, in case of an error */ |
@@ -35801,7 +35801,7 @@ SQLITE_PRIVATE int sqlite3AtoF(const char *z, double *pResult, int length, u8 en |
35801 | 35801 | e = (e*esign) + d; |
35802 | 35802 |
|
35803 | 35803 | /* Try to adjust the exponent to make it smaller */ |
35804 | | - while( e>0 && s<(LARGEST_UINT64/10) ){ |
| 35804 | + while( e>0 && s<((LARGEST_UINT64-0x7ff)/10) ){ |
35805 | 35805 | s *= 10; |
35806 | 35806 | e--; |
35807 | 35807 | } |
@@ -35811,11 +35811,16 @@ SQLITE_PRIVATE int sqlite3AtoF(const char *z, double *pResult, int length, u8 en |
35811 | 35811 | } |
35812 | 35812 |
|
35813 | 35813 | rr[0] = (double)s; |
35814 | | - s2 = (u64)rr[0]; |
35815 | | -#if defined(_MSC_VER) && _MSC_VER<1700 |
35816 | | - if( s2==0x8000000000000000LL ){ s2 = 2*(u64)(0.5*rr[0]); } |
35817 | | -#endif |
35818 | | - rr[1] = s>=s2 ? (double)(s - s2) : -(double)(s2 - s); |
| 35814 | + assert( sizeof(s2)==sizeof(rr[0]) ); |
| 35815 | + memcpy(&s2, &rr[0], sizeof(s2)); |
| 35816 | + if( s2<=0x43efffffffffffffLL ){ |
| 35817 | + s2 = (u64)rr[0]; |
| 35818 | + rr[1] = s>=s2 ? (double)(s - s2) : -(double)(s2 - s); |
| 35819 | + }else{ |
| 35820 | + rr[1] = 0.0; |
| 35821 | + } |
| 35822 | + assert( rr[1]<=1.0e-10*rr[0] ); /* Equal only when rr[0]==0.0 */ |
| 35823 | + |
35819 | 35824 | if( e>0 ){ |
35820 | 35825 | while( e>=100 ){ |
35821 | 35826 | e -= 100; |
@@ -147605,32 +147610,32 @@ static Expr *substExpr( |
147605 | 147610 | if( pSubst->isOuterJoin ){ |
147606 | 147611 | ExprSetProperty(pNew, EP_CanBeNull); |
147607 | 147612 | } |
147608 | | - if( ExprHasProperty(pExpr,EP_OuterON|EP_InnerON) ){ |
147609 | | - sqlite3SetJoinExpr(pNew, pExpr->w.iJoin, |
147610 | | - pExpr->flags & (EP_OuterON|EP_InnerON)); |
147611 | | - } |
147612 | | - sqlite3ExprDelete(db, pExpr); |
147613 | | - pExpr = pNew; |
147614 | | - if( pExpr->op==TK_TRUEFALSE ){ |
147615 | | - pExpr->u.iValue = sqlite3ExprTruthValue(pExpr); |
147616 | | - pExpr->op = TK_INTEGER; |
147617 | | - ExprSetProperty(pExpr, EP_IntValue); |
| 147613 | + if( pNew->op==TK_TRUEFALSE ){ |
| 147614 | + pNew->u.iValue = sqlite3ExprTruthValue(pNew); |
| 147615 | + pNew->op = TK_INTEGER; |
| 147616 | + ExprSetProperty(pNew, EP_IntValue); |
147618 | 147617 | } |
147619 | 147618 |
|
147620 | 147619 | /* Ensure that the expression now has an implicit collation sequence, |
147621 | 147620 | ** just as it did when it was a column of a view or sub-query. */ |
147622 | 147621 | { |
147623 | | - CollSeq *pNat = sqlite3ExprCollSeq(pSubst->pParse, pExpr); |
| 147622 | + CollSeq *pNat = sqlite3ExprCollSeq(pSubst->pParse, pNew); |
147624 | 147623 | CollSeq *pColl = sqlite3ExprCollSeq(pSubst->pParse, |
147625 | 147624 | pSubst->pCList->a[iColumn].pExpr |
147626 | 147625 | ); |
147627 | | - if( pNat!=pColl || (pExpr->op!=TK_COLUMN && pExpr->op!=TK_COLLATE) ){ |
147628 | | - pExpr = sqlite3ExprAddCollateString(pSubst->pParse, pExpr, |
| 147626 | + if( pNat!=pColl || (pNew->op!=TK_COLUMN && pNew->op!=TK_COLLATE) ){ |
| 147627 | + pNew = sqlite3ExprAddCollateString(pSubst->pParse, pNew, |
147629 | 147628 | (pColl ? pColl->zName : "BINARY") |
147630 | 147629 | ); |
147631 | 147630 | } |
147632 | 147631 | } |
147633 | | - ExprClearProperty(pExpr, EP_Collate); |
| 147632 | + ExprClearProperty(pNew, EP_Collate); |
| 147633 | + if( ExprHasProperty(pExpr,EP_OuterON|EP_InnerON) ){ |
| 147634 | + sqlite3SetJoinExpr(pNew, pExpr->w.iJoin, |
| 147635 | + pExpr->flags & (EP_OuterON|EP_InnerON)); |
| 147636 | + } |
| 147637 | + sqlite3ExprDelete(db, pExpr); |
| 147638 | + pExpr = pNew; |
147634 | 147639 | } |
147635 | 147640 | } |
147636 | 147641 | }else{ |
@@ -254938,7 +254943,7 @@ static void fts5SourceIdFunc( |
254938 | 254943 | ){ |
254939 | 254944 | assert( nArg==0 ); |
254940 | 254945 | UNUSED_PARAM2(nArg, apUnused); |
254941 | | - sqlite3_result_text(pCtx, "fts5: 2024-11-25 12:07:48 b95d11e958643b969c47a8e5857f3793b9e69700b8f1469371386369a26e577e", -1, SQLITE_TRANSIENT); |
| 254946 | + sqlite3_result_text(pCtx, "fts5: 2024-12-07 20:39:59 2aabe05e2e8cae4847a802ee2daddc1d7413d8fc560254d93ee3e72c14685b6c", -1, SQLITE_TRANSIENT); |
254942 | 254947 | } |
254943 | 254948 |
|
254944 | 254949 | /* |
|