Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Another SQLite update. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | trunk |
Files: | files | file ages | folders |
SHA3-256: |
3ccb193028ddb1ee5b8e4bf9f60c108b |
User & Date: | drh 2025-05-26 11:05:29.806 |
Context
2025-05-26
| ||
11:05 | Another SQLite update. (Leaf check-in: 3ccb193028 user: drh tags: trunk) | |
2025-05-21
| ||
16:12 | Update the built-in SQLite to the latest 3.50.0 beta. (check-in: 50819caf67 user: drh tags: trunk) | |
Changes
Changes to tclsqlite3.c.
︙ | ︙ | |||
15 16 17 18 19 20 21 | ** the text of this file. Search for "Begin file sqlite3.h" to find the start ** of the embedded sqlite3.h header file.) Additional code files may be needed ** if you want a wrapper to interface SQLite with your choice of programming ** language. The code for the "sqlite3" command-line shell is also in a ** separate file. This file contains only code for the core SQLite library. ** ** The content in this amalgamation comes from Fossil check-in | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | ** the text of this file. Search for "Begin file sqlite3.h" to find the start ** of the embedded sqlite3.h header file.) Additional code files may be needed ** if you want a wrapper to interface SQLite with your choice of programming ** language. The code for the "sqlite3" command-line shell is also in a ** separate file. This file contains only code for the core SQLite library. ** ** The content in this amalgamation comes from Fossil check-in ** de0dfac1e5ca9d2661674c20664095386f60 with changes in files: ** ** */ #ifndef SQLITE_AMALGAMATION #define SQLITE_CORE 1 #define SQLITE_AMALGAMATION 1 #ifndef SQLITE_PRIVATE |
︙ | ︙ | |||
464 465 466 467 468 469 470 | ** ** See also: [sqlite3_libversion()], ** [sqlite3_libversion_number()], [sqlite3_sourceid()], ** [sqlite_version()] and [sqlite_source_id()]. */ #define SQLITE_VERSION "3.50.0" #define SQLITE_VERSION_NUMBER 3050000 | | | 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 | ** ** See also: [sqlite3_libversion()], ** [sqlite3_libversion_number()], [sqlite3_sourceid()], ** [sqlite_version()] and [sqlite_source_id()]. */ #define SQLITE_VERSION "3.50.0" #define SQLITE_VERSION_NUMBER 3050000 #define SQLITE_SOURCE_ID "2025-05-26 07:15:20 de0dfac1e5ca9d2661674c20664095386f60c77378311507fcba08111df52b38" /* ** CAPI3REF: Run-Time Library Version Numbers ** KEYWORDS: sqlite3_version sqlite3_sourceid ** ** These interfaces provide the same information as the [SQLITE_VERSION], ** [SQLITE_VERSION_NUMBER], and [SQLITE_SOURCE_ID] C preprocessor macros |
︙ | ︙ | |||
212582 212583 212584 212585 212586 212587 212588 212589 212590 212591 | ){ JsonString *pStr; const char *z; u32 n; UNUSED_PARAMETER(argc); pStr = (JsonString*)sqlite3_aggregate_context(ctx, sizeof(*pStr)); if( pStr ){ if( pStr->zBuf==0 ){ jsonStringInit(pStr, ctx); jsonAppendChar(pStr, '{'); | > > | | < | | | > | 212582 212583 212584 212585 212586 212587 212588 212589 212590 212591 212592 212593 212594 212595 212596 212597 212598 212599 212600 212601 212602 212603 212604 212605 212606 212607 212608 212609 | ){ JsonString *pStr; const char *z; u32 n; UNUSED_PARAMETER(argc); pStr = (JsonString*)sqlite3_aggregate_context(ctx, sizeof(*pStr)); if( pStr ){ z = (const char*)sqlite3_value_text(argv[0]); n = sqlite3Strlen30(z); if( pStr->zBuf==0 ){ jsonStringInit(pStr, ctx); jsonAppendChar(pStr, '{'); }else if( pStr->nUsed>1 && z!=0 ){ jsonAppendChar(pStr, ','); } pStr->pCtx = ctx; if( z!=0 ){ jsonAppendString(pStr, z, n); jsonAppendChar(pStr, ':'); jsonAppendSqlValue(pStr, argv[1]); } } } static void jsonObjectCompute(sqlite3_context *ctx, int isFinal){ JsonString *pStr; pStr = (JsonString*)sqlite3_aggregate_context(ctx, 0); if( pStr ){ int flags; |
︙ | ︙ | |||
231411 231412 231413 231414 231415 231416 231417 | } /* ** If the SessionInput object passed as the only argument is a streaming ** object and the buffer is full, discard some data to free up space. */ static void sessionDiscardData(SessionInput *pIn){ | | | | | | > | 231413 231414 231415 231416 231417 231418 231419 231420 231421 231422 231423 231424 231425 231426 231427 231428 231429 231430 231431 231432 231433 231434 231435 | } /* ** If the SessionInput object passed as the only argument is a streaming ** object and the buffer is full, discard some data to free up space. */ static void sessionDiscardData(SessionInput *pIn){ if( pIn->xInput && pIn->iCurrent>=sessions_strm_chunk_size ){ int nMove = pIn->buf.nBuf - pIn->iCurrent; assert( nMove>=0 ); if( nMove>0 ){ memmove(pIn->buf.aBuf, &pIn->buf.aBuf[pIn->iCurrent], nMove); } pIn->buf.nBuf -= pIn->iCurrent; pIn->iNext -= pIn->iCurrent; pIn->iCurrent = 0; pIn->nData = pIn->buf.nBuf; } } /* ** Ensure that there are at least nByte bytes available in the buffer. Or, ** if there are not nByte bytes remaining in the input, that all available |
︙ | ︙ | |||
231772 231773 231774 231775 231776 231777 231778 | /* Make sure the buffer contains at least 10 bytes of input data, or all ** remaining data if there are less than 10 bytes available. This is ** sufficient either for the 'T' or 'P' byte and the varint that follows ** it, or for the two single byte values otherwise. */ p->rc = sessionInputBuffer(&p->in, 2); if( p->rc!=SQLITE_OK ) return p->rc; | < > | 231775 231776 231777 231778 231779 231780 231781 231782 231783 231784 231785 231786 231787 231788 231789 231790 | /* Make sure the buffer contains at least 10 bytes of input data, or all ** remaining data if there are less than 10 bytes available. This is ** sufficient either for the 'T' or 'P' byte and the varint that follows ** it, or for the two single byte values otherwise. */ p->rc = sessionInputBuffer(&p->in, 2); if( p->rc!=SQLITE_OK ) return p->rc; p->in.iCurrent = p->in.iNext; sessionDiscardData(&p->in); /* If the iterator is already at the end of the changeset, return DONE. */ if( p->in.iNext>=p->in.nData ){ return SQLITE_DONE; } op = p->in.aData[p->in.iNext++]; |
︙ | ︙ | |||
234132 234133 234134 234135 234136 234137 234138 234139 234140 234141 234142 234143 | /* ** Add a single change to a changeset-group. */ SQLITE_API int sqlite3changegroup_add_change( sqlite3_changegroup *pGrp, sqlite3_changeset_iter *pIter ){ if( pIter->in.iCurrent==pIter->in.iNext || pIter->rc!=SQLITE_OK || pIter->bInvert ){ /* Iterator does not point to any valid entry or is an INVERT iterator. */ | > > | > > > | | 234135 234136 234137 234138 234139 234140 234141 234142 234143 234144 234145 234146 234147 234148 234149 234150 234151 234152 234153 234154 234155 234156 234157 234158 234159 234160 234161 | /* ** Add a single change to a changeset-group. */ SQLITE_API int sqlite3changegroup_add_change( sqlite3_changegroup *pGrp, sqlite3_changeset_iter *pIter ){ int rc = SQLITE_OK; if( pIter->in.iCurrent==pIter->in.iNext || pIter->rc!=SQLITE_OK || pIter->bInvert ){ /* Iterator does not point to any valid entry or is an INVERT iterator. */ rc = SQLITE_ERROR; }else{ pIter->in.bNoDiscard = 1; rc = sessionOneChangeToHash(pGrp, pIter, 0); } return rc; } /* ** Obtain a buffer containing a changeset representing the concatenation ** of all changesets added to the group so far. */ SQLITE_API int sqlite3changegroup_output( |
︙ | ︙ | |||
257180 257181 257182 257183 257184 257185 257186 | static void fts5SourceIdFunc( sqlite3_context *pCtx, /* Function call context */ int nArg, /* Number of args */ sqlite3_value **apUnused /* Function arguments */ ){ assert( nArg==0 ); UNUSED_PARAM2(nArg, apUnused); | | | 257188 257189 257190 257191 257192 257193 257194 257195 257196 257197 257198 257199 257200 257201 257202 | static void fts5SourceIdFunc( sqlite3_context *pCtx, /* Function call context */ int nArg, /* Number of args */ sqlite3_value **apUnused /* Function arguments */ ){ assert( nArg==0 ); UNUSED_PARAM2(nArg, apUnused); sqlite3_result_text(pCtx, "fts5: 2025-05-26 07:15:20 de0dfac1e5ca9d2661674c20664095386f60c77378311507fcba08111df52b38", -1, SQLITE_TRANSIENT); } /* ** Implementation of fts5_locale(LOCALE, TEXT) function. ** ** If parameter LOCALE is NULL, or a zero-length string, then a copy of ** TEXT is returned. Otherwise, both LOCALE and TEXT are interpreted as |
︙ | ︙ | |||
266804 266805 266806 266807 266808 266809 266810 | /* ** If the TCLSH macro is defined, add code to make a stand-alone program. */ #if defined(TCLSH) /* This is the main routine for an ordinary TCL shell. If there are | | | | 266812 266813 266814 266815 266816 266817 266818 266819 266820 266821 266822 266823 266824 266825 266826 266827 | /* ** If the TCLSH macro is defined, add code to make a stand-alone program. */ #if defined(TCLSH) /* This is the main routine for an ordinary TCL shell. If there are ** arguments, run the first argument as a script. Otherwise, read TCL ** commands from standard input */ static const char *tclsh_main_loop(void){ static const char zMainloop[] = "if {[llength $argv]>=1} {\n" #ifdef WIN32 "set new [list]\n" "foreach arg $argv {\n" |
︙ | ︙ |