Fossil SCM
Merge trunk into forumpost-locking branch.
Commit
27c3423e897a2c918648390eaefe409daaee7de4e907a2f4a7bf3192f232b912
Parent
ecc324b6af5d1e2…
9 files changed
+1
-1
+1
-1
+14
-14
+8
-9
+2
+23
-20
+31
-21
+7
-4
+4
-4
M
VERSION
+1
-1
| --- VERSION | ||
| +++ VERSION | ||
| @@ -1,1 +1,1 @@ | ||
| 1 | -2.21 | |
| 1 | +2.22 | |
| 2 | 2 |
| --- 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 @@ | ||
| 21283 | 21283 | } |
| 21284 | 21284 | sqlite3_finalize(pStmt); |
| 21285 | 21285 | return res; |
| 21286 | 21286 | } |
| 21287 | 21287 | |
| 21288 | -#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_ENABLE_DBPAGE_VTAB) | |
| 21288 | +#if defined(SQLITE_SHELL_HAVE_RECOVER) | |
| 21289 | 21289 | /* |
| 21290 | 21290 | ** Convert a 2-byte or 4-byte big-endian integer into a native integer |
| 21291 | 21291 | */ |
| 21292 | 21292 | static unsigned int get2byteInt(unsigned char *a){ |
| 21293 | 21293 | return (a[0]<<8) + a[1]; |
| 21294 | 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_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 @@ | ||
| 452 | 452 | ** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
| 453 | 453 | ** [sqlite_version()] and [sqlite_source_id()]. |
| 454 | 454 | */ |
| 455 | 455 | #define SQLITE_VERSION "3.41.0" |
| 456 | 456 | #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" | |
| 458 | 458 | |
| 459 | 459 | /* |
| 460 | 460 | ** CAPI3REF: Run-Time Library Version Numbers |
| 461 | 461 | ** KEYWORDS: sqlite3_version sqlite3_sourceid |
| 462 | 462 | ** |
| @@ -1480,11 +1480,10 @@ | ||
| 1480 | 1480 | ** <li>[[SQLITE_FCNTL_CKPT_DONE]] |
| 1481 | 1481 | ** The [SQLITE_FCNTL_CKPT_DONE] opcode is invoked from within a checkpoint |
| 1482 | 1482 | ** in wal mode after the client has finished copying pages from the wal |
| 1483 | 1483 | ** file to the database file, but before the *-shm file is updated to |
| 1484 | 1484 | ** record the fact that the pages have been checkpointed. |
| 1485 | -** </ul> | |
| 1486 | 1485 | ** |
| 1487 | 1486 | ** <li>[[SQLITE_FCNTL_EXTERNAL_READER]] |
| 1488 | 1487 | ** The EXPERIMENTAL [SQLITE_FCNTL_EXTERNAL_READER] opcode is used to detect |
| 1489 | 1488 | ** whether or not there is a database client in another process with a wal-mode |
| 1490 | 1489 | ** transaction open on the database or not. It is only available on unix.The |
| @@ -1493,20 +1492,20 @@ | ||
| 1493 | 1492 | ** mode database and there exists at least one client in another process that |
| 1494 | 1493 | ** currently has an SQL transaction open on the database. It is set to 0 if |
| 1495 | 1494 | ** the database is not a wal-mode db, or if there is no such connection in any |
| 1496 | 1495 | ** other process. This opcode cannot be used to detect transactions opened |
| 1497 | 1496 | ** by clients within the current process, only within other processes. |
| 1498 | -** </ul> | |
| 1499 | 1497 | ** |
| 1500 | 1498 | ** <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. | |
| 1502 | 1501 | ** |
| 1503 | 1502 | ** <li>[[SQLITE_FCNTL_RESET_CACHE]] |
| 1504 | 1503 | ** 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. | |
| 1508 | 1507 | ** </ul> |
| 1509 | 1508 | */ |
| 1510 | 1509 | #define SQLITE_FCNTL_LOCKSTATE 1 |
| 1511 | 1510 | #define SQLITE_FCNTL_GET_LOCKPROXYFILE 2 |
| 1512 | 1511 | #define SQLITE_FCNTL_SET_LOCKPROXYFILE 3 |
| @@ -10257,11 +10256,10 @@ | ||
| 10257 | 10256 | ** [[SQLITE_SCANSTAT_SELECTID]] <dt>SQLITE_SCANSTAT_SELECTID</dt> |
| 10258 | 10257 | ** <dd>^The "int" variable pointed to by the V parameter will be set to the |
| 10259 | 10258 | ** id for the X-th query plan element. The id value is unique within the |
| 10260 | 10259 | ** statement. The select-id is the same value as is output in the first |
| 10261 | 10260 | ** column of an [EXPLAIN QUERY PLAN] query. |
| 10262 | -** </dl> | |
| 10263 | 10261 | ** |
| 10264 | 10262 | ** [[SQLITE_SCANSTAT_PARENTID]] <dt>SQLITE_SCANSTAT_PARENTID</dt> |
| 10265 | 10263 | ** <dd>The "int" variable pointed to by the V parameter will be set to the |
| 10266 | 10264 | ** the id of the parent of the current query element, if applicable, or |
| 10267 | 10265 | ** to zero if the query element has no parent. This is the same value as |
| @@ -10271,10 +10269,11 @@ | ||
| 10271 | 10269 | ** <dd>The sqlite3_int64 output value is set to the number of cycles, |
| 10272 | 10270 | ** according to the processor time-stamp counter, that elapsed while the |
| 10273 | 10271 | ** query element was being processed. This value is not available for |
| 10274 | 10272 | ** all query elements - if it is unavailable the output variable is |
| 10275 | 10273 | ** set to -1. |
| 10274 | +** </dl> | |
| 10276 | 10275 | */ |
| 10277 | 10276 | #define SQLITE_SCANSTAT_NLOOP 0 |
| 10278 | 10277 | #define SQLITE_SCANSTAT_NVISIT 1 |
| 10279 | 10278 | #define SQLITE_SCANSTAT_EST 2 |
| 10280 | 10279 | #define SQLITE_SCANSTAT_NAME 3 |
| @@ -10427,11 +10426,11 @@ | ||
| 10427 | 10426 | ** seventh parameter is the final rowid value of the row being inserted |
| 10428 | 10427 | ** or updated. The value of the seventh parameter passed to the callback |
| 10429 | 10428 | ** function is not defined for operations on WITHOUT ROWID tables, or for |
| 10430 | 10429 | ** DELETE operations on rowid tables. |
| 10431 | 10430 | ** |
| 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 | |
| 10433 | 10432 | ** the previous call on the same [database connection] D, or NULL for |
| 10434 | 10433 | ** the first call on D. |
| 10435 | 10434 | ** |
| 10436 | 10435 | ** The [sqlite3_preupdate_old()], [sqlite3_preupdate_new()], |
| 10437 | 10436 | ** [sqlite3_preupdate_count()], and [sqlite3_preupdate_depth()] interfaces |
| @@ -91383,11 +91382,11 @@ | ||
| 91383 | 91382 | #ifdef SQLITE_DEBUG |
| 91384 | 91383 | if( pOp->p2==OE_Abort ){ sqlite3VdbeAssertAbortable(p); } |
| 91385 | 91384 | #endif |
| 91386 | 91385 | |
| 91387 | 91386 | /* 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 | |
| 91389 | 91388 | ** to bring this to the attention of fuzzers and other testing tools. */ |
| 91390 | 91389 | assert( pOp->p1!=SQLITE_INTERNAL ); |
| 91391 | 91390 | |
| 91392 | 91391 | if( p->pFrame && pOp->p1==SQLITE_OK ){ |
| 91393 | 91392 | /* Halt the sub-program. Return control to the parent frame. */ |
| @@ -125988,11 +125987,11 @@ | ||
| 125988 | 125987 | const u8 *zPass = (const u8*)""; |
| 125989 | 125988 | int nPass = 0; |
| 125990 | 125989 | const u8 *zHex = sqlite3_value_text(argv[0]); |
| 125991 | 125990 | int nHex = sqlite3_value_bytes(argv[0]); |
| 125992 | 125991 | #ifdef SQLITE_DEBUG |
| 125993 | - const u8 *zEnd = &zHex[nHex]; | |
| 125992 | + const u8 *zEnd = zHex ? &zHex[nHex] : 0; | |
| 125994 | 125993 | #endif |
| 125995 | 125994 | u8 *pBlob = 0; |
| 125996 | 125995 | u8 *p = 0; |
| 125997 | 125996 | |
| 125998 | 125997 | assert( argc==1 || argc==2 ); |
| @@ -145034,10 +145033,11 @@ | ||
| 145034 | 145033 | assert( ExprUseUToken(pExpr) ); |
| 145035 | 145034 | if( sqlite3_stricmp(pExpr->u.zToken,"count") ) return 0; /* Is count() */ |
| 145036 | 145035 | assert( ExprUseXList(pExpr) ); |
| 145037 | 145036 | if( pExpr->x.pList!=0 ) return 0; /* Must be count(*) */ |
| 145038 | 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 | 145039 | pSub = p->pSrc->a[0].pSelect; |
| 145040 | 145040 | if( pSub==0 ) return 0; /* The FROM is a subquery */ |
| 145041 | 145041 | if( pSub->pPrior==0 ) return 0; /* Must be a compound ry */ |
| 145042 | 145042 | do{ |
| 145043 | 145043 | if( pSub->op!=TK_ALL && pSub->pPrior ) return 0; /* Must be UNION ALL */ |
| @@ -146097,11 +146097,11 @@ | ||
| 146097 | 146097 | sqlite3VdbeAddOp2(v, OP_SorterSort, pAggInfo->sortingIdx, addrEnd); |
| 146098 | 146098 | VdbeComment((v, "GROUP BY sort")); VdbeCoverage(v); |
| 146099 | 146099 | pAggInfo->useSortingIdx = 1; |
| 146100 | 146100 | } |
| 146101 | 146101 | |
| 146102 | - /* If there entries in pAgggInfo->aFunc[] that contain subexpressions | |
| 146102 | + /* If there are entries in pAgggInfo->aFunc[] that contain subexpressions | |
| 146103 | 146103 | ** that are indexed (and that were previously identified and tagged |
| 146104 | 146104 | ** in optimizeAggregateUseOfIndexedExpr()) then those subexpressions |
| 146105 | 146105 | ** must now be converted into a TK_AGG_COLUMN node so that the value |
| 146106 | 146106 | ** is correctly pulled from the index rather than being recomputed. */ |
| 146107 | 146107 | if( pParse->pIdxEpr ){ |
| @@ -158983,11 +158983,11 @@ | ||
| 158983 | 158983 | nRowEst += nEst; |
| 158984 | 158984 | pBuilder->nRecValid = nRecValid; |
| 158985 | 158985 | } |
| 158986 | 158986 | |
| 158987 | 158987 | if( rc==SQLITE_OK ){ |
| 158988 | - if( nRowEst > nRow0 ) nRowEst = nRow0; | |
| 158988 | + if( nRowEst > (tRowcnt)nRow0 ) nRowEst = nRow0; | |
| 158989 | 158989 | *pnRow = nRowEst; |
| 158990 | 158990 | WHERETRACE(0x20,("IN row estimate: est=%d\n", nRowEst)); |
| 158991 | 158991 | } |
| 158992 | 158992 | assert( pBuilder->nRecValid==nRecValid ); |
| 158993 | 158993 | return rc; |
| @@ -240169,11 +240169,11 @@ | ||
| 240169 | 240169 | int nArg, /* Number of args */ |
| 240170 | 240170 | sqlite3_value **apUnused /* Function arguments */ |
| 240171 | 240171 | ){ |
| 240172 | 240172 | assert( nArg==0 ); |
| 240173 | 240173 | 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); | |
| 240175 | 240175 | } |
| 240176 | 240176 | |
| 240177 | 240177 | /* |
| 240178 | 240178 | ** Return true if zName is the extension on one of the shadow tables used |
| 240179 | 240179 | ** by this module. |
| 240180 | 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-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 |
+8
-9
| --- extsrc/sqlite3.h | ||
| +++ extsrc/sqlite3.h | ||
| @@ -146,11 +146,11 @@ | ||
| 146 | 146 | ** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
| 147 | 147 | ** [sqlite_version()] and [sqlite_source_id()]. |
| 148 | 148 | */ |
| 149 | 149 | #define SQLITE_VERSION "3.41.0" |
| 150 | 150 | #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" | |
| 152 | 152 | |
| 153 | 153 | /* |
| 154 | 154 | ** CAPI3REF: Run-Time Library Version Numbers |
| 155 | 155 | ** KEYWORDS: sqlite3_version sqlite3_sourceid |
| 156 | 156 | ** |
| @@ -1174,11 +1174,10 @@ | ||
| 1174 | 1174 | ** <li>[[SQLITE_FCNTL_CKPT_DONE]] |
| 1175 | 1175 | ** The [SQLITE_FCNTL_CKPT_DONE] opcode is invoked from within a checkpoint |
| 1176 | 1176 | ** in wal mode after the client has finished copying pages from the wal |
| 1177 | 1177 | ** file to the database file, but before the *-shm file is updated to |
| 1178 | 1178 | ** record the fact that the pages have been checkpointed. |
| 1179 | -** </ul> | |
| 1180 | 1179 | ** |
| 1181 | 1180 | ** <li>[[SQLITE_FCNTL_EXTERNAL_READER]] |
| 1182 | 1181 | ** The EXPERIMENTAL [SQLITE_FCNTL_EXTERNAL_READER] opcode is used to detect |
| 1183 | 1182 | ** whether or not there is a database client in another process with a wal-mode |
| 1184 | 1183 | ** transaction open on the database or not. It is only available on unix.The |
| @@ -1187,20 +1186,20 @@ | ||
| 1187 | 1186 | ** mode database and there exists at least one client in another process that |
| 1188 | 1187 | ** currently has an SQL transaction open on the database. It is set to 0 if |
| 1189 | 1188 | ** the database is not a wal-mode db, or if there is no such connection in any |
| 1190 | 1189 | ** other process. This opcode cannot be used to detect transactions opened |
| 1191 | 1190 | ** by clients within the current process, only within other processes. |
| 1192 | -** </ul> | |
| 1193 | 1191 | ** |
| 1194 | 1192 | ** <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. | |
| 1196 | 1195 | ** |
| 1197 | 1196 | ** <li>[[SQLITE_FCNTL_RESET_CACHE]] |
| 1198 | 1197 | ** 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. | |
| 1202 | 1201 | ** </ul> |
| 1203 | 1202 | */ |
| 1204 | 1203 | #define SQLITE_FCNTL_LOCKSTATE 1 |
| 1205 | 1204 | #define SQLITE_FCNTL_GET_LOCKPROXYFILE 2 |
| 1206 | 1205 | #define SQLITE_FCNTL_SET_LOCKPROXYFILE 3 |
| @@ -9951,11 +9950,10 @@ | ||
| 9951 | 9950 | ** [[SQLITE_SCANSTAT_SELECTID]] <dt>SQLITE_SCANSTAT_SELECTID</dt> |
| 9952 | 9951 | ** <dd>^The "int" variable pointed to by the V parameter will be set to the |
| 9953 | 9952 | ** id for the X-th query plan element. The id value is unique within the |
| 9954 | 9953 | ** statement. The select-id is the same value as is output in the first |
| 9955 | 9954 | ** column of an [EXPLAIN QUERY PLAN] query. |
| 9956 | -** </dl> | |
| 9957 | 9955 | ** |
| 9958 | 9956 | ** [[SQLITE_SCANSTAT_PARENTID]] <dt>SQLITE_SCANSTAT_PARENTID</dt> |
| 9959 | 9957 | ** <dd>The "int" variable pointed to by the V parameter will be set to the |
| 9960 | 9958 | ** the id of the parent of the current query element, if applicable, or |
| 9961 | 9959 | ** to zero if the query element has no parent. This is the same value as |
| @@ -9965,10 +9963,11 @@ | ||
| 9965 | 9963 | ** <dd>The sqlite3_int64 output value is set to the number of cycles, |
| 9966 | 9964 | ** according to the processor time-stamp counter, that elapsed while the |
| 9967 | 9965 | ** query element was being processed. This value is not available for |
| 9968 | 9966 | ** all query elements - if it is unavailable the output variable is |
| 9969 | 9967 | ** set to -1. |
| 9968 | +** </dl> | |
| 9970 | 9969 | */ |
| 9971 | 9970 | #define SQLITE_SCANSTAT_NLOOP 0 |
| 9972 | 9971 | #define SQLITE_SCANSTAT_NVISIT 1 |
| 9973 | 9972 | #define SQLITE_SCANSTAT_EST 2 |
| 9974 | 9973 | #define SQLITE_SCANSTAT_NAME 3 |
| @@ -10121,11 +10120,11 @@ | ||
| 10121 | 10120 | ** seventh parameter is the final rowid value of the row being inserted |
| 10122 | 10121 | ** or updated. The value of the seventh parameter passed to the callback |
| 10123 | 10122 | ** function is not defined for operations on WITHOUT ROWID tables, or for |
| 10124 | 10123 | ** DELETE operations on rowid tables. |
| 10125 | 10124 | ** |
| 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 | |
| 10127 | 10126 | ** the previous call on the same [database connection] D, or NULL for |
| 10128 | 10127 | ** the first call on D. |
| 10129 | 10128 | ** |
| 10130 | 10129 | ** The [sqlite3_preupdate_old()], [sqlite3_preupdate_new()], |
| 10131 | 10130 | ** [sqlite3_preupdate_count()], and [sqlite3_preupdate_depth()] interfaces |
| 10132 | 10131 |
| --- 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 |
+2
| --- src/allrepo.c | ||
| +++ src/allrepo.c | ||
| @@ -108,10 +108,12 @@ | ||
| 108 | 108 | ** |
| 109 | 109 | ** rebuild Rebuild on all repositories. The command line options |
| 110 | 110 | ** supported by the rebuild command itself, if any are |
| 111 | 111 | ** present, are passed along verbatim. The --force and |
| 112 | 112 | ** --randomize options are not supported. |
| 113 | +** | |
| 114 | +** remote Show remote hosts for all repositories. | |
| 113 | 115 | ** |
| 114 | 116 | ** repack Look for extra compression in all repositories. |
| 115 | 117 | ** |
| 116 | 118 | ** sync Run a "sync" on all repositories. Only the --verbose |
| 117 | 119 | ** and --unversioned and --share-links options are supported. |
| 118 | 120 |
| --- 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 @@ | ||
| 704 | 704 | return zName; |
| 705 | 705 | } |
| 706 | 706 | |
| 707 | 707 | /* |
| 708 | 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: | |
| 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 | 717 | ** |
| 718 | 718 | ** /tarball/release/xyz.tar.gz |
| 719 | 719 | ** /tarball?r=release&name=xyz.tar.gz |
| 720 | 720 | ** /tarball/xyz.tar.gz?r=release |
| 721 | 721 | ** /tarball?name=release/xyz.tar.gz |
| 722 | 722 | ** |
| 723 | 723 | ** Query parameters: |
| 724 | 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. | |
| 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. | |
| 729 | 732 | ** |
| 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. | |
| 738 | 741 | ** |
| 739 | 742 | ** in=PATTERN Only include files that match the comma-separate |
| 740 | 743 | ** list of GLOB patterns in PATTERN, as with ex= |
| 741 | 744 | ** |
| 742 | 745 | ** ex=PATTERN Omit any file that match PATTERN. PATTERN is a |
| 743 | 746 |
| --- 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 @@ | ||
| 864 | 864 | |
| 865 | 865 | /* |
| 866 | 866 | ** WEBPAGE: sqlar |
| 867 | 867 | ** WEBPAGE: zip |
| 868 | 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 | |
| 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 | |
| 880 | 885 | ** |
| 881 | 886 | ** Query parameters: |
| 882 | 887 | ** |
| 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. | |
| 887 | 895 | ** |
| 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. | |
| 894 | 904 | ** |
| 895 | 905 | ** in=PATTERN Only include files that match the comma-separate |
| 896 | 906 | ** list of GLOB patterns in PATTERN, as with ex= |
| 897 | 907 | ** |
| 898 | 908 | ** ex=PATTERN Omit any file that match PATTERN. PATTERN is a |
| 899 | 909 |
| --- 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 |
+7
-4
| --- www/changes.wiki | ||
| +++ www/changes.wiki | ||
| @@ -1,10 +1,13 @@ | ||
| 1 | 1 | <title>Change Log</title> |
| 2 | 2 | |
| 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> | |
| 4 | 7 | * 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. | |
| 6 | 9 | New web pages [/help?cmd=/resetpw|/resetpw] and |
| 7 | 10 | [/help?cmd=/reqpwreset|/reqpwreset] added. |
| 8 | 11 | * Add the [/help?cmd=repack|fossil repack] command (together with |
| 9 | 12 | [/help?cmd=all|fossil all repack]) as a convenient way to optimize the |
| 10 | 13 | size of one or all of the repositories on a system. |
| @@ -19,12 +22,12 @@ | ||
| 19 | 22 | hashes rather than obscured clear-text, for improved security. |
| 20 | 23 | * Add the "nossl" and "nocompress" options to CGI. |
| 21 | 24 | * Update search infrastructure from FTS4 to FTS5. |
| 22 | 25 | * Add the [/help?cmd=/deltachain|/deltachain] page for debugging purposes. |
| 23 | 26 | * 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. | |
| 26 | 29 | * Improvements to automatic detection and mitigation of attacks from |
| 27 | 30 | malicious robots. |
| 28 | 31 | |
| 29 | 32 | <h2 id='v2_20'>Changes for version 2.20 (2022-11-16)</h2> |
| 30 | 33 | * Added the [/help?cmd=chat-timeline-user|chat-timeline-user setting]. If |
| 31 | 34 |
| --- 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 @@ | ||
| 83 | 83 | the repository are consistent prior to each commit. |
| 84 | 84 | |
| 85 | 85 | 8. <b>Free and Open-Source</b> - [../COPYRIGHT-BSD2.txt|2-clause BSD license]. |
| 86 | 86 | |
| 87 | 87 | <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> | |
| 89 | 89 | |
| 90 | 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] | |
| 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 | 94 | * [/timeline?t=release|Timeline of all past releases] |
| 95 | 95 | |
| 96 | 96 | <hr> |
| 97 | 97 | <h3>Quick Start</h3> |
| 98 | 98 | |
| 99 | 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.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 |