Fossil SCM

Merge trunk into forumpost-locking branch.

stephan 2023-03-02 17:13 forumpost-locking merge
Commit 27c3423e897a2c918648390eaefe409daaee7de4e907a2f4a7bf3192f232b912
+1 -1
--- VERSION
+++ VERSION
@@ -1,1 +1,1 @@
1
-2.21
1
+2.22
22
--- VERSION
+++ VERSION
@@ -1,1 +1,1 @@
1 2.21
2
--- VERSION
+++ VERSION
@@ -1,1 +1,1 @@
1 2.22
2
+1 -1
--- extsrc/shell.c
+++ extsrc/shell.c
@@ -21283,11 +21283,11 @@
2128321283
}
2128421284
sqlite3_finalize(pStmt);
2128521285
return res;
2128621286
}
2128721287
21288
-#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_ENABLE_DBPAGE_VTAB)
21288
+#if defined(SQLITE_SHELL_HAVE_RECOVER)
2128921289
/*
2129021290
** Convert a 2-byte or 4-byte big-endian integer into a native integer
2129121291
*/
2129221292
static unsigned int get2byteInt(unsigned char *a){
2129321293
return (a[0]<<8) + a[1];
2129421294
--- extsrc/shell.c
+++ extsrc/shell.c
@@ -21283,11 +21283,11 @@
21283 }
21284 sqlite3_finalize(pStmt);
21285 return res;
21286 }
21287
21288 #if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_ENABLE_DBPAGE_VTAB)
21289 /*
21290 ** Convert a 2-byte or 4-byte big-endian integer into a native integer
21291 */
21292 static unsigned int get2byteInt(unsigned char *a){
21293 return (a[0]<<8) + a[1];
21294
--- extsrc/shell.c
+++ extsrc/shell.c
@@ -21283,11 +21283,11 @@
21283 }
21284 sqlite3_finalize(pStmt);
21285 return res;
21286 }
21287
21288 #if defined(SQLITE_SHELL_HAVE_RECOVER)
21289 /*
21290 ** Convert a 2-byte or 4-byte big-endian integer into a native integer
21291 */
21292 static unsigned int get2byteInt(unsigned char *a){
21293 return (a[0]<<8) + a[1];
21294
+14 -14
--- extsrc/sqlite3.c
+++ extsrc/sqlite3.c
@@ -452,11 +452,11 @@
452452
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
453453
** [sqlite_version()] and [sqlite_source_id()].
454454
*/
455455
#define SQLITE_VERSION "3.41.0"
456456
#define SQLITE_VERSION_NUMBER 3041000
457
-#define SQLITE_SOURCE_ID "2023-02-13 19:32:40 ecdeef43b27412b0b0b09e09a62ad3a03836a3fc80f2070268090e7ca8f02712"
457
+#define SQLITE_SOURCE_ID "2023-02-21 18:09:37 05941c2a04037fc3ed2ffae11f5d2260706f89431f463518740f72ada350866d"
458458
459459
/*
460460
** CAPI3REF: Run-Time Library Version Numbers
461461
** KEYWORDS: sqlite3_version sqlite3_sourceid
462462
**
@@ -1480,11 +1480,10 @@
14801480
** <li>[[SQLITE_FCNTL_CKPT_DONE]]
14811481
** The [SQLITE_FCNTL_CKPT_DONE] opcode is invoked from within a checkpoint
14821482
** in wal mode after the client has finished copying pages from the wal
14831483
** file to the database file, but before the *-shm file is updated to
14841484
** record the fact that the pages have been checkpointed.
1485
-** </ul>
14861485
**
14871486
** <li>[[SQLITE_FCNTL_EXTERNAL_READER]]
14881487
** The EXPERIMENTAL [SQLITE_FCNTL_EXTERNAL_READER] opcode is used to detect
14891488
** whether or not there is a database client in another process with a wal-mode
14901489
** transaction open on the database or not. It is only available on unix.The
@@ -1493,20 +1492,20 @@
14931492
** mode database and there exists at least one client in another process that
14941493
** currently has an SQL transaction open on the database. It is set to 0 if
14951494
** the database is not a wal-mode db, or if there is no such connection in any
14961495
** other process. This opcode cannot be used to detect transactions opened
14971496
** by clients within the current process, only within other processes.
1498
-** </ul>
14991497
**
15001498
** <li>[[SQLITE_FCNTL_CKSM_FILE]]
1501
-** Used by the cksmvfs VFS module only.
1499
+** The [SQLITE_FCNTL_CKSM_FILE] opcode is for use interally by the
1500
+** [checksum VFS shim] only.
15021501
**
15031502
** <li>[[SQLITE_FCNTL_RESET_CACHE]]
15041503
** If there is currently no transaction open on the database, and the
1505
-** database is not a temp db, then this file-control purges the contents
1506
-** of the in-memory page cache. If there is an open transaction, or if
1507
-** the db is a temp-db, it is a no-op, not an error.
1504
+** database is not a temp db, then the [SQLITE_FCNTL_RESET_CACHE] file-control
1505
+** purges the contents of the in-memory page cache. If there is an open
1506
+** transaction, or if the db is a temp-db, this opcode is a no-op, not an error.
15081507
** </ul>
15091508
*/
15101509
#define SQLITE_FCNTL_LOCKSTATE 1
15111510
#define SQLITE_FCNTL_GET_LOCKPROXYFILE 2
15121511
#define SQLITE_FCNTL_SET_LOCKPROXYFILE 3
@@ -10257,11 +10256,10 @@
1025710256
** [[SQLITE_SCANSTAT_SELECTID]] <dt>SQLITE_SCANSTAT_SELECTID</dt>
1025810257
** <dd>^The "int" variable pointed to by the V parameter will be set to the
1025910258
** id for the X-th query plan element. The id value is unique within the
1026010259
** statement. The select-id is the same value as is output in the first
1026110260
** column of an [EXPLAIN QUERY PLAN] query.
10262
-** </dl>
1026310261
**
1026410262
** [[SQLITE_SCANSTAT_PARENTID]] <dt>SQLITE_SCANSTAT_PARENTID</dt>
1026510263
** <dd>The "int" variable pointed to by the V parameter will be set to the
1026610264
** the id of the parent of the current query element, if applicable, or
1026710265
** to zero if the query element has no parent. This is the same value as
@@ -10271,10 +10269,11 @@
1027110269
** <dd>The sqlite3_int64 output value is set to the number of cycles,
1027210270
** according to the processor time-stamp counter, that elapsed while the
1027310271
** query element was being processed. This value is not available for
1027410272
** all query elements - if it is unavailable the output variable is
1027510273
** set to -1.
10274
+** </dl>
1027610275
*/
1027710276
#define SQLITE_SCANSTAT_NLOOP 0
1027810277
#define SQLITE_SCANSTAT_NVISIT 1
1027910278
#define SQLITE_SCANSTAT_EST 2
1028010279
#define SQLITE_SCANSTAT_NAME 3
@@ -10427,11 +10426,11 @@
1042710426
** seventh parameter is the final rowid value of the row being inserted
1042810427
** or updated. The value of the seventh parameter passed to the callback
1042910428
** function is not defined for operations on WITHOUT ROWID tables, or for
1043010429
** DELETE operations on rowid tables.
1043110430
**
10432
-** ^The sqlite3_update_hook(D,C,P) function returns the P argument from
10431
+** ^The sqlite3_preupdate_hook(D,C,P) function returns the P argument from
1043310432
** the previous call on the same [database connection] D, or NULL for
1043410433
** the first call on D.
1043510434
**
1043610435
** The [sqlite3_preupdate_old()], [sqlite3_preupdate_new()],
1043710436
** [sqlite3_preupdate_count()], and [sqlite3_preupdate_depth()] interfaces
@@ -91383,11 +91382,11 @@
9138391382
#ifdef SQLITE_DEBUG
9138491383
if( pOp->p2==OE_Abort ){ sqlite3VdbeAssertAbortable(p); }
9138591384
#endif
9138691385
9138791386
/* A deliberately coded "OP_Halt SQLITE_INTERNAL * * * *" opcode indicates
91388
- ** something is wrong with the code generator. Raise and assertion in order
91387
+ ** something is wrong with the code generator. Raise an assertion in order
9138991388
** to bring this to the attention of fuzzers and other testing tools. */
9139091389
assert( pOp->p1!=SQLITE_INTERNAL );
9139191390
9139291391
if( p->pFrame && pOp->p1==SQLITE_OK ){
9139391392
/* Halt the sub-program. Return control to the parent frame. */
@@ -125988,11 +125987,11 @@
125988125987
const u8 *zPass = (const u8*)"";
125989125988
int nPass = 0;
125990125989
const u8 *zHex = sqlite3_value_text(argv[0]);
125991125990
int nHex = sqlite3_value_bytes(argv[0]);
125992125991
#ifdef SQLITE_DEBUG
125993
- const u8 *zEnd = &zHex[nHex];
125992
+ const u8 *zEnd = zHex ? &zHex[nHex] : 0;
125994125993
#endif
125995125994
u8 *pBlob = 0;
125996125995
u8 *p = 0;
125997125996
125998125997
assert( argc==1 || argc==2 );
@@ -145034,10 +145033,11 @@
145034145033
assert( ExprUseUToken(pExpr) );
145035145034
if( sqlite3_stricmp(pExpr->u.zToken,"count") ) return 0; /* Is count() */
145036145035
assert( ExprUseXList(pExpr) );
145037145036
if( pExpr->x.pList!=0 ) return 0; /* Must be count(*) */
145038145037
if( p->pSrc->nSrc!=1 ) return 0; /* One table in FROM */
145038
+ if( ExprHasProperty(pExpr, EP_WinFunc) ) return 0;/* Not a window function */
145039145039
pSub = p->pSrc->a[0].pSelect;
145040145040
if( pSub==0 ) return 0; /* The FROM is a subquery */
145041145041
if( pSub->pPrior==0 ) return 0; /* Must be a compound ry */
145042145042
do{
145043145043
if( pSub->op!=TK_ALL && pSub->pPrior ) return 0; /* Must be UNION ALL */
@@ -146097,11 +146097,11 @@
146097146097
sqlite3VdbeAddOp2(v, OP_SorterSort, pAggInfo->sortingIdx, addrEnd);
146098146098
VdbeComment((v, "GROUP BY sort")); VdbeCoverage(v);
146099146099
pAggInfo->useSortingIdx = 1;
146100146100
}
146101146101
146102
- /* If there entries in pAgggInfo->aFunc[] that contain subexpressions
146102
+ /* If there are entries in pAgggInfo->aFunc[] that contain subexpressions
146103146103
** that are indexed (and that were previously identified and tagged
146104146104
** in optimizeAggregateUseOfIndexedExpr()) then those subexpressions
146105146105
** must now be converted into a TK_AGG_COLUMN node so that the value
146106146106
** is correctly pulled from the index rather than being recomputed. */
146107146107
if( pParse->pIdxEpr ){
@@ -158983,11 +158983,11 @@
158983158983
nRowEst += nEst;
158984158984
pBuilder->nRecValid = nRecValid;
158985158985
}
158986158986
158987158987
if( rc==SQLITE_OK ){
158988
- if( nRowEst > nRow0 ) nRowEst = nRow0;
158988
+ if( nRowEst > (tRowcnt)nRow0 ) nRowEst = nRow0;
158989158989
*pnRow = nRowEst;
158990158990
WHERETRACE(0x20,("IN row estimate: est=%d\n", nRowEst));
158991158991
}
158992158992
assert( pBuilder->nRecValid==nRecValid );
158993158993
return rc;
@@ -240169,11 +240169,11 @@
240169240169
int nArg, /* Number of args */
240170240170
sqlite3_value **apUnused /* Function arguments */
240171240171
){
240172240172
assert( nArg==0 );
240173240173
UNUSED_PARAM2(nArg, apUnused);
240174
- sqlite3_result_text(pCtx, "fts5: 2023-02-13 19:32:40 ecdeef43b27412b0b0b09e09a62ad3a03836a3fc80f2070268090e7ca8f02712", -1, SQLITE_TRANSIENT);
240174
+ sqlite3_result_text(pCtx, "fts5: 2023-02-21 18:09:37 05941c2a04037fc3ed2ffae11f5d2260706f89431f463518740f72ada350866d", -1, SQLITE_TRANSIENT);
240175240175
}
240176240176
240177240177
/*
240178240178
** Return true if zName is the extension on one of the shadow tables used
240179240179
** by this module.
240180240180
--- extsrc/sqlite3.c
+++ extsrc/sqlite3.c
@@ -452,11 +452,11 @@
452 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
453 ** [sqlite_version()] and [sqlite_source_id()].
454 */
455 #define SQLITE_VERSION "3.41.0"
456 #define SQLITE_VERSION_NUMBER 3041000
457 #define SQLITE_SOURCE_ID "2023-02-13 19:32:40 ecdeef43b27412b0b0b09e09a62ad3a03836a3fc80f2070268090e7ca8f02712"
458
459 /*
460 ** CAPI3REF: Run-Time Library Version Numbers
461 ** KEYWORDS: sqlite3_version sqlite3_sourceid
462 **
@@ -1480,11 +1480,10 @@
1480 ** <li>[[SQLITE_FCNTL_CKPT_DONE]]
1481 ** The [SQLITE_FCNTL_CKPT_DONE] opcode is invoked from within a checkpoint
1482 ** in wal mode after the client has finished copying pages from the wal
1483 ** file to the database file, but before the *-shm file is updated to
1484 ** record the fact that the pages have been checkpointed.
1485 ** </ul>
1486 **
1487 ** <li>[[SQLITE_FCNTL_EXTERNAL_READER]]
1488 ** The EXPERIMENTAL [SQLITE_FCNTL_EXTERNAL_READER] opcode is used to detect
1489 ** whether or not there is a database client in another process with a wal-mode
1490 ** transaction open on the database or not. It is only available on unix.The
@@ -1493,20 +1492,20 @@
1493 ** mode database and there exists at least one client in another process that
1494 ** currently has an SQL transaction open on the database. It is set to 0 if
1495 ** the database is not a wal-mode db, or if there is no such connection in any
1496 ** other process. This opcode cannot be used to detect transactions opened
1497 ** by clients within the current process, only within other processes.
1498 ** </ul>
1499 **
1500 ** <li>[[SQLITE_FCNTL_CKSM_FILE]]
1501 ** Used by the cksmvfs VFS module only.
 
1502 **
1503 ** <li>[[SQLITE_FCNTL_RESET_CACHE]]
1504 ** If there is currently no transaction open on the database, and the
1505 ** database is not a temp db, then this file-control purges the contents
1506 ** of the in-memory page cache. If there is an open transaction, or if
1507 ** the db is a temp-db, it is a no-op, not an error.
1508 ** </ul>
1509 */
1510 #define SQLITE_FCNTL_LOCKSTATE 1
1511 #define SQLITE_FCNTL_GET_LOCKPROXYFILE 2
1512 #define SQLITE_FCNTL_SET_LOCKPROXYFILE 3
@@ -10257,11 +10256,10 @@
10257 ** [[SQLITE_SCANSTAT_SELECTID]] <dt>SQLITE_SCANSTAT_SELECTID</dt>
10258 ** <dd>^The "int" variable pointed to by the V parameter will be set to the
10259 ** id for the X-th query plan element. The id value is unique within the
10260 ** statement. The select-id is the same value as is output in the first
10261 ** column of an [EXPLAIN QUERY PLAN] query.
10262 ** </dl>
10263 **
10264 ** [[SQLITE_SCANSTAT_PARENTID]] <dt>SQLITE_SCANSTAT_PARENTID</dt>
10265 ** <dd>The "int" variable pointed to by the V parameter will be set to the
10266 ** the id of the parent of the current query element, if applicable, or
10267 ** to zero if the query element has no parent. This is the same value as
@@ -10271,10 +10269,11 @@
10271 ** <dd>The sqlite3_int64 output value is set to the number of cycles,
10272 ** according to the processor time-stamp counter, that elapsed while the
10273 ** query element was being processed. This value is not available for
10274 ** all query elements - if it is unavailable the output variable is
10275 ** set to -1.
 
10276 */
10277 #define SQLITE_SCANSTAT_NLOOP 0
10278 #define SQLITE_SCANSTAT_NVISIT 1
10279 #define SQLITE_SCANSTAT_EST 2
10280 #define SQLITE_SCANSTAT_NAME 3
@@ -10427,11 +10426,11 @@
10427 ** seventh parameter is the final rowid value of the row being inserted
10428 ** or updated. The value of the seventh parameter passed to the callback
10429 ** function is not defined for operations on WITHOUT ROWID tables, or for
10430 ** DELETE operations on rowid tables.
10431 **
10432 ** ^The sqlite3_update_hook(D,C,P) function returns the P argument from
10433 ** the previous call on the same [database connection] D, or NULL for
10434 ** the first call on D.
10435 **
10436 ** The [sqlite3_preupdate_old()], [sqlite3_preupdate_new()],
10437 ** [sqlite3_preupdate_count()], and [sqlite3_preupdate_depth()] interfaces
@@ -91383,11 +91382,11 @@
91383 #ifdef SQLITE_DEBUG
91384 if( pOp->p2==OE_Abort ){ sqlite3VdbeAssertAbortable(p); }
91385 #endif
91386
91387 /* A deliberately coded "OP_Halt SQLITE_INTERNAL * * * *" opcode indicates
91388 ** something is wrong with the code generator. Raise and assertion in order
91389 ** to bring this to the attention of fuzzers and other testing tools. */
91390 assert( pOp->p1!=SQLITE_INTERNAL );
91391
91392 if( p->pFrame && pOp->p1==SQLITE_OK ){
91393 /* Halt the sub-program. Return control to the parent frame. */
@@ -125988,11 +125987,11 @@
125988 const u8 *zPass = (const u8*)"";
125989 int nPass = 0;
125990 const u8 *zHex = sqlite3_value_text(argv[0]);
125991 int nHex = sqlite3_value_bytes(argv[0]);
125992 #ifdef SQLITE_DEBUG
125993 const u8 *zEnd = &zHex[nHex];
125994 #endif
125995 u8 *pBlob = 0;
125996 u8 *p = 0;
125997
125998 assert( argc==1 || argc==2 );
@@ -145034,10 +145033,11 @@
145034 assert( ExprUseUToken(pExpr) );
145035 if( sqlite3_stricmp(pExpr->u.zToken,"count") ) return 0; /* Is count() */
145036 assert( ExprUseXList(pExpr) );
145037 if( pExpr->x.pList!=0 ) return 0; /* Must be count(*) */
145038 if( p->pSrc->nSrc!=1 ) return 0; /* One table in FROM */
 
145039 pSub = p->pSrc->a[0].pSelect;
145040 if( pSub==0 ) return 0; /* The FROM is a subquery */
145041 if( pSub->pPrior==0 ) return 0; /* Must be a compound ry */
145042 do{
145043 if( pSub->op!=TK_ALL && pSub->pPrior ) return 0; /* Must be UNION ALL */
@@ -146097,11 +146097,11 @@
146097 sqlite3VdbeAddOp2(v, OP_SorterSort, pAggInfo->sortingIdx, addrEnd);
146098 VdbeComment((v, "GROUP BY sort")); VdbeCoverage(v);
146099 pAggInfo->useSortingIdx = 1;
146100 }
146101
146102 /* If there entries in pAgggInfo->aFunc[] that contain subexpressions
146103 ** that are indexed (and that were previously identified and tagged
146104 ** in optimizeAggregateUseOfIndexedExpr()) then those subexpressions
146105 ** must now be converted into a TK_AGG_COLUMN node so that the value
146106 ** is correctly pulled from the index rather than being recomputed. */
146107 if( pParse->pIdxEpr ){
@@ -158983,11 +158983,11 @@
158983 nRowEst += nEst;
158984 pBuilder->nRecValid = nRecValid;
158985 }
158986
158987 if( rc==SQLITE_OK ){
158988 if( nRowEst > nRow0 ) nRowEst = nRow0;
158989 *pnRow = nRowEst;
158990 WHERETRACE(0x20,("IN row estimate: est=%d\n", nRowEst));
158991 }
158992 assert( pBuilder->nRecValid==nRecValid );
158993 return rc;
@@ -240169,11 +240169,11 @@
240169 int nArg, /* Number of args */
240170 sqlite3_value **apUnused /* Function arguments */
240171 ){
240172 assert( nArg==0 );
240173 UNUSED_PARAM2(nArg, apUnused);
240174 sqlite3_result_text(pCtx, "fts5: 2023-02-13 19:32:40 ecdeef43b27412b0b0b09e09a62ad3a03836a3fc80f2070268090e7ca8f02712", -1, SQLITE_TRANSIENT);
240175 }
240176
240177 /*
240178 ** Return true if zName is the extension on one of the shadow tables used
240179 ** by this module.
240180
--- extsrc/sqlite3.c
+++ extsrc/sqlite3.c
@@ -452,11 +452,11 @@
452 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
453 ** [sqlite_version()] and [sqlite_source_id()].
454 */
455 #define SQLITE_VERSION "3.41.0"
456 #define SQLITE_VERSION_NUMBER 3041000
457 #define SQLITE_SOURCE_ID "2023-02-21 18:09:37 05941c2a04037fc3ed2ffae11f5d2260706f89431f463518740f72ada350866d"
458
459 /*
460 ** CAPI3REF: Run-Time Library Version Numbers
461 ** KEYWORDS: sqlite3_version sqlite3_sourceid
462 **
@@ -1480,11 +1480,10 @@
1480 ** <li>[[SQLITE_FCNTL_CKPT_DONE]]
1481 ** The [SQLITE_FCNTL_CKPT_DONE] opcode is invoked from within a checkpoint
1482 ** in wal mode after the client has finished copying pages from the wal
1483 ** file to the database file, but before the *-shm file is updated to
1484 ** record the fact that the pages have been checkpointed.
 
1485 **
1486 ** <li>[[SQLITE_FCNTL_EXTERNAL_READER]]
1487 ** The EXPERIMENTAL [SQLITE_FCNTL_EXTERNAL_READER] opcode is used to detect
1488 ** whether or not there is a database client in another process with a wal-mode
1489 ** transaction open on the database or not. It is only available on unix.The
@@ -1493,20 +1492,20 @@
1492 ** mode database and there exists at least one client in another process that
1493 ** currently has an SQL transaction open on the database. It is set to 0 if
1494 ** the database is not a wal-mode db, or if there is no such connection in any
1495 ** other process. This opcode cannot be used to detect transactions opened
1496 ** by clients within the current process, only within other processes.
 
1497 **
1498 ** <li>[[SQLITE_FCNTL_CKSM_FILE]]
1499 ** The [SQLITE_FCNTL_CKSM_FILE] opcode is for use interally by the
1500 ** [checksum VFS shim] only.
1501 **
1502 ** <li>[[SQLITE_FCNTL_RESET_CACHE]]
1503 ** If there is currently no transaction open on the database, and the
1504 ** database is not a temp db, then the [SQLITE_FCNTL_RESET_CACHE] file-control
1505 ** purges the contents of the in-memory page cache. If there is an open
1506 ** transaction, or if the db is a temp-db, this opcode is a no-op, not an error.
1507 ** </ul>
1508 */
1509 #define SQLITE_FCNTL_LOCKSTATE 1
1510 #define SQLITE_FCNTL_GET_LOCKPROXYFILE 2
1511 #define SQLITE_FCNTL_SET_LOCKPROXYFILE 3
@@ -10257,11 +10256,10 @@
10256 ** [[SQLITE_SCANSTAT_SELECTID]] <dt>SQLITE_SCANSTAT_SELECTID</dt>
10257 ** <dd>^The "int" variable pointed to by the V parameter will be set to the
10258 ** id for the X-th query plan element. The id value is unique within the
10259 ** statement. The select-id is the same value as is output in the first
10260 ** column of an [EXPLAIN QUERY PLAN] query.
 
10261 **
10262 ** [[SQLITE_SCANSTAT_PARENTID]] <dt>SQLITE_SCANSTAT_PARENTID</dt>
10263 ** <dd>The "int" variable pointed to by the V parameter will be set to the
10264 ** the id of the parent of the current query element, if applicable, or
10265 ** to zero if the query element has no parent. This is the same value as
@@ -10271,10 +10269,11 @@
10269 ** <dd>The sqlite3_int64 output value is set to the number of cycles,
10270 ** according to the processor time-stamp counter, that elapsed while the
10271 ** query element was being processed. This value is not available for
10272 ** all query elements - if it is unavailable the output variable is
10273 ** set to -1.
10274 ** </dl>
10275 */
10276 #define SQLITE_SCANSTAT_NLOOP 0
10277 #define SQLITE_SCANSTAT_NVISIT 1
10278 #define SQLITE_SCANSTAT_EST 2
10279 #define SQLITE_SCANSTAT_NAME 3
@@ -10427,11 +10426,11 @@
10426 ** seventh parameter is the final rowid value of the row being inserted
10427 ** or updated. The value of the seventh parameter passed to the callback
10428 ** function is not defined for operations on WITHOUT ROWID tables, or for
10429 ** DELETE operations on rowid tables.
10430 **
10431 ** ^The sqlite3_preupdate_hook(D,C,P) function returns the P argument from
10432 ** the previous call on the same [database connection] D, or NULL for
10433 ** the first call on D.
10434 **
10435 ** The [sqlite3_preupdate_old()], [sqlite3_preupdate_new()],
10436 ** [sqlite3_preupdate_count()], and [sqlite3_preupdate_depth()] interfaces
@@ -91383,11 +91382,11 @@
91382 #ifdef SQLITE_DEBUG
91383 if( pOp->p2==OE_Abort ){ sqlite3VdbeAssertAbortable(p); }
91384 #endif
91385
91386 /* A deliberately coded "OP_Halt SQLITE_INTERNAL * * * *" opcode indicates
91387 ** something is wrong with the code generator. Raise an assertion in order
91388 ** to bring this to the attention of fuzzers and other testing tools. */
91389 assert( pOp->p1!=SQLITE_INTERNAL );
91390
91391 if( p->pFrame && pOp->p1==SQLITE_OK ){
91392 /* Halt the sub-program. Return control to the parent frame. */
@@ -125988,11 +125987,11 @@
125987 const u8 *zPass = (const u8*)"";
125988 int nPass = 0;
125989 const u8 *zHex = sqlite3_value_text(argv[0]);
125990 int nHex = sqlite3_value_bytes(argv[0]);
125991 #ifdef SQLITE_DEBUG
125992 const u8 *zEnd = zHex ? &zHex[nHex] : 0;
125993 #endif
125994 u8 *pBlob = 0;
125995 u8 *p = 0;
125996
125997 assert( argc==1 || argc==2 );
@@ -145034,10 +145033,11 @@
145033 assert( ExprUseUToken(pExpr) );
145034 if( sqlite3_stricmp(pExpr->u.zToken,"count") ) return 0; /* Is count() */
145035 assert( ExprUseXList(pExpr) );
145036 if( pExpr->x.pList!=0 ) return 0; /* Must be count(*) */
145037 if( p->pSrc->nSrc!=1 ) return 0; /* One table in FROM */
145038 if( ExprHasProperty(pExpr, EP_WinFunc) ) return 0;/* Not a window function */
145039 pSub = p->pSrc->a[0].pSelect;
145040 if( pSub==0 ) return 0; /* The FROM is a subquery */
145041 if( pSub->pPrior==0 ) return 0; /* Must be a compound ry */
145042 do{
145043 if( pSub->op!=TK_ALL && pSub->pPrior ) return 0; /* Must be UNION ALL */
@@ -146097,11 +146097,11 @@
146097 sqlite3VdbeAddOp2(v, OP_SorterSort, pAggInfo->sortingIdx, addrEnd);
146098 VdbeComment((v, "GROUP BY sort")); VdbeCoverage(v);
146099 pAggInfo->useSortingIdx = 1;
146100 }
146101
146102 /* If there are entries in pAgggInfo->aFunc[] that contain subexpressions
146103 ** that are indexed (and that were previously identified and tagged
146104 ** in optimizeAggregateUseOfIndexedExpr()) then those subexpressions
146105 ** must now be converted into a TK_AGG_COLUMN node so that the value
146106 ** is correctly pulled from the index rather than being recomputed. */
146107 if( pParse->pIdxEpr ){
@@ -158983,11 +158983,11 @@
158983 nRowEst += nEst;
158984 pBuilder->nRecValid = nRecValid;
158985 }
158986
158987 if( rc==SQLITE_OK ){
158988 if( nRowEst > (tRowcnt)nRow0 ) nRowEst = nRow0;
158989 *pnRow = nRowEst;
158990 WHERETRACE(0x20,("IN row estimate: est=%d\n", nRowEst));
158991 }
158992 assert( pBuilder->nRecValid==nRecValid );
158993 return rc;
@@ -240169,11 +240169,11 @@
240169 int nArg, /* Number of args */
240170 sqlite3_value **apUnused /* Function arguments */
240171 ){
240172 assert( nArg==0 );
240173 UNUSED_PARAM2(nArg, apUnused);
240174 sqlite3_result_text(pCtx, "fts5: 2023-02-21 18:09:37 05941c2a04037fc3ed2ffae11f5d2260706f89431f463518740f72ada350866d", -1, SQLITE_TRANSIENT);
240175 }
240176
240177 /*
240178 ** Return true if zName is the extension on one of the shadow tables used
240179 ** by this module.
240180
--- extsrc/sqlite3.h
+++ extsrc/sqlite3.h
@@ -146,11 +146,11 @@
146146
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
147147
** [sqlite_version()] and [sqlite_source_id()].
148148
*/
149149
#define SQLITE_VERSION "3.41.0"
150150
#define SQLITE_VERSION_NUMBER 3041000
151
-#define SQLITE_SOURCE_ID "2023-02-13 19:32:40 ecdeef43b27412b0b0b09e09a62ad3a03836a3fc80f2070268090e7ca8f02712"
151
+#define SQLITE_SOURCE_ID "2023-02-21 18:09:37 05941c2a04037fc3ed2ffae11f5d2260706f89431f463518740f72ada350866d"
152152
153153
/*
154154
** CAPI3REF: Run-Time Library Version Numbers
155155
** KEYWORDS: sqlite3_version sqlite3_sourceid
156156
**
@@ -1174,11 +1174,10 @@
11741174
** <li>[[SQLITE_FCNTL_CKPT_DONE]]
11751175
** The [SQLITE_FCNTL_CKPT_DONE] opcode is invoked from within a checkpoint
11761176
** in wal mode after the client has finished copying pages from the wal
11771177
** file to the database file, but before the *-shm file is updated to
11781178
** record the fact that the pages have been checkpointed.
1179
-** </ul>
11801179
**
11811180
** <li>[[SQLITE_FCNTL_EXTERNAL_READER]]
11821181
** The EXPERIMENTAL [SQLITE_FCNTL_EXTERNAL_READER] opcode is used to detect
11831182
** whether or not there is a database client in another process with a wal-mode
11841183
** transaction open on the database or not. It is only available on unix.The
@@ -1187,20 +1186,20 @@
11871186
** mode database and there exists at least one client in another process that
11881187
** currently has an SQL transaction open on the database. It is set to 0 if
11891188
** the database is not a wal-mode db, or if there is no such connection in any
11901189
** other process. This opcode cannot be used to detect transactions opened
11911190
** by clients within the current process, only within other processes.
1192
-** </ul>
11931191
**
11941192
** <li>[[SQLITE_FCNTL_CKSM_FILE]]
1195
-** Used by the cksmvfs VFS module only.
1193
+** The [SQLITE_FCNTL_CKSM_FILE] opcode is for use interally by the
1194
+** [checksum VFS shim] only.
11961195
**
11971196
** <li>[[SQLITE_FCNTL_RESET_CACHE]]
11981197
** If there is currently no transaction open on the database, and the
1199
-** database is not a temp db, then this file-control purges the contents
1200
-** of the in-memory page cache. If there is an open transaction, or if
1201
-** the db is a temp-db, it is a no-op, not an error.
1198
+** database is not a temp db, then the [SQLITE_FCNTL_RESET_CACHE] file-control
1199
+** purges the contents of the in-memory page cache. If there is an open
1200
+** transaction, or if the db is a temp-db, this opcode is a no-op, not an error.
12021201
** </ul>
12031202
*/
12041203
#define SQLITE_FCNTL_LOCKSTATE 1
12051204
#define SQLITE_FCNTL_GET_LOCKPROXYFILE 2
12061205
#define SQLITE_FCNTL_SET_LOCKPROXYFILE 3
@@ -9951,11 +9950,10 @@
99519950
** [[SQLITE_SCANSTAT_SELECTID]] <dt>SQLITE_SCANSTAT_SELECTID</dt>
99529951
** <dd>^The "int" variable pointed to by the V parameter will be set to the
99539952
** id for the X-th query plan element. The id value is unique within the
99549953
** statement. The select-id is the same value as is output in the first
99559954
** column of an [EXPLAIN QUERY PLAN] query.
9956
-** </dl>
99579955
**
99589956
** [[SQLITE_SCANSTAT_PARENTID]] <dt>SQLITE_SCANSTAT_PARENTID</dt>
99599957
** <dd>The "int" variable pointed to by the V parameter will be set to the
99609958
** the id of the parent of the current query element, if applicable, or
99619959
** to zero if the query element has no parent. This is the same value as
@@ -9965,10 +9963,11 @@
99659963
** <dd>The sqlite3_int64 output value is set to the number of cycles,
99669964
** according to the processor time-stamp counter, that elapsed while the
99679965
** query element was being processed. This value is not available for
99689966
** all query elements - if it is unavailable the output variable is
99699967
** set to -1.
9968
+** </dl>
99709969
*/
99719970
#define SQLITE_SCANSTAT_NLOOP 0
99729971
#define SQLITE_SCANSTAT_NVISIT 1
99739972
#define SQLITE_SCANSTAT_EST 2
99749973
#define SQLITE_SCANSTAT_NAME 3
@@ -10121,11 +10120,11 @@
1012110120
** seventh parameter is the final rowid value of the row being inserted
1012210121
** or updated. The value of the seventh parameter passed to the callback
1012310122
** function is not defined for operations on WITHOUT ROWID tables, or for
1012410123
** DELETE operations on rowid tables.
1012510124
**
10126
-** ^The sqlite3_update_hook(D,C,P) function returns the P argument from
10125
+** ^The sqlite3_preupdate_hook(D,C,P) function returns the P argument from
1012710126
** the previous call on the same [database connection] D, or NULL for
1012810127
** the first call on D.
1012910128
**
1013010129
** The [sqlite3_preupdate_old()], [sqlite3_preupdate_new()],
1013110130
** [sqlite3_preupdate_count()], and [sqlite3_preupdate_depth()] interfaces
1013210131
--- extsrc/sqlite3.h
+++ extsrc/sqlite3.h
@@ -146,11 +146,11 @@
146 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
147 ** [sqlite_version()] and [sqlite_source_id()].
148 */
149 #define SQLITE_VERSION "3.41.0"
150 #define SQLITE_VERSION_NUMBER 3041000
151 #define SQLITE_SOURCE_ID "2023-02-13 19:32:40 ecdeef43b27412b0b0b09e09a62ad3a03836a3fc80f2070268090e7ca8f02712"
152
153 /*
154 ** CAPI3REF: Run-Time Library Version Numbers
155 ** KEYWORDS: sqlite3_version sqlite3_sourceid
156 **
@@ -1174,11 +1174,10 @@
1174 ** <li>[[SQLITE_FCNTL_CKPT_DONE]]
1175 ** The [SQLITE_FCNTL_CKPT_DONE] opcode is invoked from within a checkpoint
1176 ** in wal mode after the client has finished copying pages from the wal
1177 ** file to the database file, but before the *-shm file is updated to
1178 ** record the fact that the pages have been checkpointed.
1179 ** </ul>
1180 **
1181 ** <li>[[SQLITE_FCNTL_EXTERNAL_READER]]
1182 ** The EXPERIMENTAL [SQLITE_FCNTL_EXTERNAL_READER] opcode is used to detect
1183 ** whether or not there is a database client in another process with a wal-mode
1184 ** transaction open on the database or not. It is only available on unix.The
@@ -1187,20 +1186,20 @@
1187 ** mode database and there exists at least one client in another process that
1188 ** currently has an SQL transaction open on the database. It is set to 0 if
1189 ** the database is not a wal-mode db, or if there is no such connection in any
1190 ** other process. This opcode cannot be used to detect transactions opened
1191 ** by clients within the current process, only within other processes.
1192 ** </ul>
1193 **
1194 ** <li>[[SQLITE_FCNTL_CKSM_FILE]]
1195 ** Used by the cksmvfs VFS module only.
 
1196 **
1197 ** <li>[[SQLITE_FCNTL_RESET_CACHE]]
1198 ** If there is currently no transaction open on the database, and the
1199 ** database is not a temp db, then this file-control purges the contents
1200 ** of the in-memory page cache. If there is an open transaction, or if
1201 ** the db is a temp-db, it is a no-op, not an error.
1202 ** </ul>
1203 */
1204 #define SQLITE_FCNTL_LOCKSTATE 1
1205 #define SQLITE_FCNTL_GET_LOCKPROXYFILE 2
1206 #define SQLITE_FCNTL_SET_LOCKPROXYFILE 3
@@ -9951,11 +9950,10 @@
9951 ** [[SQLITE_SCANSTAT_SELECTID]] <dt>SQLITE_SCANSTAT_SELECTID</dt>
9952 ** <dd>^The "int" variable pointed to by the V parameter will be set to the
9953 ** id for the X-th query plan element. The id value is unique within the
9954 ** statement. The select-id is the same value as is output in the first
9955 ** column of an [EXPLAIN QUERY PLAN] query.
9956 ** </dl>
9957 **
9958 ** [[SQLITE_SCANSTAT_PARENTID]] <dt>SQLITE_SCANSTAT_PARENTID</dt>
9959 ** <dd>The "int" variable pointed to by the V parameter will be set to the
9960 ** the id of the parent of the current query element, if applicable, or
9961 ** to zero if the query element has no parent. This is the same value as
@@ -9965,10 +9963,11 @@
9965 ** <dd>The sqlite3_int64 output value is set to the number of cycles,
9966 ** according to the processor time-stamp counter, that elapsed while the
9967 ** query element was being processed. This value is not available for
9968 ** all query elements - if it is unavailable the output variable is
9969 ** set to -1.
 
9970 */
9971 #define SQLITE_SCANSTAT_NLOOP 0
9972 #define SQLITE_SCANSTAT_NVISIT 1
9973 #define SQLITE_SCANSTAT_EST 2
9974 #define SQLITE_SCANSTAT_NAME 3
@@ -10121,11 +10120,11 @@
10121 ** seventh parameter is the final rowid value of the row being inserted
10122 ** or updated. The value of the seventh parameter passed to the callback
10123 ** function is not defined for operations on WITHOUT ROWID tables, or for
10124 ** DELETE operations on rowid tables.
10125 **
10126 ** ^The sqlite3_update_hook(D,C,P) function returns the P argument from
10127 ** the previous call on the same [database connection] D, or NULL for
10128 ** the first call on D.
10129 **
10130 ** The [sqlite3_preupdate_old()], [sqlite3_preupdate_new()],
10131 ** [sqlite3_preupdate_count()], and [sqlite3_preupdate_depth()] interfaces
10132
--- extsrc/sqlite3.h
+++ extsrc/sqlite3.h
@@ -146,11 +146,11 @@
146 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
147 ** [sqlite_version()] and [sqlite_source_id()].
148 */
149 #define SQLITE_VERSION "3.41.0"
150 #define SQLITE_VERSION_NUMBER 3041000
151 #define SQLITE_SOURCE_ID "2023-02-21 18:09:37 05941c2a04037fc3ed2ffae11f5d2260706f89431f463518740f72ada350866d"
152
153 /*
154 ** CAPI3REF: Run-Time Library Version Numbers
155 ** KEYWORDS: sqlite3_version sqlite3_sourceid
156 **
@@ -1174,11 +1174,10 @@
1174 ** <li>[[SQLITE_FCNTL_CKPT_DONE]]
1175 ** The [SQLITE_FCNTL_CKPT_DONE] opcode is invoked from within a checkpoint
1176 ** in wal mode after the client has finished copying pages from the wal
1177 ** file to the database file, but before the *-shm file is updated to
1178 ** record the fact that the pages have been checkpointed.
 
1179 **
1180 ** <li>[[SQLITE_FCNTL_EXTERNAL_READER]]
1181 ** The EXPERIMENTAL [SQLITE_FCNTL_EXTERNAL_READER] opcode is used to detect
1182 ** whether or not there is a database client in another process with a wal-mode
1183 ** transaction open on the database or not. It is only available on unix.The
@@ -1187,20 +1186,20 @@
1186 ** mode database and there exists at least one client in another process that
1187 ** currently has an SQL transaction open on the database. It is set to 0 if
1188 ** the database is not a wal-mode db, or if there is no such connection in any
1189 ** other process. This opcode cannot be used to detect transactions opened
1190 ** by clients within the current process, only within other processes.
 
1191 **
1192 ** <li>[[SQLITE_FCNTL_CKSM_FILE]]
1193 ** The [SQLITE_FCNTL_CKSM_FILE] opcode is for use interally by the
1194 ** [checksum VFS shim] only.
1195 **
1196 ** <li>[[SQLITE_FCNTL_RESET_CACHE]]
1197 ** If there is currently no transaction open on the database, and the
1198 ** database is not a temp db, then the [SQLITE_FCNTL_RESET_CACHE] file-control
1199 ** purges the contents of the in-memory page cache. If there is an open
1200 ** transaction, or if the db is a temp-db, this opcode is a no-op, not an error.
1201 ** </ul>
1202 */
1203 #define SQLITE_FCNTL_LOCKSTATE 1
1204 #define SQLITE_FCNTL_GET_LOCKPROXYFILE 2
1205 #define SQLITE_FCNTL_SET_LOCKPROXYFILE 3
@@ -9951,11 +9950,10 @@
9950 ** [[SQLITE_SCANSTAT_SELECTID]] <dt>SQLITE_SCANSTAT_SELECTID</dt>
9951 ** <dd>^The "int" variable pointed to by the V parameter will be set to the
9952 ** id for the X-th query plan element. The id value is unique within the
9953 ** statement. The select-id is the same value as is output in the first
9954 ** column of an [EXPLAIN QUERY PLAN] query.
 
9955 **
9956 ** [[SQLITE_SCANSTAT_PARENTID]] <dt>SQLITE_SCANSTAT_PARENTID</dt>
9957 ** <dd>The "int" variable pointed to by the V parameter will be set to the
9958 ** the id of the parent of the current query element, if applicable, or
9959 ** to zero if the query element has no parent. This is the same value as
@@ -9965,10 +9963,11 @@
9963 ** <dd>The sqlite3_int64 output value is set to the number of cycles,
9964 ** according to the processor time-stamp counter, that elapsed while the
9965 ** query element was being processed. This value is not available for
9966 ** all query elements - if it is unavailable the output variable is
9967 ** set to -1.
9968 ** </dl>
9969 */
9970 #define SQLITE_SCANSTAT_NLOOP 0
9971 #define SQLITE_SCANSTAT_NVISIT 1
9972 #define SQLITE_SCANSTAT_EST 2
9973 #define SQLITE_SCANSTAT_NAME 3
@@ -10121,11 +10120,11 @@
10120 ** seventh parameter is the final rowid value of the row being inserted
10121 ** or updated. The value of the seventh parameter passed to the callback
10122 ** function is not defined for operations on WITHOUT ROWID tables, or for
10123 ** DELETE operations on rowid tables.
10124 **
10125 ** ^The sqlite3_preupdate_hook(D,C,P) function returns the P argument from
10126 ** the previous call on the same [database connection] D, or NULL for
10127 ** the first call on D.
10128 **
10129 ** The [sqlite3_preupdate_old()], [sqlite3_preupdate_new()],
10130 ** [sqlite3_preupdate_count()], and [sqlite3_preupdate_depth()] interfaces
10131
--- src/allrepo.c
+++ src/allrepo.c
@@ -108,10 +108,12 @@
108108
**
109109
** rebuild Rebuild on all repositories. The command line options
110110
** supported by the rebuild command itself, if any are
111111
** present, are passed along verbatim. The --force and
112112
** --randomize options are not supported.
113
+**
114
+** remote Show remote hosts for all repositories.
113115
**
114116
** repack Look for extra compression in all repositories.
115117
**
116118
** sync Run a "sync" on all repositories. Only the --verbose
117119
** and --unversioned and --share-links options are supported.
118120
--- src/allrepo.c
+++ src/allrepo.c
@@ -108,10 +108,12 @@
108 **
109 ** rebuild Rebuild on all repositories. The command line options
110 ** supported by the rebuild command itself, if any are
111 ** present, are passed along verbatim. The --force and
112 ** --randomize options are not supported.
 
 
113 **
114 ** repack Look for extra compression in all repositories.
115 **
116 ** sync Run a "sync" on all repositories. Only the --verbose
117 ** and --unversioned and --share-links options are supported.
118
--- src/allrepo.c
+++ src/allrepo.c
@@ -108,10 +108,12 @@
108 **
109 ** rebuild Rebuild on all repositories. The command line options
110 ** supported by the rebuild command itself, if any are
111 ** present, are passed along verbatim. The --force and
112 ** --randomize options are not supported.
113 **
114 ** remote Show remote hosts for all repositories.
115 **
116 ** repack Look for extra compression in all repositories.
117 **
118 ** sync Run a "sync" on all repositories. Only the --verbose
119 ** and --unversioned and --share-links options are supported.
120
+23 -20
--- src/tar.c
+++ src/tar.c
@@ -704,39 +704,42 @@
704704
return zName;
705705
}
706706
707707
/*
708708
** WEBPAGE: tarball
709
-** URL: /tarball
710
-**
711
-** Generate a compressed tarball for the check-in specified by the "r"
712
-** query parameter. Return that compressed tarball as the HTTP reply
713
-** content.
714
-**
715
-** The r= and name= query parameters can be specified as extensions to the
716
-** URI. Example, the following URIs are all equivalent:
709
+** URL: /tarball/[VERSION/]NAME.tar.gz
710
+**
711
+** Generate a compressed tarball for the check-in specified by VERSION.
712
+** The tarball is called NAME.tar.gz and has a top-level directory called
713
+** NAME.
714
+**
715
+** The optional VERSION element defaults to "trunk" per the r= rules below.
716
+** All of the following URLs are equivalent:
717717
**
718718
** /tarball/release/xyz.tar.gz
719719
** /tarball?r=release&name=xyz.tar.gz
720720
** /tarball/xyz.tar.gz?r=release
721721
** /tarball?name=release/xyz.tar.gz
722722
**
723723
** Query parameters:
724724
**
725
-** name=NAME[.tar.gz] The base name of the output file. The default
726
-** value is a configuration parameter in the project
727
-** settings. A prefix of the name, omitting the
728
-** extension, is used as the top-most directory name.
725
+** name=[CKIN/]NAME The optional CKIN component of the name= parameter
726
+** identifies the check-in from which the tarball is
727
+** constructed. If CKIN is omitted and there is no
728
+** r= query parameter, then use "trunk". NAME is the
729
+** name of the download file. The top-level directory
730
+** in the generated tarball is called by NAME with the
731
+** file extension removed.
729732
**
730
-** r=TAG The check-in that is turned into a compressed tarball.
731
-** Defaults to "trunk". This query parameter used to
732
-** be called "uuid" and "uuid" is still accepted for
733
-** backwards compatibility. If the name= query parameter
734
-** contains one "/" character then the part before the /
735
-** is the TAG and the part after the / is the true name.
736
-** If no TAG is specified by any of the above means, then
737
-** "trunk" is used as the default.
733
+** r=TAG TAG identifies the check-in that is turned into a
734
+** compressed tarball. The default value is "trunk".
735
+** If r= is omitted and if the name= query parameter
736
+** contains one "/" character then the of part the
737
+** name= value before the / becomes the TAG and the
738
+** part of the name= value after the / is the download
739
+** filename. If no check-in is specified by either
740
+** name= or r=, then "trunk" is used.
738741
**
739742
** in=PATTERN Only include files that match the comma-separate
740743
** list of GLOB patterns in PATTERN, as with ex=
741744
**
742745
** ex=PATTERN Omit any file that match PATTERN. PATTERN is a
743746
--- src/tar.c
+++ src/tar.c
@@ -704,39 +704,42 @@
704 return zName;
705 }
706
707 /*
708 ** WEBPAGE: tarball
709 ** URL: /tarball
710 **
711 ** Generate a compressed tarball for the check-in specified by the "r"
712 ** query parameter. Return that compressed tarball as the HTTP reply
713 ** content.
714 **
715 ** The r= and name= query parameters can be specified as extensions to the
716 ** URI. Example, the following URIs are all equivalent:
717 **
718 ** /tarball/release/xyz.tar.gz
719 ** /tarball?r=release&name=xyz.tar.gz
720 ** /tarball/xyz.tar.gz?r=release
721 ** /tarball?name=release/xyz.tar.gz
722 **
723 ** Query parameters:
724 **
725 ** name=NAME[.tar.gz] The base name of the output file. The default
726 ** value is a configuration parameter in the project
727 ** settings. A prefix of the name, omitting the
728 ** extension, is used as the top-most directory name.
 
 
 
729 **
730 ** r=TAG The check-in that is turned into a compressed tarball.
731 ** Defaults to "trunk". This query parameter used to
732 ** be called "uuid" and "uuid" is still accepted for
733 ** backwards compatibility. If the name= query parameter
734 ** contains one "/" character then the part before the /
735 ** is the TAG and the part after the / is the true name.
736 ** If no TAG is specified by any of the above means, then
737 ** "trunk" is used as the default.
738 **
739 ** in=PATTERN Only include files that match the comma-separate
740 ** list of GLOB patterns in PATTERN, as with ex=
741 **
742 ** ex=PATTERN Omit any file that match PATTERN. PATTERN is a
743
--- src/tar.c
+++ src/tar.c
@@ -704,39 +704,42 @@
704 return zName;
705 }
706
707 /*
708 ** WEBPAGE: tarball
709 ** URL: /tarball/[VERSION/]NAME.tar.gz
710 **
711 ** Generate a compressed tarball for the check-in specified by VERSION.
712 ** The tarball is called NAME.tar.gz and has a top-level directory called
713 ** NAME.
714 **
715 ** The optional VERSION element defaults to "trunk" per the r= rules below.
716 ** All of the following URLs are equivalent:
717 **
718 ** /tarball/release/xyz.tar.gz
719 ** /tarball?r=release&name=xyz.tar.gz
720 ** /tarball/xyz.tar.gz?r=release
721 ** /tarball?name=release/xyz.tar.gz
722 **
723 ** Query parameters:
724 **
725 ** name=[CKIN/]NAME The optional CKIN component of the name= parameter
726 ** identifies the check-in from which the tarball is
727 ** constructed. If CKIN is omitted and there is no
728 ** r= query parameter, then use "trunk". NAME is the
729 ** name of the download file. The top-level directory
730 ** in the generated tarball is called by NAME with the
731 ** file extension removed.
732 **
733 ** r=TAG TAG identifies the check-in that is turned into a
734 ** compressed tarball. The default value is "trunk".
735 ** If r= is omitted and if the name= query parameter
736 ** contains one "/" character then the of part the
737 ** name= value before the / becomes the TAG and the
738 ** part of the name= value after the / is the download
739 ** filename. If no check-in is specified by either
740 ** name= or r=, then "trunk" is used.
741 **
742 ** in=PATTERN Only include files that match the comma-separate
743 ** list of GLOB patterns in PATTERN, as with ex=
744 **
745 ** ex=PATTERN Omit any file that match PATTERN. PATTERN is a
746
+31 -21
--- src/zip.c
+++ src/zip.c
@@ -864,35 +864,45 @@
864864
865865
/*
866866
** WEBPAGE: sqlar
867867
** WEBPAGE: zip
868868
**
869
-** Generate a ZIP or SQL archive for the check-in specified by the "r"
870
-** query parameter. Return the archive as the HTTP reply content.
871
-**
872
-** If the NAME contains one "/" then the part before the "/" is taken
873
-** as the TAG and the part after the "/" becomes the true name. Hence,
874
-** the following URLs are all equivalent:
875
-**
876
-** /sqlar/508c42a6398f8/download.sqlar
877
-** /sqlar?r=508c42a6398f8&name=download.sqlar
878
-** /sqlar/download.sqlar?r=508c42a6398f8
879
-** /sqlar?name=508c42a6398f8/download.sqlar
869
+** URLs:
870
+**
871
+** /zip/[VERSION/]NAME.zip
872
+** /sqlar/[VERSION/]NAME.sqlar
873
+**
874
+** Generate a ZIP Archive or an SQL Archive for the check-in specified by
875
+** VERSION. The archive is called NAME.zip or NAME.sqlar and has a top-level
876
+** directory called NAME.
877
+**
878
+** The optional VERSION element defaults to "trunk" per the r= rules below.
879
+** All of the following URLs are equivalent:
880
+**
881
+** /zip/release/xyz.zip
882
+** /zip?r=release&name=xyz.zip
883
+** /zip/xyz.zip?r=release
884
+** /zip?name=release/xyz.zip
880885
**
881886
** Query parameters:
882887
**
883
-** name=NAME The base name of the output file. The default
884
-** value is a configuration parameter in the project
885
-** settings. A prefix of the name, omitting the
886
-** extension, is used as the top-most directory name.
888
+** name=[CKIN/]NAME The optional CKIN component of the name= parameter
889
+** identifies the check-in from which the archive is
890
+** constructed. If CKIN is omitted and there is no
891
+** r= query parameter, then use "trunk". NAME is the
892
+** name of the download file. The top-level directory
893
+** in the generated archive is called by NAME with the
894
+** file extension removed.
887895
**
888
-** r=TAG The check-in that is turned into a ZIP archive.
889
-** Defaults to "trunk". This query parameter used to
890
-** be called "uuid" and the older "uuid" name is still
891
-** accepted for backwards compatibility. If this
892
-** query parameter is omitted, the latest "trunk"
893
-** check-in is used.
896
+** r=TAG TAG identifies the check-in that is turned into an
897
+** SQL or ZIP archive. The default value is "trunk".
898
+** If r= is omitted and if the name= query parameter
899
+** contains one "/" character then the of part the
900
+** name= value before the / becomes the TAG and the
901
+** part of the name= value after the / is the download
902
+** filename. If no check-in is specified by either
903
+** name= or r=, then "trunk" is used.
894904
**
895905
** in=PATTERN Only include files that match the comma-separate
896906
** list of GLOB patterns in PATTERN, as with ex=
897907
**
898908
** ex=PATTERN Omit any file that match PATTERN. PATTERN is a
899909
--- src/zip.c
+++ src/zip.c
@@ -864,35 +864,45 @@
864
865 /*
866 ** WEBPAGE: sqlar
867 ** WEBPAGE: zip
868 **
869 ** Generate a ZIP or SQL archive for the check-in specified by the "r"
870 ** query parameter. Return the archive as the HTTP reply content.
871 **
872 ** If the NAME contains one "/" then the part before the "/" is taken
873 ** as the TAG and the part after the "/" becomes the true name. Hence,
874 ** the following URLs are all equivalent:
875 **
876 ** /sqlar/508c42a6398f8/download.sqlar
877 ** /sqlar?r=508c42a6398f8&name=download.sqlar
878 ** /sqlar/download.sqlar?r=508c42a6398f8
879 ** /sqlar?name=508c42a6398f8/download.sqlar
 
 
 
 
 
880 **
881 ** Query parameters:
882 **
883 ** name=NAME The base name of the output file. The default
884 ** value is a configuration parameter in the project
885 ** settings. A prefix of the name, omitting the
886 ** extension, is used as the top-most directory name.
 
 
 
887 **
888 ** r=TAG The check-in that is turned into a ZIP archive.
889 ** Defaults to "trunk". This query parameter used to
890 ** be called "uuid" and the older "uuid" name is still
891 ** accepted for backwards compatibility. If this
892 ** query parameter is omitted, the latest "trunk"
893 ** check-in is used.
 
 
894 **
895 ** in=PATTERN Only include files that match the comma-separate
896 ** list of GLOB patterns in PATTERN, as with ex=
897 **
898 ** ex=PATTERN Omit any file that match PATTERN. PATTERN is a
899
--- src/zip.c
+++ src/zip.c
@@ -864,35 +864,45 @@
864
865 /*
866 ** WEBPAGE: sqlar
867 ** WEBPAGE: zip
868 **
869 ** URLs:
870 **
871 ** /zip/[VERSION/]NAME.zip
872 ** /sqlar/[VERSION/]NAME.sqlar
873 **
874 ** Generate a ZIP Archive or an SQL Archive for the check-in specified by
875 ** VERSION. The archive is called NAME.zip or NAME.sqlar and has a top-level
876 ** directory called NAME.
877 **
878 ** The optional VERSION element defaults to "trunk" per the r= rules below.
879 ** All of the following URLs are equivalent:
880 **
881 ** /zip/release/xyz.zip
882 ** /zip?r=release&name=xyz.zip
883 ** /zip/xyz.zip?r=release
884 ** /zip?name=release/xyz.zip
885 **
886 ** Query parameters:
887 **
888 ** name=[CKIN/]NAME The optional CKIN component of the name= parameter
889 ** identifies the check-in from which the archive is
890 ** constructed. If CKIN is omitted and there is no
891 ** r= query parameter, then use "trunk". NAME is the
892 ** name of the download file. The top-level directory
893 ** in the generated archive is called by NAME with the
894 ** file extension removed.
895 **
896 ** r=TAG TAG identifies the check-in that is turned into an
897 ** SQL or ZIP archive. The default value is "trunk".
898 ** If r= is omitted and if the name= query parameter
899 ** contains one "/" character then the of part the
900 ** name= value before the / becomes the TAG and the
901 ** part of the name= value after the / is the download
902 ** filename. If no check-in is specified by either
903 ** name= or r=, then "trunk" is used.
904 **
905 ** in=PATTERN Only include files that match the comma-separate
906 ** list of GLOB patterns in PATTERN, as with ex=
907 **
908 ** ex=PATTERN Omit any file that match PATTERN. PATTERN is a
909
--- www/changes.wiki
+++ www/changes.wiki
@@ -1,10 +1,13 @@
11
<title>Change Log</title>
22
3
-<h2 id='v2_21'>Changes for version 2.21 (pending)</h2>
3
+<h2 id='v2_22'>Changes for version 2.22 (pending)</h2>
4
+
5
+
6
+<h2 id='v2_21'>Changes for version 2.21 (2023-02-25)</h2>
47
* Users can request a password reset. This feature is disabledby default. Use
5
- the new [/help?cmd=self-pw-reset|self-pw-reset property] to enable it.
8
+ the new [/help?cmd=self-pw-reset|self-pw-reset property] to enable it.
69
New web pages [/help?cmd=/resetpw|/resetpw] and
710
[/help?cmd=/reqpwreset|/reqpwreset] added.
811
* Add the [/help?cmd=repack|fossil repack] command (together with
912
[/help?cmd=all|fossil all repack]) as a convenient way to optimize the
1013
size of one or all of the repositories on a system.
@@ -19,12 +22,12 @@
1922
hashes rather than obscured clear-text, for improved security.
2023
* Add the "nossl" and "nocompress" options to CGI.
2124
* Update search infrastructure from FTS4 to FTS5.
2225
* Add the [/help?cmd=/deltachain|/deltachain] page for debugging purposes.
2326
* Writes to the database are disabled by default if the HTTP request
24
- does not come from the same origin. This enhancement is for defense in depth.
25
- There where no known vulnerabilities prior to this enhancement.
27
+ does not come from the same origin. This enhancement is a defense in depth
28
+ measure only; it does not address any known vulnerabilities.
2629
* Improvements to automatic detection and mitigation of attacks from
2730
malicious robots.
2831
2932
<h2 id='v2_20'>Changes for version 2.20 (2022-11-16)</h2>
3033
* Added the [/help?cmd=chat-timeline-user|chat-timeline-user setting]. If
3134
--- www/changes.wiki
+++ www/changes.wiki
@@ -1,10 +1,13 @@
1 <title>Change Log</title>
2
3 <h2 id='v2_21'>Changes for version 2.21 (pending)</h2>
 
 
 
4 * Users can request a password reset. This feature is disabledby default. Use
5 the new [/help?cmd=self-pw-reset|self-pw-reset property] to enable it.
6 New web pages [/help?cmd=/resetpw|/resetpw] and
7 [/help?cmd=/reqpwreset|/reqpwreset] added.
8 * Add the [/help?cmd=repack|fossil repack] command (together with
9 [/help?cmd=all|fossil all repack]) as a convenient way to optimize the
10 size of one or all of the repositories on a system.
@@ -19,12 +22,12 @@
19 hashes rather than obscured clear-text, for improved security.
20 * Add the "nossl" and "nocompress" options to CGI.
21 * Update search infrastructure from FTS4 to FTS5.
22 * Add the [/help?cmd=/deltachain|/deltachain] page for debugging purposes.
23 * Writes to the database are disabled by default if the HTTP request
24 does not come from the same origin. This enhancement is for defense in depth.
25 There where no known vulnerabilities prior to this enhancement.
26 * Improvements to automatic detection and mitigation of attacks from
27 malicious robots.
28
29 <h2 id='v2_20'>Changes for version 2.20 (2022-11-16)</h2>
30 * Added the [/help?cmd=chat-timeline-user|chat-timeline-user setting]. If
31
--- www/changes.wiki
+++ www/changes.wiki
@@ -1,10 +1,13 @@
1 <title>Change Log</title>
2
3 <h2 id='v2_22'>Changes for version 2.22 (pending)</h2>
4
5
6 <h2 id='v2_21'>Changes for version 2.21 (2023-02-25)</h2>
7 * Users can request a password reset. This feature is disabledby default. Use
8 the new [/help?cmd=self-pw-reset|self-pw-reset property] to enable it.
9 New web pages [/help?cmd=/resetpw|/resetpw] and
10 [/help?cmd=/reqpwreset|/reqpwreset] added.
11 * Add the [/help?cmd=repack|fossil repack] command (together with
12 [/help?cmd=all|fossil all repack]) as a convenient way to optimize the
13 size of one or all of the repositories on a system.
@@ -19,12 +22,12 @@
22 hashes rather than obscured clear-text, for improved security.
23 * Add the "nossl" and "nocompress" options to CGI.
24 * Update search infrastructure from FTS4 to FTS5.
25 * Add the [/help?cmd=/deltachain|/deltachain] page for debugging purposes.
26 * Writes to the database are disabled by default if the HTTP request
27 does not come from the same origin. This enhancement is a defense in depth
28 measure only; it does not address any known vulnerabilities.
29 * Improvements to automatic detection and mitigation of attacks from
30 malicious robots.
31
32 <h2 id='v2_20'>Changes for version 2.20 (2022-11-16)</h2>
33 * Added the [/help?cmd=chat-timeline-user|chat-timeline-user setting]. If
34
+4 -4
--- www/index.wiki
+++ www/index.wiki
@@ -83,16 +83,16 @@
8383
the repository are consistent prior to each commit.
8484
8585
8. <b>Free and Open-Source</b> - [../COPYRIGHT-BSD2.txt|2-clause BSD license].
8686
8787
<hr>
88
-<h3>Latest Release: 2.20 ([/timeline?c=version-2.20|2022-11-16])</h3>
88
+<h3>Latest Release: 2.21 ([/timeline?c=version-2.21|2023-02-25])</h3>
8989
9090
* [/uv/download.html|Download]
91
- * [./changes.wiki#v2_20|Change Summary]
92
- * [/timeline?p=version-2.20&bt=version-2.19&y=ci|Check-ins in version 2.20]
93
- * [/timeline?df=version-2.20&y=ci|Check-ins derived from the 2.20 release]
91
+ * [./changes.wiki#v2_21|Change Summary]
92
+ * [/timeline?p=version-2.21&bt=version-2.20&y=ci|Check-ins in version 2.21]
93
+ * [/timeline?df=version-2.21&y=ci|Check-ins derived from the 2.21 release]
9494
* [/timeline?t=release|Timeline of all past releases]
9595
9696
<hr>
9797
<h3>Quick Start</h3>
9898
9999
--- www/index.wiki
+++ www/index.wiki
@@ -83,16 +83,16 @@
83 the repository are consistent prior to each commit.
84
85 8. <b>Free and Open-Source</b> - [../COPYRIGHT-BSD2.txt|2-clause BSD license].
86
87 <hr>
88 <h3>Latest Release: 2.20 ([/timeline?c=version-2.20|2022-11-16])</h3>
89
90 * [/uv/download.html|Download]
91 * [./changes.wiki#v2_20|Change Summary]
92 * [/timeline?p=version-2.20&bt=version-2.19&y=ci|Check-ins in version 2.20]
93 * [/timeline?df=version-2.20&y=ci|Check-ins derived from the 2.20 release]
94 * [/timeline?t=release|Timeline of all past releases]
95
96 <hr>
97 <h3>Quick Start</h3>
98
99
--- www/index.wiki
+++ www/index.wiki
@@ -83,16 +83,16 @@
83 the repository are consistent prior to each commit.
84
85 8. <b>Free and Open-Source</b> - [../COPYRIGHT-BSD2.txt|2-clause BSD license].
86
87 <hr>
88 <h3>Latest Release: 2.21 ([/timeline?c=version-2.21|2023-02-25])</h3>
89
90 * [/uv/download.html|Download]
91 * [./changes.wiki#v2_21|Change Summary]
92 * [/timeline?p=version-2.21&bt=version-2.20&y=ci|Check-ins in version 2.21]
93 * [/timeline?df=version-2.21&y=ci|Check-ins derived from the 2.21 release]
94 * [/timeline?t=release|Timeline of all past releases]
95
96 <hr>
97 <h3>Quick Start</h3>
98
99

Keyboard Shortcuts

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