Fossil SCM

Update built-in SQLite to version 3.52.0 final.

drh 2026-03-06 16:20 trunk
Commit 81eeb1c2b544642d95f5c0fcd10329aed7be123301d5a08071327f6881753d6c
--- extsrc/shell.c
+++ extsrc/shell.c
@@ -25444,10 +25444,11 @@
2544425444
static const char *azProhibitedFunctions[] = {
2544525445
"edit",
2544625446
"fts3_tokenizer",
2544725447
"load_extension",
2544825448
"readfile",
25449
+ "realpath",
2544925450
"writefile",
2545025451
"zipfile",
2545125452
"zipfile_cds",
2545225453
};
2545325454
UNUSED_PARAMETER(zA1);
2545425455
--- extsrc/shell.c
+++ extsrc/shell.c
@@ -25444,10 +25444,11 @@
25444 static const char *azProhibitedFunctions[] = {
25445 "edit",
25446 "fts3_tokenizer",
25447 "load_extension",
25448 "readfile",
 
25449 "writefile",
25450 "zipfile",
25451 "zipfile_cds",
25452 };
25453 UNUSED_PARAMETER(zA1);
25454
--- extsrc/shell.c
+++ extsrc/shell.c
@@ -25444,10 +25444,11 @@
25444 static const char *azProhibitedFunctions[] = {
25445 "edit",
25446 "fts3_tokenizer",
25447 "load_extension",
25448 "readfile",
25449 "realpath",
25450 "writefile",
25451 "zipfile",
25452 "zipfile_cds",
25453 };
25454 UNUSED_PARAMETER(zA1);
25455
+9 -25
--- extsrc/sqlite3.c
+++ extsrc/sqlite3.c
@@ -16,11 +16,11 @@
1616
** if you want a wrapper to interface SQLite with your choice of programming
1717
** language. The code for the "sqlite3" command-line shell is also in a
1818
** separate file. This file contains only code for the core SQLite library.
1919
**
2020
** The content in this amalgamation comes from Fossil check-in
21
-** 7168988acbec2d8d51106a263e553f8942b8 with changes in files:
21
+** 557aeb43869d3585137b17690cb3b64f7de6 with changes in files:
2222
**
2323
**
2424
*/
2525
#ifndef SQLITE_AMALGAMATION
2626
#define SQLITE_CORE 1
@@ -467,14 +467,14 @@
467467
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
468468
** [sqlite_version()] and [sqlite_source_id()].
469469
*/
470470
#define SQLITE_VERSION "3.52.0"
471471
#define SQLITE_VERSION_NUMBER 3052000
472
-#define SQLITE_SOURCE_ID "2026-03-03 19:43:19 7168988acbec2d8d51106a263e553f8942b8b23d983dbbe5028e0f9be68cbb83"
472
+#define SQLITE_SOURCE_ID "2026-03-06 16:01:44 557aeb43869d3585137b17690cb3b64f7de6921774daae9e56403c3717dceab6"
473473
#define SQLITE_SCM_BRANCH "trunk"
474
-#define SQLITE_SCM_TAGS ""
475
-#define SQLITE_SCM_DATETIME "2026-03-03T19:43:19.771Z"
474
+#define SQLITE_SCM_TAGS "release major-release version-3.52.0"
475
+#define SQLITE_SCM_DATETIME "2026-03-06T16:01:44.367Z"
476476
477477
/*
478478
** CAPI3REF: Run-Time Library Version Numbers
479479
** KEYWORDS: sqlite3_version sqlite3_sourceid
480480
**
@@ -15446,10 +15446,11 @@
1544615446
#ifdef SQLITE_OMIT_FLOATING_POINT
1544715447
# define double sqlite_int64
1544815448
# define float sqlite_int64
1544915449
# define fabs(X) ((X)<0?-(X):(X))
1545015450
# define sqlite3IsOverflow(X) 0
15451
+# define INFINITY (9223372036854775807LL)
1545115452
# ifndef SQLITE_BIG_DBL
1545215453
# define SQLITE_BIG_DBL (((sqlite3_int64)1)<<50)
1545315454
# endif
1545415455
# define SQLITE_OMIT_DATETIME_FUNCS 1
1545515456
# define SQLITE_OMIT_TRACE 1
@@ -29801,15 +29802,16 @@
2980129802
/*
2980229803
** Initialize and deinitialize the mutex subsystem.
2980329804
*/
2980429805
static int checkMutexInit(void){
2980529806
pGlobalMutexMethods = sqlite3DefaultMutex();
29806
- return SQLITE_OK;
29807
+ return pGlobalMutexMethods->xMutexInit();
2980729808
}
2980829809
static int checkMutexEnd(void){
29810
+ int rc = pGlobalMutexMethods->xMutexEnd();
2980929811
pGlobalMutexMethods = 0;
29810
- return SQLITE_OK;
29812
+ return rc;
2981129813
}
2981229814
2981329815
/*
2981429816
** Allocate a mutex.
2981529817
*/
@@ -151151,40 +151153,22 @@
151151151153
nKey = pSO->nExpr;
151152151154
r1 = sqlite3GetTempReg(pParse);
151153151155
r2 = sqlite3GetTempRange(pParse, nKey+2);
151154151156
r3 = r2+nKey+1;
151155151157
151156
-#if 0 /* <-- Why the next block of code is commented out: (tag-20260125-a)
151157
- **
151158
- ** If the destination is DistQueue, then cursor (iParm+1) is open
151159
- ** on a second ephemeral index that holds all values previously
151160
- ** added to the queue. This code only runs during the setup phase
151161
- ** using the merge algorithm, and so the values here are already
151162
- ** guaranteed to be unique.
151163
- */
151164
- if( pDest->eDest==SRT_DistQueue ){
151165
- addrTest = sqlite3VdbeAddOp4Int(v, OP_Found, iParm+1, 0,
151166
- pIn->iSdst, pIn->nSdst);
151167
- VdbeCoverage(v);
151168
- }
151169
-#endif
151170151158
sqlite3VdbeAddOp3(v, OP_MakeRecord, pIn->iSdst, pIn->nSdst, r3);
151171151159
if( pDest->eDest==SRT_DistQueue ){
151172151160
sqlite3VdbeAddOp2(v, OP_IdxInsert, iParm+1, r3);
151173
- sqlite3VdbeChangeP5(v, OPFLAG_USESEEKRESULT);
151174151161
}
151175151162
for(ii=0; ii<nKey; ii++){
151176151163
sqlite3VdbeAddOp2(v, OP_SCopy,
151177151164
pIn->iSdst + pSO->a[ii].u.x.iOrderByCol - 1,
151178151165
r2+ii);
151179151166
}
151180151167
sqlite3VdbeAddOp2(v, OP_Sequence, iParm, r2+nKey);
151181151168
sqlite3VdbeAddOp3(v, OP_MakeRecord, r2, nKey+2, r1);
151182151169
sqlite3VdbeAddOp4Int(v, OP_IdxInsert, iParm, r1, r2, nKey+2);
151183
-#if 0 /* tag-20260125-a */
151184
- if( addrTest ) sqlite3VdbeJumpHere(v, addrTest);
151185
-#endif
151186151170
sqlite3ReleaseTempReg(pParse, r1);
151187151171
sqlite3ReleaseTempRange(pParse, r2, nKey+2);
151188151172
break;
151189151173
}
151190151174
#endif /* SQLITE_OMIT_CTE */
@@ -261871,11 +261855,11 @@
261871261855
int nArg, /* Number of args */
261872261856
sqlite3_value **apUnused /* Function arguments */
261873261857
){
261874261858
assert( nArg==0 );
261875261859
UNUSED_PARAM2(nArg, apUnused);
261876
- sqlite3_result_text(pCtx, "fts5: 2026-03-03 19:43:19 7168988acbec2d8d51106a263e553f8942b8b23d983dbbe5028e0f9be68cbb83", -1, SQLITE_TRANSIENT);
261860
+ sqlite3_result_text(pCtx, "fts5: 2026-03-06 16:01:44 557aeb43869d3585137b17690cb3b64f7de6921774daae9e56403c3717dceab6", -1, SQLITE_TRANSIENT);
261877261861
}
261878261862
261879261863
/*
261880261864
** Implementation of fts5_locale(LOCALE, TEXT) function.
261881261865
**
261882261866
--- extsrc/sqlite3.c
+++ extsrc/sqlite3.c
@@ -16,11 +16,11 @@
16 ** if you want a wrapper to interface SQLite with your choice of programming
17 ** language. The code for the "sqlite3" command-line shell is also in a
18 ** separate file. This file contains only code for the core SQLite library.
19 **
20 ** The content in this amalgamation comes from Fossil check-in
21 ** 7168988acbec2d8d51106a263e553f8942b8 with changes in files:
22 **
23 **
24 */
25 #ifndef SQLITE_AMALGAMATION
26 #define SQLITE_CORE 1
@@ -467,14 +467,14 @@
467 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
468 ** [sqlite_version()] and [sqlite_source_id()].
469 */
470 #define SQLITE_VERSION "3.52.0"
471 #define SQLITE_VERSION_NUMBER 3052000
472 #define SQLITE_SOURCE_ID "2026-03-03 19:43:19 7168988acbec2d8d51106a263e553f8942b8b23d983dbbe5028e0f9be68cbb83"
473 #define SQLITE_SCM_BRANCH "trunk"
474 #define SQLITE_SCM_TAGS ""
475 #define SQLITE_SCM_DATETIME "2026-03-03T19:43:19.771Z"
476
477 /*
478 ** CAPI3REF: Run-Time Library Version Numbers
479 ** KEYWORDS: sqlite3_version sqlite3_sourceid
480 **
@@ -15446,10 +15446,11 @@
15446 #ifdef SQLITE_OMIT_FLOATING_POINT
15447 # define double sqlite_int64
15448 # define float sqlite_int64
15449 # define fabs(X) ((X)<0?-(X):(X))
15450 # define sqlite3IsOverflow(X) 0
 
15451 # ifndef SQLITE_BIG_DBL
15452 # define SQLITE_BIG_DBL (((sqlite3_int64)1)<<50)
15453 # endif
15454 # define SQLITE_OMIT_DATETIME_FUNCS 1
15455 # define SQLITE_OMIT_TRACE 1
@@ -29801,15 +29802,16 @@
29801 /*
29802 ** Initialize and deinitialize the mutex subsystem.
29803 */
29804 static int checkMutexInit(void){
29805 pGlobalMutexMethods = sqlite3DefaultMutex();
29806 return SQLITE_OK;
29807 }
29808 static int checkMutexEnd(void){
 
29809 pGlobalMutexMethods = 0;
29810 return SQLITE_OK;
29811 }
29812
29813 /*
29814 ** Allocate a mutex.
29815 */
@@ -151151,40 +151153,22 @@
151151 nKey = pSO->nExpr;
151152 r1 = sqlite3GetTempReg(pParse);
151153 r2 = sqlite3GetTempRange(pParse, nKey+2);
151154 r3 = r2+nKey+1;
151155
151156 #if 0 /* <-- Why the next block of code is commented out: (tag-20260125-a)
151157 **
151158 ** If the destination is DistQueue, then cursor (iParm+1) is open
151159 ** on a second ephemeral index that holds all values previously
151160 ** added to the queue. This code only runs during the setup phase
151161 ** using the merge algorithm, and so the values here are already
151162 ** guaranteed to be unique.
151163 */
151164 if( pDest->eDest==SRT_DistQueue ){
151165 addrTest = sqlite3VdbeAddOp4Int(v, OP_Found, iParm+1, 0,
151166 pIn->iSdst, pIn->nSdst);
151167 VdbeCoverage(v);
151168 }
151169 #endif
151170 sqlite3VdbeAddOp3(v, OP_MakeRecord, pIn->iSdst, pIn->nSdst, r3);
151171 if( pDest->eDest==SRT_DistQueue ){
151172 sqlite3VdbeAddOp2(v, OP_IdxInsert, iParm+1, r3);
151173 sqlite3VdbeChangeP5(v, OPFLAG_USESEEKRESULT);
151174 }
151175 for(ii=0; ii<nKey; ii++){
151176 sqlite3VdbeAddOp2(v, OP_SCopy,
151177 pIn->iSdst + pSO->a[ii].u.x.iOrderByCol - 1,
151178 r2+ii);
151179 }
151180 sqlite3VdbeAddOp2(v, OP_Sequence, iParm, r2+nKey);
151181 sqlite3VdbeAddOp3(v, OP_MakeRecord, r2, nKey+2, r1);
151182 sqlite3VdbeAddOp4Int(v, OP_IdxInsert, iParm, r1, r2, nKey+2);
151183 #if 0 /* tag-20260125-a */
151184 if( addrTest ) sqlite3VdbeJumpHere(v, addrTest);
151185 #endif
151186 sqlite3ReleaseTempReg(pParse, r1);
151187 sqlite3ReleaseTempRange(pParse, r2, nKey+2);
151188 break;
151189 }
151190 #endif /* SQLITE_OMIT_CTE */
@@ -261871,11 +261855,11 @@
261871 int nArg, /* Number of args */
261872 sqlite3_value **apUnused /* Function arguments */
261873 ){
261874 assert( nArg==0 );
261875 UNUSED_PARAM2(nArg, apUnused);
261876 sqlite3_result_text(pCtx, "fts5: 2026-03-03 19:43:19 7168988acbec2d8d51106a263e553f8942b8b23d983dbbe5028e0f9be68cbb83", -1, SQLITE_TRANSIENT);
261877 }
261878
261879 /*
261880 ** Implementation of fts5_locale(LOCALE, TEXT) function.
261881 **
261882
--- extsrc/sqlite3.c
+++ extsrc/sqlite3.c
@@ -16,11 +16,11 @@
16 ** if you want a wrapper to interface SQLite with your choice of programming
17 ** language. The code for the "sqlite3" command-line shell is also in a
18 ** separate file. This file contains only code for the core SQLite library.
19 **
20 ** The content in this amalgamation comes from Fossil check-in
21 ** 557aeb43869d3585137b17690cb3b64f7de6 with changes in files:
22 **
23 **
24 */
25 #ifndef SQLITE_AMALGAMATION
26 #define SQLITE_CORE 1
@@ -467,14 +467,14 @@
467 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
468 ** [sqlite_version()] and [sqlite_source_id()].
469 */
470 #define SQLITE_VERSION "3.52.0"
471 #define SQLITE_VERSION_NUMBER 3052000
472 #define SQLITE_SOURCE_ID "2026-03-06 16:01:44 557aeb43869d3585137b17690cb3b64f7de6921774daae9e56403c3717dceab6"
473 #define SQLITE_SCM_BRANCH "trunk"
474 #define SQLITE_SCM_TAGS "release major-release version-3.52.0"
475 #define SQLITE_SCM_DATETIME "2026-03-06T16:01:44.367Z"
476
477 /*
478 ** CAPI3REF: Run-Time Library Version Numbers
479 ** KEYWORDS: sqlite3_version sqlite3_sourceid
480 **
@@ -15446,10 +15446,11 @@
15446 #ifdef SQLITE_OMIT_FLOATING_POINT
15447 # define double sqlite_int64
15448 # define float sqlite_int64
15449 # define fabs(X) ((X)<0?-(X):(X))
15450 # define sqlite3IsOverflow(X) 0
15451 # define INFINITY (9223372036854775807LL)
15452 # ifndef SQLITE_BIG_DBL
15453 # define SQLITE_BIG_DBL (((sqlite3_int64)1)<<50)
15454 # endif
15455 # define SQLITE_OMIT_DATETIME_FUNCS 1
15456 # define SQLITE_OMIT_TRACE 1
@@ -29801,15 +29802,16 @@
29802 /*
29803 ** Initialize and deinitialize the mutex subsystem.
29804 */
29805 static int checkMutexInit(void){
29806 pGlobalMutexMethods = sqlite3DefaultMutex();
29807 return pGlobalMutexMethods->xMutexInit();
29808 }
29809 static int checkMutexEnd(void){
29810 int rc = pGlobalMutexMethods->xMutexEnd();
29811 pGlobalMutexMethods = 0;
29812 return rc;
29813 }
29814
29815 /*
29816 ** Allocate a mutex.
29817 */
@@ -151151,40 +151153,22 @@
151153 nKey = pSO->nExpr;
151154 r1 = sqlite3GetTempReg(pParse);
151155 r2 = sqlite3GetTempRange(pParse, nKey+2);
151156 r3 = r2+nKey+1;
151157
 
 
 
 
 
 
 
 
 
 
 
 
 
 
151158 sqlite3VdbeAddOp3(v, OP_MakeRecord, pIn->iSdst, pIn->nSdst, r3);
151159 if( pDest->eDest==SRT_DistQueue ){
151160 sqlite3VdbeAddOp2(v, OP_IdxInsert, iParm+1, r3);
 
151161 }
151162 for(ii=0; ii<nKey; ii++){
151163 sqlite3VdbeAddOp2(v, OP_SCopy,
151164 pIn->iSdst + pSO->a[ii].u.x.iOrderByCol - 1,
151165 r2+ii);
151166 }
151167 sqlite3VdbeAddOp2(v, OP_Sequence, iParm, r2+nKey);
151168 sqlite3VdbeAddOp3(v, OP_MakeRecord, r2, nKey+2, r1);
151169 sqlite3VdbeAddOp4Int(v, OP_IdxInsert, iParm, r1, r2, nKey+2);
 
 
 
