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
@@ -463,9 +463,9 @@ extern "C" {
463
463
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
464
464
** [sqlite_version()] and [sqlite_source_id()].
465
465
*/
466
- #define SQLITE_VERSION "3.47.1 "
467
- #define SQLITE_VERSION_NUMBER 3047001
468
- #define SQLITE_SOURCE_ID "2024-11-25 12:07:48 b95d11e958643b969c47a8e5857f3793b9e69700b8f1469371386369a26e577e "
466
+ #define SQLITE_VERSION "3.47.2 "
467
+ #define SQLITE_VERSION_NUMBER 3047002
468
+ #define SQLITE_SOURCE_ID "2024-12-07 20:39:59 2aabe05e2e8cae4847a802ee2daddc1d7413d8fc560254d93ee3e72c14685b6c "
469
469
470
470
/*
471
471
** CAPI3REF: Run-Time Library Version Numbers
@@ -35698,8 +35698,8 @@ SQLITE_PRIVATE int sqlite3AtoF(const char *z, double *pResult, int length, u8 en
35698
35698
int eValid = 1; /* True exponent is either not used or is well-formed */
35699
35699
int nDigit = 0; /* Number of digits processed */
35700
35700
int eType = 1; /* 1: pure integer, 2+: fractional -1 or less: bad UTF16 */
35701
+ u64 s2; /* round-tripped significand */
35701
35702
double rr[2];
35702
- u64 s2;
35703
35703
35704
35704
assert( enc==SQLITE_UTF8 || enc==SQLITE_UTF16LE || enc==SQLITE_UTF16BE );
35705
35705
*pResult = 0.0; /* Default return value, in case of an error */
@@ -35802,7 +35802,7 @@ SQLITE_PRIVATE int sqlite3AtoF(const char *z, double *pResult, int length, u8 en
35802
35802
e = (e*esign) + d;
35803
35803
35804
35804
/* Try to adjust the exponent to make it smaller */
35805
- while( e>0 && s<(LARGEST_UINT64/10) ){
35805
+ while( e>0 && s<(( LARGEST_UINT64-0x7ff) /10) ){
35806
35806
s *= 10;
35807
35807
e--;
35808
35808
}
@@ -35812,11 +35812,16 @@ SQLITE_PRIVATE int sqlite3AtoF(const char *z, double *pResult, int length, u8 en
35812
35812
}
35813
35813
35814
35814
rr[0] = (double)s;
35815
- s2 = (u64)rr[0];
35816
- #if defined(_MSC_VER) && _MSC_VER<1700
35817
- if( s2==0x8000000000000000LL ){ s2 = 2*(u64)(0.5*rr[0]); }
35818
- #endif
35819
- rr[1] = s>=s2 ? (double)(s - s2) : -(double)(s2 - s);
35815
+ assert( sizeof(s2)==sizeof(rr[0]) );
35816
+ memcpy(&s2, &rr[0], sizeof(s2));
35817
+ if( s2<=0x43efffffffffffffLL ){
35818
+ s2 = (u64)rr[0];
35819
+ rr[1] = s>=s2 ? (double)(s - s2) : -(double)(s2 - s);
35820
+ }else{
35821
+ rr[1] = 0.0;
35822
+ }
35823
+ assert( rr[1]<=1.0e-10*rr[0] ); /* Equal only when rr[0]==0.0 */
35824
+
35820
35825
if( e>0 ){
35821
35826
while( e>=100 ){
35822
35827
e -= 100;
@@ -147606,32 +147611,32 @@ static Expr *substExpr(
147606
147611
if( pSubst->isOuterJoin ){
147607
147612
ExprSetProperty(pNew, EP_CanBeNull);
147608
147613
}
147609
- if( ExprHasProperty(pExpr,EP_OuterON|EP_InnerON) ){
147610
- sqlite3SetJoinExpr(pNew, pExpr->w.iJoin,
147611
- pExpr->flags & (EP_OuterON|EP_InnerON));
147612
- }
147613
- sqlite3ExprDelete(db, pExpr);
147614
- pExpr = pNew;
147615
- if( pExpr->op==TK_TRUEFALSE ){
147616
- pExpr->u.iValue = sqlite3ExprTruthValue(pExpr);
147617
- pExpr->op = TK_INTEGER;
147618
- ExprSetProperty(pExpr, EP_IntValue);
147614
+ if( pNew->op==TK_TRUEFALSE ){
147615
+ pNew->u.iValue = sqlite3ExprTruthValue(pNew);
147616
+ pNew->op = TK_INTEGER;
147617
+ ExprSetProperty(pNew, EP_IntValue);
147619
147618
}
147620
147619
147621
147620
/* Ensure that the expression now has an implicit collation sequence,
147622
147621
** just as it did when it was a column of a view or sub-query. */
147623
147622
{
147624
- CollSeq *pNat = sqlite3ExprCollSeq(pSubst->pParse, pExpr );
147623
+ CollSeq *pNat = sqlite3ExprCollSeq(pSubst->pParse, pNew );
147625
147624
CollSeq *pColl = sqlite3ExprCollSeq(pSubst->pParse,
147626
147625
pSubst->pCList->a[iColumn].pExpr
147627
147626
);
147628
- if( pNat!=pColl || (pExpr ->op!=TK_COLUMN && pExpr ->op!=TK_COLLATE) ){
147629
- pExpr = sqlite3ExprAddCollateString(pSubst->pParse, pExpr ,
147627
+ if( pNat!=pColl || (pNew ->op!=TK_COLUMN && pNew ->op!=TK_COLLATE) ){
147628
+ pNew = sqlite3ExprAddCollateString(pSubst->pParse, pNew ,
147630
147629
(pColl ? pColl->zName : "BINARY")
147631
147630
);
147632
147631
}
147633
147632
}
147634
- ExprClearProperty(pExpr, EP_Collate);
147633
+ ExprClearProperty(pNew, EP_Collate);
147634
+ if( ExprHasProperty(pExpr,EP_OuterON|EP_InnerON) ){
147635
+ sqlite3SetJoinExpr(pNew, pExpr->w.iJoin,
147636
+ pExpr->flags & (EP_OuterON|EP_InnerON));
147637
+ }
147638
+ sqlite3ExprDelete(db, pExpr);
147639
+ pExpr = pNew;
147635
147640
}
147636
147641
}
147637
147642
}else{
@@ -254955,7 +254960,7 @@ static void fts5SourceIdFunc(
254955
254960
){
254956
254961
assert( nArg==0 );
254957
254962
UNUSED_PARAM2(nArg, apUnused);
254958
- sqlite3_result_text(pCtx, "fts5: 2024-11-25 12:07:48 b95d11e958643b969c47a8e5857f3793b9e69700b8f1469371386369a26e577e ", -1, SQLITE_TRANSIENT);
254963
+ sqlite3_result_text(pCtx, "fts5: 2024-12-07 20:39:59 2aabe05e2e8cae4847a802ee2daddc1d7413d8fc560254d93ee3e72c14685b6c ", -1, SQLITE_TRANSIENT);
254959
254964
}
254960
254965
254961
254966
/*
0 commit comments