Fossil SCM
Update the built-in SQLite to the latest 3.50.0 alpha that includes the NOT NULL optimization fix.
Commit
02d0432ed4cd9770c0df69d27358806a54686a773070f3f03219a56a182ba432
Parent
31fc6290c3c11b3…
2 files changed
+11
-7
+1
-1
+11
-7
| --- extsrc/sqlite3.c | ||
| +++ extsrc/sqlite3.c | ||
| @@ -16,11 +16,11 @@ | ||
| 16 | 16 | ** if you want a wrapper to interface SQLite with your choice of programming |
| 17 | 17 | ** language. The code for the "sqlite3" command-line shell is also in a |
| 18 | 18 | ** separate file. This file contains only code for the core SQLite library. |
| 19 | 19 | ** |
| 20 | 20 | ** The content in this amalgamation comes from Fossil check-in |
| 21 | -** 20abf1ec107f942e4527901685d61283c9c2 with changes in files: | |
| 21 | +** 6eb2939a6093c0796910645172d80c530555 with changes in files: | |
| 22 | 22 | ** |
| 23 | 23 | ** |
| 24 | 24 | */ |
| 25 | 25 | #ifndef SQLITE_AMALGAMATION |
| 26 | 26 | #define SQLITE_CORE 1 |
| @@ -465,11 +465,11 @@ | ||
| 465 | 465 | ** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
| 466 | 466 | ** [sqlite_version()] and [sqlite_source_id()]. |
| 467 | 467 | */ |
| 468 | 468 | #define SQLITE_VERSION "3.50.0" |
| 469 | 469 | #define SQLITE_VERSION_NUMBER 3050000 |
| 470 | -#define SQLITE_SOURCE_ID "2025-04-30 14:37:00 20abf1ec107f942e4527901685d61283c9c2fe7bcefad63dbf5c6cbf050da849" | |
| 470 | +#define SQLITE_SOURCE_ID "2025-05-06 17:56:32 6eb2939a6093c0796910645172d80c53055559dd57c012f1dc815d89fbf84447" | |
| 471 | 471 | |
| 472 | 472 | /* |
| 473 | 473 | ** CAPI3REF: Run-Time Library Version Numbers |
| 474 | 474 | ** KEYWORDS: sqlite3_version sqlite3_sourceid |
| 475 | 475 | ** |
| @@ -87272,10 +87272,13 @@ | ||
| 87272 | 87272 | ** into register iDest, then add the OPFLAG_TYPEOFARG flag to that |
| 87273 | 87273 | ** opcode. |
| 87274 | 87274 | */ |
| 87275 | 87275 | SQLITE_PRIVATE void sqlite3VdbeTypeofColumn(Vdbe *p, int iDest){ |
| 87276 | 87276 | VdbeOp *pOp = sqlite3VdbeGetLastOp(p); |
| 87277 | +#ifdef SQLITE_DEBUG | |
| 87278 | + while( pOp->opcode==OP_ReleaseReg ) pOp--; | |
| 87279 | +#endif | |
| 87277 | 87280 | if( pOp->p3==iDest && pOp->opcode==OP_Column ){ |
| 87278 | 87281 | pOp->p5 |= OPFLAG_TYPEOFARG; |
| 87279 | 87282 | } |
| 87280 | 87283 | } |
| 87281 | 87284 | |
| @@ -98119,10 +98122,11 @@ | ||
| 98119 | 98122 | } |
| 98120 | 98123 | }else{ |
| 98121 | 98124 | zHdr += sqlite3PutVarint(zHdr, serial_type); |
| 98122 | 98125 | if( pRec->n ){ |
| 98123 | 98126 | assert( pRec->z!=0 ); |
| 98127 | + assert( pRec->z!=(const char*)sqlite3CtypeMap ); | |
| 98124 | 98128 | memcpy(zPayload, pRec->z, pRec->n); |
| 98125 | 98129 | zPayload += pRec->n; |
| 98126 | 98130 | } |
| 98127 | 98131 | } |
| 98128 | 98132 | if( pRec==pLast ) break; |
| @@ -116339,15 +116343,15 @@ | ||
| 116339 | 116343 | case TK_ISNULL: |
| 116340 | 116344 | case TK_NOTNULL: { |
| 116341 | 116345 | assert( TK_ISNULL==OP_IsNull ); testcase( op==TK_ISNULL ); |
| 116342 | 116346 | assert( TK_NOTNULL==OP_NotNull ); testcase( op==TK_NOTNULL ); |
| 116343 | 116347 | r1 = sqlite3ExprCodeTemp(pParse, pExpr->pLeft, ®Free1); |
| 116344 | - sqlite3VdbeTypeofColumn(v, r1); | |
| 116348 | + assert( regFree1==0 || regFree1==r1 ); | |
| 116349 | + if( regFree1 ) sqlite3VdbeTypeofColumn(v, r1); | |
| 116345 | 116350 | sqlite3VdbeAddOp2(v, op, r1, dest); |
| 116346 | 116351 | VdbeCoverageIf(v, op==TK_ISNULL); |
| 116347 | 116352 | VdbeCoverageIf(v, op==TK_NOTNULL); |
| 116348 | - testcase( regFree1==0 ); | |
| 116349 | 116353 | break; |
| 116350 | 116354 | } |
| 116351 | 116355 | case TK_BETWEEN: { |
| 116352 | 116356 | testcase( jumpIfNull==0 ); |
| 116353 | 116357 | exprCodeBetween(pParse, pExpr, dest, sqlite3ExprIfTrue, jumpIfNull); |
| @@ -116514,15 +116518,15 @@ | ||
| 116514 | 116518 | break; |
| 116515 | 116519 | } |
| 116516 | 116520 | case TK_ISNULL: |
| 116517 | 116521 | case TK_NOTNULL: { |
| 116518 | 116522 | r1 = sqlite3ExprCodeTemp(pParse, pExpr->pLeft, ®Free1); |
| 116519 | - sqlite3VdbeTypeofColumn(v, r1); | |
| 116523 | + assert( regFree1==0 || regFree1==r1 ); | |
| 116524 | + if( regFree1 ) sqlite3VdbeTypeofColumn(v, r1); | |
| 116520 | 116525 | sqlite3VdbeAddOp2(v, op, r1, dest); |
| 116521 | 116526 | testcase( op==TK_ISNULL ); VdbeCoverageIf(v, op==TK_ISNULL); |
| 116522 | 116527 | testcase( op==TK_NOTNULL ); VdbeCoverageIf(v, op==TK_NOTNULL); |
| 116523 | - testcase( regFree1==0 ); | |
| 116524 | 116528 | break; |
| 116525 | 116529 | } |
| 116526 | 116530 | case TK_BETWEEN: { |
| 116527 | 116531 | testcase( jumpIfNull==0 ); |
| 116528 | 116532 | exprCodeBetween(pParse, pExpr, dest, sqlite3ExprIfFalse, jumpIfNull); |
| @@ -257263,11 +257267,11 @@ | ||
| 257263 | 257267 | int nArg, /* Number of args */ |
| 257264 | 257268 | sqlite3_value **apUnused /* Function arguments */ |
| 257265 | 257269 | ){ |
| 257266 | 257270 | assert( nArg==0 ); |
| 257267 | 257271 | UNUSED_PARAM2(nArg, apUnused); |
| 257268 | - sqlite3_result_text(pCtx, "fts5: 2025-04-30 14:37:00 20abf1ec107f942e4527901685d61283c9c2fe7bcefad63dbf5c6cbf050da849", -1, SQLITE_TRANSIENT); | |
| 257272 | + sqlite3_result_text(pCtx, "fts5: 2025-05-06 17:56:32 6eb2939a6093c0796910645172d80c53055559dd57c012f1dc815d89fbf84447", -1, SQLITE_TRANSIENT); | |
| 257269 | 257273 | } |
| 257270 | 257274 | |
| 257271 | 257275 | /* |
| 257272 | 257276 | ** Implementation of fts5_locale(LOCALE, TEXT) function. |
| 257273 | 257277 | ** |
| 257274 | 257278 |
| --- extsrc/sqlite3.c | |
| +++ extsrc/sqlite3.c | |
| @@ -16,11 +16,11 @@ | |
| 16 | ** if you want a wrapper to interface SQLite with your choice of programming |
| 17 | ** language. The code for the "sqlite3" command-line shell is also in a |
| 18 | ** separate file. This file contains only code for the core SQLite library. |
| 19 | ** |
| 20 | ** The content in this amalgamation comes from Fossil check-in |
| 21 | ** 20abf1ec107f942e4527901685d61283c9c2 with changes in files: |
| 22 | ** |
| 23 | ** |
| 24 | */ |
| 25 | #ifndef SQLITE_AMALGAMATION |
| 26 | #define SQLITE_CORE 1 |
| @@ -465,11 +465,11 @@ | |
| 465 | ** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
| 466 | ** [sqlite_version()] and [sqlite_source_id()]. |
| 467 | */ |
| 468 | #define SQLITE_VERSION "3.50.0" |
| 469 | #define SQLITE_VERSION_NUMBER 3050000 |
| 470 | #define SQLITE_SOURCE_ID "2025-04-30 14:37:00 20abf1ec107f942e4527901685d61283c9c2fe7bcefad63dbf5c6cbf050da849" |
| 471 | |
| 472 | /* |
| 473 | ** CAPI3REF: Run-Time Library Version Numbers |
| 474 | ** KEYWORDS: sqlite3_version sqlite3_sourceid |
| 475 | ** |
| @@ -87272,10 +87272,13 @@ | |
| 87272 | ** into register iDest, then add the OPFLAG_TYPEOFARG flag to that |
| 87273 | ** opcode. |
| 87274 | */ |
| 87275 | SQLITE_PRIVATE void sqlite3VdbeTypeofColumn(Vdbe *p, int iDest){ |
| 87276 | VdbeOp *pOp = sqlite3VdbeGetLastOp(p); |
| 87277 | if( pOp->p3==iDest && pOp->opcode==OP_Column ){ |
| 87278 | pOp->p5 |= OPFLAG_TYPEOFARG; |
| 87279 | } |
| 87280 | } |
| 87281 | |
| @@ -98119,10 +98122,11 @@ | |
| 98119 | } |
| 98120 | }else{ |
| 98121 | zHdr += sqlite3PutVarint(zHdr, serial_type); |
| 98122 | if( pRec->n ){ |
| 98123 | assert( pRec->z!=0 ); |
| 98124 | memcpy(zPayload, pRec->z, pRec->n); |
| 98125 | zPayload += pRec->n; |
| 98126 | } |
| 98127 | } |
| 98128 | if( pRec==pLast ) break; |
| @@ -116339,15 +116343,15 @@ | |
| 116339 | case TK_ISNULL: |
| 116340 | case TK_NOTNULL: { |
| 116341 | assert( TK_ISNULL==OP_IsNull ); testcase( op==TK_ISNULL ); |
| 116342 | assert( TK_NOTNULL==OP_NotNull ); testcase( op==TK_NOTNULL ); |
| 116343 | r1 = sqlite3ExprCodeTemp(pParse, pExpr->pLeft, ®Free1); |
| 116344 | sqlite3VdbeTypeofColumn(v, r1); |
| 116345 | sqlite3VdbeAddOp2(v, op, r1, dest); |
| 116346 | VdbeCoverageIf(v, op==TK_ISNULL); |
| 116347 | VdbeCoverageIf(v, op==TK_NOTNULL); |
| 116348 | testcase( regFree1==0 ); |
| 116349 | break; |
| 116350 | } |
| 116351 | case TK_BETWEEN: { |
| 116352 | testcase( jumpIfNull==0 ); |
| 116353 | exprCodeBetween(pParse, pExpr, dest, sqlite3ExprIfTrue, jumpIfNull); |
| @@ -116514,15 +116518,15 @@ | |
| 116514 | break; |
| 116515 | } |
| 116516 | case TK_ISNULL: |
| 116517 | case TK_NOTNULL: { |
| 116518 | r1 = sqlite3ExprCodeTemp(pParse, pExpr->pLeft, ®Free1); |
| 116519 | sqlite3VdbeTypeofColumn(v, r1); |
| 116520 | sqlite3VdbeAddOp2(v, op, r1, dest); |
| 116521 | testcase( op==TK_ISNULL ); VdbeCoverageIf(v, op==TK_ISNULL); |
| 116522 | testcase( op==TK_NOTNULL ); VdbeCoverageIf(v, op==TK_NOTNULL); |
| 116523 | testcase( regFree1==0 ); |
| 116524 | break; |
| 116525 | } |
| 116526 | case TK_BETWEEN: { |
| 116527 | testcase( jumpIfNull==0 ); |
| 116528 | exprCodeBetween(pParse, pExpr, dest, sqlite3ExprIfFalse, jumpIfNull); |
| @@ -257263,11 +257267,11 @@ | |
| 257263 | int nArg, /* Number of args */ |
| 257264 | sqlite3_value **apUnused /* Function arguments */ |
| 257265 | ){ |
| 257266 | assert( nArg==0 ); |
| 257267 | UNUSED_PARAM2(nArg, apUnused); |
| 257268 | sqlite3_result_text(pCtx, "fts5: 2025-04-30 14:37:00 20abf1ec107f942e4527901685d61283c9c2fe7bcefad63dbf5c6cbf050da849", -1, SQLITE_TRANSIENT); |
| 257269 | } |
| 257270 | |
| 257271 | /* |
| 257272 | ** Implementation of fts5_locale(LOCALE, TEXT) function. |
| 257273 | ** |
| 257274 |
| --- extsrc/sqlite3.c | |
| +++ extsrc/sqlite3.c | |
| @@ -16,11 +16,11 @@ | |
| 16 | ** if you want a wrapper to interface SQLite with your choice of programming |
| 17 | ** language. The code for the "sqlite3" command-line shell is also in a |
| 18 | ** separate file. This file contains only code for the core SQLite library. |
| 19 | ** |
| 20 | ** The content in this amalgamation comes from Fossil check-in |
| 21 | ** 6eb2939a6093c0796910645172d80c530555 with changes in files: |
| 22 | ** |
| 23 | ** |
| 24 | */ |
| 25 | #ifndef SQLITE_AMALGAMATION |
| 26 | #define SQLITE_CORE 1 |
| @@ -465,11 +465,11 @@ | |
| 465 | ** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
| 466 | ** [sqlite_version()] and [sqlite_source_id()]. |
| 467 | */ |
| 468 | #define SQLITE_VERSION "3.50.0" |
| 469 | #define SQLITE_VERSION_NUMBER 3050000 |
| 470 | #define SQLITE_SOURCE_ID "2025-05-06 17:56:32 6eb2939a6093c0796910645172d80c53055559dd57c012f1dc815d89fbf84447" |
| 471 | |
| 472 | /* |
| 473 | ** CAPI3REF: Run-Time Library Version Numbers |
| 474 | ** KEYWORDS: sqlite3_version sqlite3_sourceid |
| 475 | ** |
| @@ -87272,10 +87272,13 @@ | |
| 87272 | ** into register iDest, then add the OPFLAG_TYPEOFARG flag to that |
| 87273 | ** opcode. |
| 87274 | */ |
| 87275 | SQLITE_PRIVATE void sqlite3VdbeTypeofColumn(Vdbe *p, int iDest){ |
| 87276 | VdbeOp *pOp = sqlite3VdbeGetLastOp(p); |
| 87277 | #ifdef SQLITE_DEBUG |
| 87278 | while( pOp->opcode==OP_ReleaseReg ) pOp--; |
| 87279 | #endif |
| 87280 | if( pOp->p3==iDest && pOp->opcode==OP_Column ){ |
| 87281 | pOp->p5 |= OPFLAG_TYPEOFARG; |
| 87282 | } |
| 87283 | } |
| 87284 | |
| @@ -98119,10 +98122,11 @@ | |
| 98122 | } |
| 98123 | }else{ |
| 98124 | zHdr += sqlite3PutVarint(zHdr, serial_type); |
| 98125 | if( pRec->n ){ |
| 98126 | assert( pRec->z!=0 ); |
| 98127 | assert( pRec->z!=(const char*)sqlite3CtypeMap ); |
| 98128 | memcpy(zPayload, pRec->z, pRec->n); |
| 98129 | zPayload += pRec->n; |
| 98130 | } |
| 98131 | } |
| 98132 | if( pRec==pLast ) break; |
| @@ -116339,15 +116343,15 @@ | |
| 116343 | case TK_ISNULL: |
| 116344 | case TK_NOTNULL: { |
| 116345 | assert( TK_ISNULL==OP_IsNull ); testcase( op==TK_ISNULL ); |
| 116346 | assert( TK_NOTNULL==OP_NotNull ); testcase( op==TK_NOTNULL ); |
| 116347 | r1 = sqlite3ExprCodeTemp(pParse, pExpr->pLeft, ®Free1); |
| 116348 | assert( regFree1==0 || regFree1==r1 ); |
| 116349 | if( regFree1 ) sqlite3VdbeTypeofColumn(v, r1); |
| 116350 | sqlite3VdbeAddOp2(v, op, r1, dest); |
| 116351 | VdbeCoverageIf(v, op==TK_ISNULL); |
| 116352 | VdbeCoverageIf(v, op==TK_NOTNULL); |
| 116353 | break; |
| 116354 | } |
| 116355 | case TK_BETWEEN: { |
| 116356 | testcase( jumpIfNull==0 ); |
| 116357 | exprCodeBetween(pParse, pExpr, dest, sqlite3ExprIfTrue, jumpIfNull); |
| @@ -116514,15 +116518,15 @@ | |
| 116518 | break; |
| 116519 | } |
| 116520 | case TK_ISNULL: |
| 116521 | case TK_NOTNULL: { |
| 116522 | r1 = sqlite3ExprCodeTemp(pParse, pExpr->pLeft, ®Free1); |
| 116523 | assert( regFree1==0 || regFree1==r1 ); |
| 116524 | if( regFree1 ) sqlite3VdbeTypeofColumn(v, r1); |
| 116525 | sqlite3VdbeAddOp2(v, op, r1, dest); |
| 116526 | testcase( op==TK_ISNULL ); VdbeCoverageIf(v, op==TK_ISNULL); |
| 116527 | testcase( op==TK_NOTNULL ); VdbeCoverageIf(v, op==TK_NOTNULL); |
| 116528 | break; |
| 116529 | } |
| 116530 | case TK_BETWEEN: { |
| 116531 | testcase( jumpIfNull==0 ); |
| 116532 | exprCodeBetween(pParse, pExpr, dest, sqlite3ExprIfFalse, jumpIfNull); |
| @@ -257263,11 +257267,11 @@ | |
| 257267 | int nArg, /* Number of args */ |
| 257268 | sqlite3_value **apUnused /* Function arguments */ |
| 257269 | ){ |
| 257270 | assert( nArg==0 ); |
| 257271 | UNUSED_PARAM2(nArg, apUnused); |
| 257272 | sqlite3_result_text(pCtx, "fts5: 2025-05-06 17:56:32 6eb2939a6093c0796910645172d80c53055559dd57c012f1dc815d89fbf84447", -1, SQLITE_TRANSIENT); |
| 257273 | } |
| 257274 | |
| 257275 | /* |
| 257276 | ** Implementation of fts5_locale(LOCALE, TEXT) function. |
| 257277 | ** |
| 257278 |
+1
-1
| --- 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.50.0" |
| 150 | 150 | #define SQLITE_VERSION_NUMBER 3050000 |
| 151 | -#define SQLITE_SOURCE_ID "2025-04-30 14:37:00 20abf1ec107f942e4527901685d61283c9c2fe7bcefad63dbf5c6cbf050da849" | |
| 151 | +#define SQLITE_SOURCE_ID "2025-05-06 17:56:32 6eb2939a6093c0796910645172d80c53055559dd57c012f1dc815d89fbf84447" | |
| 152 | 152 | |
| 153 | 153 | /* |
| 154 | 154 | ** CAPI3REF: Run-Time Library Version Numbers |
| 155 | 155 | ** KEYWORDS: sqlite3_version sqlite3_sourceid |
| 156 | 156 | ** |
| 157 | 157 |
| --- 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.50.0" |
| 150 | #define SQLITE_VERSION_NUMBER 3050000 |
| 151 | #define SQLITE_SOURCE_ID "2025-04-30 14:37:00 20abf1ec107f942e4527901685d61283c9c2fe7bcefad63dbf5c6cbf050da849" |
| 152 | |
| 153 | /* |
| 154 | ** CAPI3REF: Run-Time Library Version Numbers |
| 155 | ** KEYWORDS: sqlite3_version sqlite3_sourceid |
| 156 | ** |
| 157 |
| --- 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.50.0" |
| 150 | #define SQLITE_VERSION_NUMBER 3050000 |
| 151 | #define SQLITE_SOURCE_ID "2025-05-06 17:56:32 6eb2939a6093c0796910645172d80c53055559dd57c012f1dc815d89fbf84447" |
| 152 | |
| 153 | /* |
| 154 | ** CAPI3REF: Run-Time Library Version Numbers |
| 155 | ** KEYWORDS: sqlite3_version sqlite3_sourceid |
| 156 | ** |
| 157 |