151170 sqlite3ReleaseTempReg(pParse, r1);
151171 sqlite3ReleaseTempRange(pParse, r2, nKey+2);
151172 break;
151173 }
151174 #endif /* SQLITE_OMIT_CTE */
@@ -261871,11 +261855,11 @@
261855 int nArg, /* Number of args */
261856 sqlite3_value **apUnused /* Function arguments */
261857 ){
261858 assert( nArg==0 );
261859 UNUSED_PARAM2(nArg, apUnused);
261860 sqlite3_result_text(pCtx, "fts5: 2026-03-06 16:01:44 557aeb43869d3585137b17690cb3b64f7de6921774daae9e56403c3717dceab6", -1, SQLITE_TRANSIENT);
261861 }
261862
261863 /*
261864 ** Implementation of fts5_locale(LOCALE, TEXT) function.
261865 **
261866
--- extsrc/sqlite3.h
+++ extsrc/sqlite3.h
@@ -146,14 +146,14 @@
146146
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
147147
** [sqlite_version()] and [sqlite_source_id()].
148148
*/
149149
#define SQLITE_VERSION "3.52.0"
150150
#define SQLITE_VERSION_NUMBER 3052000
151
-#define SQLITE_SOURCE_ID "2026-03-03 19:43:19 7168988acbec2d8d51106a263e553f8942b8b23d983dbbe5028e0f9be68cbb83"
151
+#define SQLITE_SOURCE_ID "2026-03-06 16:01:44 557aeb43869d3585137b17690cb3b64f7de6921774daae9e56403c3717dceab6"
152152
#define SQLITE_SCM_BRANCH "trunk"
153
-#define SQLITE_SCM_TAGS ""
154
-#define SQLITE_SCM_DATETIME "2026-03-03T19:43:19.771Z"
153
+#define SQLITE_SCM_TAGS "release major-release version-3.52.0"
154
+#define SQLITE_SCM_DATETIME "2026-03-06T16:01:44.367Z"
155155
156156
/*
157157
** CAPI3REF: Run-Time Library Version Numbers
158158
** KEYWORDS: sqlite3_version sqlite3_sourceid
159159
**
160160
--- extsrc/sqlite3.h
+++ extsrc/sqlite3.h
@@ -146,14 +146,14 @@
146 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
147 ** [sqlite_version()] and [sqlite_source_id()].
148 */
149 #define SQLITE_VERSION "3.52.0"
150 #define SQLITE_VERSION_NUMBER 3052000
151 #define SQLITE_SOURCE_ID "2026-03-03 19:43:19 7168988acbec2d8d51106a263e553f8942b8b23d983dbbe5028e0f9be68cbb83"
152 #define SQLITE_SCM_BRANCH "trunk"
153 #define SQLITE_SCM_TAGS ""
154 #define SQLITE_SCM_DATETIME "2026-03-03T19:43:19.771Z"
155
156 /*
157 ** CAPI3REF: Run-Time Library Version Numbers
158 ** KEYWORDS: sqlite3_version sqlite3_sourceid
159 **
160
--- extsrc/sqlite3.h
+++ extsrc/sqlite3.h
@@ -146,14 +146,14 @@
146 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
147 ** [sqlite_version()] and [sqlite_source_id()].
148 */
149 #define SQLITE_VERSION "3.52.0"
150 #define SQLITE_VERSION_NUMBER 3052000
151 #define SQLITE_SOURCE_ID "2026-03-06 16:01:44 557aeb43869d3585137b17690cb3b64f7de6921774daae9e56403c3717dceab6"
152 #define SQLITE_SCM_BRANCH "trunk"
153 #define SQLITE_SCM_TAGS "release major-release version-3.52.0"
154 #define SQLITE_SCM_DATETIME "2026-03-06T16:01:44.367Z"
155
156 /*
157 ** CAPI3REF: Run-Time Library Version Numbers
158 ** KEYWORDS: sqlite3_version sqlite3_sourceid
159 **
160

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button