Fossil SCM

Update the built-in SQLite to version 3.44.2.

drh 2023-11-24 12:59 trunk
Commit 3f97785608f1470be49526c6c775fa86286e413be4e9fc186f5c57fc1580c273
+3 -3
--- extsrc/shell.c
+++ extsrc/shell.c
@@ -892,12 +892,12 @@
892892
893893
/* Get stream info, either for designated output or error stream when
894894
** chix equals 1 or 2, or for an arbitrary stream when chix == 0.
895895
** In either case, ppst references a caller-owned PerStreamTags
896896
** struct which may be filled in if none of the known writable
897
-** streams is being held by consoleInfo. The ppf parameter is an
898
-** output when chix!=0 and an input when chix==0.
897
+** streams is being held by consoleInfo. The ppf parameter is a
898
+** byref output when chix!=0 and a byref input when chix==0.
899899
*/
900900
static PerStreamTags *
901901
getEmitStreamInfo(unsigned chix, PerStreamTags *ppst,
902902
/* in/out */ FILE **ppf){
903903
PerStreamTags *ppstTry;
@@ -906,11 +906,11 @@
906906
ppstTry = &consoleInfo.pstDesignated[chix];
907907
if( !isValidStreamInfo(ppstTry) ){
908908
ppstTry = &consoleInfo.pstSetup[chix];
909909
pfEmit = ppst->pf;
910910
}else pfEmit = ppstTry->pf;
911
- if( !isValidStreamInfo(ppst) ){
911
+ if( !isValidStreamInfo(ppstTry) ){
912912
pfEmit = (chix > 1)? stderr : stdout;
913913
ppstTry = ppst;
914914
streamOfConsole(pfEmit, ppstTry);
915915
}
916916
*ppf = pfEmit;
917917
--- extsrc/shell.c
+++ extsrc/shell.c
@@ -892,12 +892,12 @@
892
893 /* Get stream info, either for designated output or error stream when
894 ** chix equals 1 or 2, or for an arbitrary stream when chix == 0.
895 ** In either case, ppst references a caller-owned PerStreamTags
896 ** struct which may be filled in if none of the known writable
897 ** streams is being held by consoleInfo. The ppf parameter is an
898 ** output when chix!=0 and an input when chix==0.
899 */
900 static PerStreamTags *
901 getEmitStreamInfo(unsigned chix, PerStreamTags *ppst,
902 /* in/out */ FILE **ppf){
903 PerStreamTags *ppstTry;
@@ -906,11 +906,11 @@
906 ppstTry = &consoleInfo.pstDesignated[chix];
907 if( !isValidStreamInfo(ppstTry) ){
908 ppstTry = &consoleInfo.pstSetup[chix];
909 pfEmit = ppst->pf;
910 }else pfEmit = ppstTry->pf;
911 if( !isValidStreamInfo(ppst) ){
912 pfEmit = (chix > 1)? stderr : stdout;
913 ppstTry = ppst;
914 streamOfConsole(pfEmit, ppstTry);
915 }
916 *ppf = pfEmit;
917
--- extsrc/shell.c
+++ extsrc/shell.c
@@ -892,12 +892,12 @@
892
893 /* Get stream info, either for designated output or error stream when
894 ** chix equals 1 or 2, or for an arbitrary stream when chix == 0.
895 ** In either case, ppst references a caller-owned PerStreamTags
896 ** struct which may be filled in if none of the known writable
897 ** streams is being held by consoleInfo. The ppf parameter is a
898 ** byref output when chix!=0 and a byref input when chix==0.
899 */
900 static PerStreamTags *
901 getEmitStreamInfo(unsigned chix, PerStreamTags *ppst,
902 /* in/out */ FILE **ppf){
903 PerStreamTags *ppstTry;
@@ -906,11 +906,11 @@
906 ppstTry = &consoleInfo.pstDesignated[chix];
907 if( !isValidStreamInfo(ppstTry) ){
908 ppstTry = &consoleInfo.pstSetup[chix];
909 pfEmit = ppst->pf;
910 }else pfEmit = ppstTry->pf;
911 if( !isValidStreamInfo(ppstTry) ){
912 pfEmit = (chix > 1)? stderr : stdout;
913 ppstTry = ppst;
914 streamOfConsole(pfEmit, ppstTry);
915 }
916 *ppf = pfEmit;
917
+26 -17
--- extsrc/sqlite3.c
+++ extsrc/sqlite3.c
@@ -1,8 +1,8 @@
11
/******************************************************************************
22
** This file is an amalgamation of many separate C source files from SQLite
3
-** version 3.44.1. By combining all the individual C code files into this
3
+** version 3.44.2. By combining all the individual C code files into this
44
** single large file, the entire code can be compiled as a single translation
55
** unit. This allows many compilers to do optimizations that would not be
66
** possible if the files were compiled separately. Performance improvements
77
** of 5% or more are commonly seen when SQLite is compiled as a single
88
** translation unit.
@@ -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
-** d295f48e8f367b066b881780c98bdf980a1d.
21
+** ebead0e7230cd33bcec9f95d2183069565b9.
2222
*/
2323
#define SQLITE_CORE 1
2424
#define SQLITE_AMALGAMATION 1
2525
#ifndef SQLITE_PRIVATE
2626
# define SQLITE_PRIVATE static
@@ -457,13 +457,13 @@
457457
**
458458
** See also: [sqlite3_libversion()],
459459
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
460460
** [sqlite_version()] and [sqlite_source_id()].
461461
*/
462
-#define SQLITE_VERSION "3.44.1"
463
-#define SQLITE_VERSION_NUMBER 3044001
464
-#define SQLITE_SOURCE_ID "2023-11-22 14:18:12 d295f48e8f367b066b881780c98bdf980a1d550397d5ba0b0e49842c95b3e8b4"
462
+#define SQLITE_VERSION "3.44.2"
463
+#define SQLITE_VERSION_NUMBER 3044002
464
+#define SQLITE_SOURCE_ID "2023-11-24 11:41:44 ebead0e7230cd33bcec9f95d2183069565b9e709bf745c9b5db65cc0cbf92c0f"
465465
466466
/*
467467
** CAPI3REF: Run-Time Library Version Numbers
468468
** KEYWORDS: sqlite3_version sqlite3_sourceid
469469
**
@@ -84181,14 +84181,15 @@
8418184181
** sqlite3CorruptError(lineno)
8418284182
** sqlite3MisuseError(lineno)
8418384183
** sqlite3CantopenError(lineno)
8418484184
*/
8418584185
static void test_addop_breakpoint(int pc, Op *pOp){
84186
- static int n = 0;
84186
+ static u64 n = 0;
8418784187
(void)pc;
8418884188
(void)pOp;
8418984189
n++;
84190
+ if( n==LARGEST_UINT64 ) abort(); /* so that n is used, preventing a warning */
8419084191
}
8419184192
#endif
8419284193
8419384194
/*
8419484195
** Slow paths for sqlite3VdbeAddOp3() and sqlite3VdbeAddOp4Int() for the
@@ -92328,15 +92329,16 @@
9232892329
** sqlite3CorruptError(lineno)
9232992330
** sqlite3MisuseError(lineno)
9233092331
** sqlite3CantopenError(lineno)
9233192332
*/
9233292333
static void test_trace_breakpoint(int pc, Op *pOp, Vdbe *v){
92333
- static int n = 0;
92334
+ static u64 n = 0;
9233492335
(void)pc;
9233592336
(void)pOp;
9233692337
(void)v;
9233792338
n++;
92339
+ if( n==LARGEST_UINT64 ) abort(); /* So that n is used, preventing a warning */
9233892340
}
9233992341
#endif
9234092342
9234192343
/*
9234292344
** Invoke the VDBE coverage callback, if that callback is defined. This
@@ -143610,11 +143612,12 @@
143610143612
Expr *p;
143611143613
struct ExprList_item *a;
143612143614
NameContext sNC;
143613143615
143614143616
assert( pSelect!=0 );
143615
- assert( (pSelect->selFlags & SF_Resolved)!=0 );
143617
+ testcase( (pSelect->selFlags & SF_Resolved)==0 );
143618
+ assert( (pSelect->selFlags & SF_Resolved)!=0 || IN_RENAME_OBJECT );
143616143619
assert( pTab->nCol==pSelect->pEList->nExpr || pParse->nErr>0 );
143617143620
assert( aff==SQLITE_AFF_NONE || aff==SQLITE_AFF_BLOB );
143618143621
if( db->mallocFailed || IN_RENAME_OBJECT ) return;
143619143622
while( pSelect->pPrior ) pSelect = pSelect->pPrior;
143620143623
a = pSelect->pEList->a;
@@ -241504,22 +241507,28 @@
241504241507
}
241505241508
}
241506241509
241507241510
iOff = iStart;
241508241511
241509
- /* Set variable bLastInDoclist to true if this entry happens to be
241510
- ** the last rowid in the doclist for its term. */
241512
+ /* If the position-list for the entry being removed flows over past
241513
+ ** the end of this page, delete the portion of the position-list on the
241514
+ ** next page and beyond.
241515
+ **
241516
+ ** Set variable bLastInDoclist to true if this entry happens
241517
+ ** to be the last rowid in the doclist for its term. */
241518
+ if( iNextOff>=iPgIdx ){
241519
+ int pgno = pSeg->iLeafPgno+1;
241520
+ fts5SecureDeleteOverflow(p, pSeg->pSeg, pgno, &bLastInDoclist);
241521
+ iNextOff = iPgIdx;
241522
+ }
241523
+
241511241524
if( pSeg->bDel==0 ){
241512
- if( iNextOff>=iPgIdx ){
241513
- int pgno = pSeg->iLeafPgno+1;
241514
- fts5SecureDeleteOverflow(p, pSeg->pSeg, pgno, &bLastInDoclist);
241515
- iNextOff = iPgIdx;
241516
- }else{
241525
+ if( iNextOff!=iPgIdx ){
241517241526
/* Loop through the page-footer. If iNextOff (offset of the
241518241527
** entry following the one we are removing) is equal to the
241519241528
** offset of a key on this page, then the entry is the last
241520
- ** in its doclist. */
241529
+ ** in its doclist. */
241521241530
int iKeyOff = 0;
241522241531
for(iIdx=0; iIdx<nIdx; /* no-op */){
241523241532
u32 iVal = 0;
241524241533
iIdx += fts5GetVarint32(&aIdx[iIdx], iVal);
241525241534
iKeyOff += iVal;
@@ -247610,11 +247619,11 @@
247610247619
int nArg, /* Number of args */
247611247620
sqlite3_value **apUnused /* Function arguments */
247612247621
){
247613247622
assert( nArg==0 );
247614247623
UNUSED_PARAM2(nArg, apUnused);
247615
- sqlite3_result_text(pCtx, "fts5: 2023-11-22 14:18:12 d295f48e8f367b066b881780c98bdf980a1d550397d5ba0b0e49842c95b3e8b4", -1, SQLITE_TRANSIENT);
247624
+ sqlite3_result_text(pCtx, "fts5: 2023-11-24 11:41:44 ebead0e7230cd33bcec9f95d2183069565b9e709bf745c9b5db65cc0cbf92c0f", -1, SQLITE_TRANSIENT);
247616247625
}
247617247626
247618247627
/*
247619247628
** Return true if zName is the extension on one of the shadow tables used
247620247629
** by this module.
247621247630
--- extsrc/sqlite3.c
+++ extsrc/sqlite3.c
@@ -1,8 +1,8 @@
1 /******************************************************************************
2 ** This file is an amalgamation of many separate C source files from SQLite
3 ** version 3.44.1. By combining all the individual C code files into this
4 ** single large file, the entire code can be compiled as a single translation
5 ** unit. This allows many compilers to do optimizations that would not be
6 ** possible if the files were compiled separately. Performance improvements
7 ** of 5% or more are commonly seen when SQLite is compiled as a single
8 ** translation unit.
@@ -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 ** d295f48e8f367b066b881780c98bdf980a1d.
22 */
23 #define SQLITE_CORE 1
24 #define SQLITE_AMALGAMATION 1
25 #ifndef SQLITE_PRIVATE
26 # define SQLITE_PRIVATE static
@@ -457,13 +457,13 @@
457 **
458 ** See also: [sqlite3_libversion()],
459 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
460 ** [sqlite_version()] and [sqlite_source_id()].
461 */
462 #define SQLITE_VERSION "3.44.1"
463 #define SQLITE_VERSION_NUMBER 3044001
464 #define SQLITE_SOURCE_ID "2023-11-22 14:18:12 d295f48e8f367b066b881780c98bdf980a1d550397d5ba0b0e49842c95b3e8b4"
465
466 /*
467 ** CAPI3REF: Run-Time Library Version Numbers
468 ** KEYWORDS: sqlite3_version sqlite3_sourceid
469 **
@@ -84181,14 +84181,15 @@
84181 ** sqlite3CorruptError(lineno)
84182 ** sqlite3MisuseError(lineno)
84183 ** sqlite3CantopenError(lineno)
84184 */
84185 static void test_addop_breakpoint(int pc, Op *pOp){
84186 static int n = 0;
84187 (void)pc;
84188 (void)pOp;
84189 n++;
 
84190 }
84191 #endif
84192
84193 /*
84194 ** Slow paths for sqlite3VdbeAddOp3() and sqlite3VdbeAddOp4Int() for the
@@ -92328,15 +92329,16 @@
92328 ** sqlite3CorruptError(lineno)
92329 ** sqlite3MisuseError(lineno)
92330 ** sqlite3CantopenError(lineno)
92331 */
92332 static void test_trace_breakpoint(int pc, Op *pOp, Vdbe *v){
92333 static int n = 0;
92334 (void)pc;
92335 (void)pOp;
92336 (void)v;
92337 n++;
 
92338 }
92339 #endif
92340
92341 /*
92342 ** Invoke the VDBE coverage callback, if that callback is defined. This
@@ -143610,11 +143612,12 @@
143610 Expr *p;
143611 struct ExprList_item *a;
143612 NameContext sNC;
143613
143614 assert( pSelect!=0 );
143615 assert( (pSelect->selFlags & SF_Resolved)!=0 );
 
143616 assert( pTab->nCol==pSelect->pEList->nExpr || pParse->nErr>0 );
143617 assert( aff==SQLITE_AFF_NONE || aff==SQLITE_AFF_BLOB );
143618 if( db->mallocFailed || IN_RENAME_OBJECT ) return;
143619 while( pSelect->pPrior ) pSelect = pSelect->pPrior;
143620 a = pSelect->pEList->a;
@@ -241504,22 +241507,28 @@
241504 }
241505 }
241506
241507 iOff = iStart;
241508
241509 /* Set variable bLastInDoclist to true if this entry happens to be
241510 ** the last rowid in the doclist for its term. */
 
 
 
 
 
 
 
 
 
 
241511 if( pSeg->bDel==0 ){
241512 if( iNextOff>=iPgIdx ){
241513 int pgno = pSeg->iLeafPgno+1;
241514 fts5SecureDeleteOverflow(p, pSeg->pSeg, pgno, &bLastInDoclist);
241515 iNextOff = iPgIdx;
241516 }else{
241517 /* Loop through the page-footer. If iNextOff (offset of the
241518 ** entry following the one we are removing) is equal to the
241519 ** offset of a key on this page, then the entry is the last
241520 ** in its doclist. */
241521 int iKeyOff = 0;
241522 for(iIdx=0; iIdx<nIdx; /* no-op */){
241523 u32 iVal = 0;
241524 iIdx += fts5GetVarint32(&aIdx[iIdx], iVal);
241525 iKeyOff += iVal;
@@ -247610,11 +247619,11 @@
247610 int nArg, /* Number of args */
247611 sqlite3_value **apUnused /* Function arguments */
247612 ){
247613 assert( nArg==0 );
247614 UNUSED_PARAM2(nArg, apUnused);
247615 sqlite3_result_text(pCtx, "fts5: 2023-11-22 14:18:12 d295f48e8f367b066b881780c98bdf980a1d550397d5ba0b0e49842c95b3e8b4", -1, SQLITE_TRANSIENT);
247616 }
247617
247618 /*
247619 ** Return true if zName is the extension on one of the shadow tables used
247620 ** by this module.
247621
--- extsrc/sqlite3.c
+++ extsrc/sqlite3.c
@@ -1,8 +1,8 @@
1 /******************************************************************************
2 ** This file is an amalgamation of many separate C source files from SQLite
3 ** version 3.44.2. By combining all the individual C code files into this
4 ** single large file, the entire code can be compiled as a single translation
5 ** unit. This allows many compilers to do optimizations that would not be
6 ** possible if the files were compiled separately. Performance improvements
7 ** of 5% or more are commonly seen when SQLite is compiled as a single
8 ** translation unit.
@@ -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 ** ebead0e7230cd33bcec9f95d2183069565b9.
22 */
23 #define SQLITE_CORE 1
24 #define SQLITE_AMALGAMATION 1
25 #ifndef SQLITE_PRIVATE
26 # define SQLITE_PRIVATE static
@@ -457,13 +457,13 @@
457 **
458 ** See also: [sqlite3_libversion()],
459 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
460 ** [sqlite_version()] and [sqlite_source_id()].
461 */
462 #define SQLITE_VERSION "3.44.2"
463 #define SQLITE_VERSION_NUMBER 3044002
464 #define SQLITE_SOURCE_ID "2023-11-24 11:41:44 ebead0e7230cd33bcec9f95d2183069565b9e709bf745c9b5db65cc0cbf92c0f"
465
466 /*
467 ** CAPI3REF: Run-Time Library Version Numbers
468 ** KEYWORDS: sqlite3_version sqlite3_sourceid
469 **
@@ -84181,14 +84181,15 @@
84181 ** sqlite3CorruptError(lineno)
84182 ** sqlite3MisuseError(lineno)
84183 ** sqlite3CantopenError(lineno)
84184 */
84185 static void test_addop_breakpoint(int pc, Op *pOp){
84186 static u64 n = 0;
84187 (void)pc;
84188 (void)pOp;
84189 n++;
84190 if( n==LARGEST_UINT64 ) abort(); /* so that n is used, preventing a warning */
84191 }
84192 #endif
84193
84194 /*
84195 ** Slow paths for sqlite3VdbeAddOp3() and sqlite3VdbeAddOp4Int() for the
@@ -92328,15 +92329,16 @@
92329 ** sqlite3CorruptError(lineno)
92330 ** sqlite3MisuseError(lineno)
92331 ** sqlite3CantopenError(lineno)
92332 */
92333 static void test_trace_breakpoint(int pc, Op *pOp, Vdbe *v){
92334 static u64 n = 0;
92335 (void)pc;
92336 (void)pOp;
92337 (void)v;
92338 n++;
92339 if( n==LARGEST_UINT64 ) abort(); /* So that n is used, preventing a warning */
92340 }
92341 #endif
92342
92343 /*
92344 ** Invoke the VDBE coverage callback, if that callback is defined. This
@@ -143610,11 +143612,12 @@
143612 Expr *p;
143613 struct ExprList_item *a;
143614 NameContext sNC;
143615
143616 assert( pSelect!=0 );
143617 testcase( (pSelect->selFlags & SF_Resolved)==0 );
143618 assert( (pSelect->selFlags & SF_Resolved)!=0 || IN_RENAME_OBJECT );
143619 assert( pTab->nCol==pSelect->pEList->nExpr || pParse->nErr>0 );
143620 assert( aff==SQLITE_AFF_NONE || aff==SQLITE_AFF_BLOB );
143621 if( db->mallocFailed || IN_RENAME_OBJECT ) return;
143622 while( pSelect->pPrior ) pSelect = pSelect->pPrior;
143623 a = pSelect->pEList->a;
@@ -241504,22 +241507,28 @@
241507 }
241508 }
241509
241510 iOff = iStart;
241511
241512 /* If the position-list for the entry being removed flows over past
241513 ** the end of this page, delete the portion of the position-list on the
241514 ** next page and beyond.
241515 **
241516 ** Set variable bLastInDoclist to true if this entry happens
241517 ** to be the last rowid in the doclist for its term. */
241518 if( iNextOff>=iPgIdx ){
241519 int pgno = pSeg->iLeafPgno+1;
241520 fts5SecureDeleteOverflow(p, pSeg->pSeg, pgno, &bLastInDoclist);
241521 iNextOff = iPgIdx;
241522 }
241523
241524 if( pSeg->bDel==0 ){
241525 if( iNextOff!=iPgIdx ){
 
 
 
 
241526 /* Loop through the page-footer. If iNextOff (offset of the
241527 ** entry following the one we are removing) is equal to the
241528 ** offset of a key on this page, then the entry is the last
241529 ** in its doclist. */
241530 int iKeyOff = 0;
241531 for(iIdx=0; iIdx<nIdx; /* no-op */){
241532 u32 iVal = 0;
241533 iIdx += fts5GetVarint32(&aIdx[iIdx], iVal);
241534 iKeyOff += iVal;
@@ -247610,11 +247619,11 @@
247619 int nArg, /* Number of args */
247620 sqlite3_value **apUnused /* Function arguments */
247621 ){
247622 assert( nArg==0 );
247623 UNUSED_PARAM2(nArg, apUnused);
247624 sqlite3_result_text(pCtx, "fts5: 2023-11-24 11:41:44 ebead0e7230cd33bcec9f95d2183069565b9e709bf745c9b5db65cc0cbf92c0f", -1, SQLITE_TRANSIENT);
247625 }
247626
247627 /*
247628 ** Return true if zName is the extension on one of the shadow tables used
247629 ** by this module.
247630
--- extsrc/sqlite3.h
+++ extsrc/sqlite3.h
@@ -144,13 +144,13 @@
144144
**
145145
** See also: [sqlite3_libversion()],
146146
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
147147
** [sqlite_version()] and [sqlite_source_id()].
148148
*/
149
-#define SQLITE_VERSION "3.44.1"
150
-#define SQLITE_VERSION_NUMBER 3044001
151
-#define SQLITE_SOURCE_ID "2023-11-22 14:18:12 d295f48e8f367b066b881780c98bdf980a1d550397d5ba0b0e49842c95b3e8b4"
149
+#define SQLITE_VERSION "3.44.2"
150
+#define SQLITE_VERSION_NUMBER 3044002
151
+#define SQLITE_SOURCE_ID "2023-11-24 11:41:44 ebead0e7230cd33bcec9f95d2183069565b9e709bf745c9b5db65cc0cbf92c0f"
152152
153153
/*
154154
** CAPI3REF: Run-Time Library Version Numbers
155155
** KEYWORDS: sqlite3_version sqlite3_sourceid
156156
**
157157
--- extsrc/sqlite3.h
+++ extsrc/sqlite3.h
@@ -144,13 +144,13 @@
144 **
145 ** See also: [sqlite3_libversion()],
146 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
147 ** [sqlite_version()] and [sqlite_source_id()].
148 */
149 #define SQLITE_VERSION "3.44.1"
150 #define SQLITE_VERSION_NUMBER 3044001
151 #define SQLITE_SOURCE_ID "2023-11-22 14:18:12 d295f48e8f367b066b881780c98bdf980a1d550397d5ba0b0e49842c95b3e8b4"
152
153 /*
154 ** CAPI3REF: Run-Time Library Version Numbers
155 ** KEYWORDS: sqlite3_version sqlite3_sourceid
156 **
157
--- extsrc/sqlite3.h
+++ extsrc/sqlite3.h
@@ -144,13 +144,13 @@
144 **
145 ** See also: [sqlite3_libversion()],
146 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
147 ** [sqlite_version()] and [sqlite_source_id()].
148 */
149 #define SQLITE_VERSION "3.44.2"
150 #define SQLITE_VERSION_NUMBER 3044002
151 #define SQLITE_SOURCE_ID "2023-11-24 11:41:44 ebead0e7230cd33bcec9f95d2183069565b9e709bf745c9b5db65cc0cbf92c0f"
152
153 /*
154 ** CAPI3REF: Run-Time Library Version Numbers
155 ** KEYWORDS: sqlite3_version sqlite3_sourceid
156 **
157

Keyboard Shortcuts

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