Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Update SQLite core library to the latest 'branch-3.21' code. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
1f07d53a90504a4c50a3ae9a4666db57 |
User & Date: | mistachkin 2017-10-17 19:59:59 |
Context
2017-10-17
| ||
20:01 | Add the 'BindInvariantDecimal' connection flag, enabled by default, which forces Decimal parameters to be converted to strings using the invariant culture. check-in: da44957e76 user: mistachkin tags: trunk | |
19:59 | Update SQLite core library to the latest 'branch-3.21' code. check-in: 1f07d53a90 user: mistachkin tags: trunk | |
18:09 | Update the expected results for test 'authorizer-1.1' to account for upstream changes. check-in: c5ddcaede4 user: mistachkin tags: trunk | |
Changes
Changes to SQLite.Interop/src/core/sqlite3.c.
1145 1145 ** 1146 1146 ** See also: [sqlite3_libversion()], 1147 1147 ** [sqlite3_libversion_number()], [sqlite3_sourceid()], 1148 1148 ** [sqlite_version()] and [sqlite_source_id()]. 1149 1149 */ 1150 1150 #define SQLITE_VERSION "3.21.0" 1151 1151 #define SQLITE_VERSION_NUMBER 3021000 1152 -#define SQLITE_SOURCE_ID "2017-10-16 11:50:12 700a3c694438ca6cca185d0097f24799e82717ef38cb47bd83666c80f0e3cb2f" 1152 +#define SQLITE_SOURCE_ID "2017-10-14 19:58:37 92eb721faefcdd8396072722d3e4d7ca41b860b306e4bb0f0191dde8f30d0add" 1153 1153 1154 1154 /* 1155 1155 ** CAPI3REF: Run-Time Library Version Numbers 1156 1156 ** KEYWORDS: sqlite3_version sqlite3_sourceid 1157 1157 ** 1158 1158 ** These interfaces provide the same information as the [SQLITE_VERSION], 1159 1159 ** [SQLITE_VERSION_NUMBER], and [SQLITE_SOURCE_ID] C preprocessor macros ................................................................................ 18173 18173 ** Threading interface 18174 18174 */ 18175 18175 #if SQLITE_MAX_WORKER_THREADS>0 18176 18176 SQLITE_PRIVATE int sqlite3ThreadCreate(SQLiteThread**,void*(*)(void*),void*); 18177 18177 SQLITE_PRIVATE int sqlite3ThreadJoin(SQLiteThread*, void**); 18178 18178 #endif 18179 18179 18180 -#if defined(SQLITE_ENABLE_DBPAGE_VTAB) || defined(SQLITE_TEST) 18181 -SQLITE_PRIVATE int sqlite3DbpageRegister(sqlite3*); 18182 -#endif 18183 18180 #if defined(SQLITE_ENABLE_DBSTAT_VTAB) || defined(SQLITE_TEST) 18184 18181 SQLITE_PRIVATE int sqlite3DbstatRegister(sqlite3*); 18185 18182 #endif 18186 18183 18187 18184 SQLITE_PRIVATE int sqlite3ExprVectorSize(Expr *pExpr); 18188 18185 SQLITE_PRIVATE int sqlite3ExprIsVector(Expr *pExpr); 18189 18186 SQLITE_PRIVATE Expr *sqlite3VectorFieldSubexpr(Expr*, int); ................................................................................ 48683 48680 48684 48681 #if defined(SQLITE_ENABLE_ATOMIC_WRITE) \ 48685 48682 || defined(SQLITE_ENABLE_BATCH_ATOMIC_WRITE) 48686 48683 int dc; /* Device characteristics */ 48687 48684 48688 48685 assert( isOpen(pPager->fd) ); 48689 48686 dc = sqlite3OsDeviceCharacteristics(pPager->fd); 48687 +#else 48688 + UNUSED_PARAMETER(pPager); 48690 48689 #endif 48691 48690 48692 48691 #ifdef SQLITE_ENABLE_BATCH_ATOMIC_WRITE 48693 48692 if( dc&SQLITE_IOCAP_BATCH_ATOMIC ){ 48694 48693 return -1; 48695 48694 } 48696 48695 #endif ................................................................................ 133693 133692 } 133694 133693 } 133695 133694 133696 133695 /* 133697 133696 ** Return TRUE if all of the following are true: 133698 133697 ** 133699 133698 ** (1) X has the same or lower cost that Y 133700 -** (2) X uses fewer WHERE clause terms than Y 133701 -** (3) Every WHERE clause term used by X is also used by Y 133702 -** (4) X skips at least as many columns as Y 133703 -** (5) If X is a covering index, than Y is too 133699 +** (2) X is a proper subset of Y 133700 +** (3) X skips at least as many columns as Y 133704 133701 ** 133705 -** Conditions (2) and (3) mean that X is a "proper subset" of Y. 133702 +** By "proper subset" we mean that X uses fewer WHERE clause terms 133703 +** than Y and that every WHERE clause term used by X is also used 133704 +** by Y. 133705 +** 133706 133706 ** If X is a proper subset of Y then Y is a better choice and ought 133707 133707 ** to have a lower cost. This routine returns TRUE when that cost 133708 -** relationship is inverted and needs to be adjusted. Constraint (4) 133708 +** relationship is inverted and needs to be adjusted. The third rule 133709 133709 ** was added because if X uses skip-scan less than Y it still might 133710 -** deserve a lower cost even if it is a proper subset of Y. Constraint (5) 133711 -** was added because a covering index probably deserves to have a lower cost 133712 -** than a non-covering index even if it is a proper subset. 133710 +** deserve a lower cost even if it is a proper subset of Y. 133713 133711 */ 133714 133712 static int whereLoopCheaperProperSubset( 133715 133713 const WhereLoop *pX, /* First WhereLoop to compare */ 133716 133714 const WhereLoop *pY /* Compare against this WhereLoop */ 133717 133715 ){ 133718 133716 int i, j; 133719 133717 if( pX->nLTerm-pX->nSkip >= pY->nLTerm-pY->nSkip ){ ................................................................................ 133727 133725 for(i=pX->nLTerm-1; i>=0; i--){ 133728 133726 if( pX->aLTerm[i]==0 ) continue; 133729 133727 for(j=pY->nLTerm-1; j>=0; j--){ 133730 133728 if( pY->aLTerm[j]==pX->aLTerm[i] ) break; 133731 133729 } 133732 133730 if( j<0 ) return 0; /* X not a subset of Y since term X[i] not used by Y */ 133733 133731 } 133734 - if( (pX->wsFlags&WHERE_IDX_ONLY)!=0 133735 - && (pY->wsFlags&WHERE_IDX_ONLY)==0 ){ 133736 - return 0; /* Constraint (5) */ 133737 - } 133738 133732 return 1; /* All conditions meet */ 133739 133733 } 133740 133734 133741 133735 /* 133742 133736 ** Try to adjust the cost of WhereLoop pTemplate upwards or downwards so 133743 133737 ** that: 133744 133738 ** ................................................................................ 145030 145024 } 145031 145025 #endif 145032 145026 145033 145027 #ifdef SQLITE_ENABLE_RTREE 145034 145028 if( !db->mallocFailed && rc==SQLITE_OK){ 145035 145029 rc = sqlite3RtreeInit(db); 145036 145030 } 145037 -#endif 145038 - 145039 -#ifdef SQLITE_ENABLE_DBPAGE_VTAB 145040 - if( !db->mallocFailed && rc==SQLITE_OK){ 145041 - rc = sqlite3DbpageRegister(db); 145042 - } 145043 145031 #endif 145044 145032 145045 145033 #ifdef SQLITE_ENABLE_DBSTAT_VTAB 145046 145034 if( !db->mallocFailed && rc==SQLITE_OK){ 145047 145035 rc = sqlite3DbstatRegister(db); 145048 145036 } 145049 145037 #endif ................................................................................ 176412 176400 return sqlite3_create_module(db, "dbstat", &dbstat_module, 0); 176413 176401 } 176414 176402 #elif defined(SQLITE_ENABLE_DBSTAT_VTAB) 176415 176403 SQLITE_PRIVATE int sqlite3DbstatRegister(sqlite3 *db){ return SQLITE_OK; } 176416 176404 #endif /* SQLITE_ENABLE_DBSTAT_VTAB */ 176417 176405 176418 176406 /************** End of dbstat.c **********************************************/ 176419 -/************** Begin file dbpage.c ******************************************/ 176420 -/* 176421 -** 2017-10-11 176422 -** 176423 -** The author disclaims copyright to this source code. In place of 176424 -** a legal notice, here is a blessing: 176425 -** 176426 -** May you do good and not evil. 176427 -** May you find forgiveness for yourself and forgive others. 176428 -** May you share freely, never taking more than you give. 176429 -** 176430 -****************************************************************************** 176431 -** 176432 -** This file contains an implementation of the "sqlite_dbpage" virtual table. 176433 -** 176434 -** The sqlite_dbpage virtual table is used to read or write whole raw 176435 -** pages of the database file. The pager interface is used so that 176436 -** uncommitted changes and changes recorded in the WAL file are correctly 176437 -** retrieved. 176438 -** 176439 -** Usage example: 176440 -** 176441 -** SELECT data FROM sqlite_dbpage('aux1') WHERE pgno=123; 176442 -** 176443 -** This is an eponymous virtual table so it does not need to be created before 176444 -** use. The optional argument to the sqlite_dbpage() table name is the 176445 -** schema for the database file that is to be read. The default schema is 176446 -** "main". 176447 -** 176448 -** The data field of sqlite_dbpage table can be updated. The new 176449 -** value must be a BLOB which is the correct page size, otherwise the 176450 -** update fails. Rows may not be deleted or inserted. 176451 -*/ 176452 - 176453 -/* #include "sqliteInt.h" ** Requires access to internal data structures ** */ 176454 -#if (defined(SQLITE_ENABLE_DBPAGE_VTAB) || defined(SQLITE_TEST)) \ 176455 - && !defined(SQLITE_OMIT_VIRTUALTABLE) 176456 - 176457 -typedef struct DbpageTable DbpageTable; 176458 -typedef struct DbpageCursor DbpageCursor; 176459 - 176460 -struct DbpageCursor { 176461 - sqlite3_vtab_cursor base; /* Base class. Must be first */ 176462 - int pgno; /* Current page number */ 176463 - int mxPgno; /* Last page to visit on this scan */ 176464 -}; 176465 - 176466 -struct DbpageTable { 176467 - sqlite3_vtab base; /* Base class. Must be first */ 176468 - sqlite3 *db; /* The database */ 176469 - Pager *pPager; /* Pager being read/written */ 176470 - int iDb; /* Index of database to analyze */ 176471 - int szPage; /* Size of each page in bytes */ 176472 - int nPage; /* Number of pages in the file */ 176473 -}; 176474 - 176475 -/* 176476 -** Connect to or create a dbpagevfs virtual table. 176477 -*/ 176478 -static int dbpageConnect( 176479 - sqlite3 *db, 176480 - void *pAux, 176481 - int argc, const char *const*argv, 176482 - sqlite3_vtab **ppVtab, 176483 - char **pzErr 176484 -){ 176485 - DbpageTable *pTab = 0; 176486 - int rc = SQLITE_OK; 176487 - int iDb; 176488 - 176489 - if( argc>=4 ){ 176490 - Token nm; 176491 - sqlite3TokenInit(&nm, (char*)argv[3]); 176492 - iDb = sqlite3FindDb(db, &nm); 176493 - if( iDb<0 ){ 176494 - *pzErr = sqlite3_mprintf("no such schema: %s", argv[3]); 176495 - return SQLITE_ERROR; 176496 - } 176497 - }else{ 176498 - iDb = 0; 176499 - } 176500 - rc = sqlite3_declare_vtab(db, 176501 - "CREATE TABLE x(pgno INTEGER PRIMARY KEY, data BLOB, schema HIDDEN)"); 176502 - if( rc==SQLITE_OK ){ 176503 - pTab = (DbpageTable *)sqlite3_malloc64(sizeof(DbpageTable)); 176504 - if( pTab==0 ) rc = SQLITE_NOMEM_BKPT; 176505 - } 176506 - 176507 - assert( rc==SQLITE_OK || pTab==0 ); 176508 - if( rc==SQLITE_OK ){ 176509 - Btree *pBt = db->aDb[iDb].pBt; 176510 - memset(pTab, 0, sizeof(DbpageTable)); 176511 - pTab->db = db; 176512 - pTab->iDb = iDb; 176513 - pTab->pPager = pBt ? sqlite3BtreePager(pBt) : 0; 176514 - } 176515 - 176516 - *ppVtab = (sqlite3_vtab*)pTab; 176517 - return rc; 176518 -} 176519 - 176520 -/* 176521 -** Disconnect from or destroy a dbpagevfs virtual table. 176522 -*/ 176523 -static int dbpageDisconnect(sqlite3_vtab *pVtab){ 176524 - sqlite3_free(pVtab); 176525 - return SQLITE_OK; 176526 -} 176527 - 176528 -/* 176529 -** idxNum: 176530 -** 176531 -** 0 full table scan 176532 -** 1 pgno=?1 176533 -*/ 176534 -static int dbpageBestIndex(sqlite3_vtab *tab, sqlite3_index_info *pIdxInfo){ 176535 - int i; 176536 - pIdxInfo->estimatedCost = 1.0e6; /* Initial cost estimate */ 176537 - for(i=0; i<pIdxInfo->nConstraint; i++){ 176538 - struct sqlite3_index_constraint *p = &pIdxInfo->aConstraint[i]; 176539 - if( p->usable && p->iColumn<=0 && p->op==SQLITE_INDEX_CONSTRAINT_EQ ){ 176540 - pIdxInfo->estimatedRows = 1; 176541 - pIdxInfo->idxFlags = SQLITE_INDEX_SCAN_UNIQUE; 176542 - pIdxInfo->estimatedCost = 1.0; 176543 - pIdxInfo->idxNum = 1; 176544 - pIdxInfo->aConstraintUsage[i].argvIndex = 1; 176545 - pIdxInfo->aConstraintUsage[i].omit = 1; 176546 - break; 176547 - } 176548 - } 176549 - if( pIdxInfo->nOrderBy>=1 176550 - && pIdxInfo->aOrderBy[0].iColumn<=0 176551 - && pIdxInfo->aOrderBy[0].desc==0 176552 - ){ 176553 - pIdxInfo->orderByConsumed = 1; 176554 - } 176555 - return SQLITE_OK; 176556 -} 176557 - 176558 -/* 176559 -** Open a new dbpagevfs cursor. 176560 -*/ 176561 -static int dbpageOpen(sqlite3_vtab *pVTab, sqlite3_vtab_cursor **ppCursor){ 176562 - DbpageCursor *pCsr; 176563 - 176564 - pCsr = (DbpageCursor *)sqlite3_malloc64(sizeof(DbpageCursor)); 176565 - if( pCsr==0 ){ 176566 - return SQLITE_NOMEM_BKPT; 176567 - }else{ 176568 - memset(pCsr, 0, sizeof(DbpageCursor)); 176569 - pCsr->base.pVtab = pVTab; 176570 - pCsr->pgno = -1; 176571 - } 176572 - 176573 - *ppCursor = (sqlite3_vtab_cursor *)pCsr; 176574 - return SQLITE_OK; 176575 -} 176576 - 176577 -/* 176578 -** Close a dbpagevfs cursor. 176579 -*/ 176580 -static int dbpageClose(sqlite3_vtab_cursor *pCursor){ 176581 - DbpageCursor *pCsr = (DbpageCursor *)pCursor; 176582 - sqlite3_free(pCsr); 176583 - return SQLITE_OK; 176584 -} 176585 - 176586 -/* 176587 -** Move a dbpagevfs cursor to the next entry in the file. 176588 -*/ 176589 -static int dbpageNext(sqlite3_vtab_cursor *pCursor){ 176590 - int rc = SQLITE_OK; 176591 - DbpageCursor *pCsr = (DbpageCursor *)pCursor; 176592 - pCsr->pgno++; 176593 - return rc; 176594 -} 176595 - 176596 -static int dbpageEof(sqlite3_vtab_cursor *pCursor){ 176597 - DbpageCursor *pCsr = (DbpageCursor *)pCursor; 176598 - return pCsr->pgno > pCsr->mxPgno; 176599 -} 176600 - 176601 -static int dbpageFilter( 176602 - sqlite3_vtab_cursor *pCursor, 176603 - int idxNum, const char *idxStr, 176604 - int argc, sqlite3_value **argv 176605 -){ 176606 - DbpageCursor *pCsr = (DbpageCursor *)pCursor; 176607 - DbpageTable *pTab = (DbpageTable *)pCursor->pVtab; 176608 - int rc = SQLITE_OK; 176609 - Btree *pBt = pTab->db->aDb[pTab->iDb].pBt; 176610 - 176611 - pTab->szPage = sqlite3BtreeGetPageSize(pBt); 176612 - pTab->nPage = sqlite3BtreeLastPage(pBt); 176613 - if( idxNum==1 ){ 176614 - pCsr->pgno = sqlite3_value_int(argv[0]); 176615 - if( pCsr->pgno<1 || pCsr->pgno>pTab->nPage ){ 176616 - pCsr->pgno = 1; 176617 - pCsr->mxPgno = 0; 176618 - }else{ 176619 - pCsr->mxPgno = pCsr->pgno; 176620 - } 176621 - }else{ 176622 - pCsr->pgno = 1; 176623 - pCsr->mxPgno = pTab->nPage; 176624 - } 176625 - return rc; 176626 -} 176627 - 176628 -static int dbpageColumn( 176629 - sqlite3_vtab_cursor *pCursor, 176630 - sqlite3_context *ctx, 176631 - int i 176632 -){ 176633 - DbpageCursor *pCsr = (DbpageCursor *)pCursor; 176634 - DbpageTable *pTab = (DbpageTable *)pCursor->pVtab; 176635 - int rc = SQLITE_OK; 176636 - switch( i ){ 176637 - case 0: { /* pgno */ 176638 - sqlite3_result_int(ctx, pCsr->pgno); 176639 - break; 176640 - } 176641 - case 1: { /* data */ 176642 - DbPage *pDbPage = 0; 176643 - rc = sqlite3PagerGet(pTab->pPager, pCsr->pgno, (DbPage**)&pDbPage, 0); 176644 - if( rc==SQLITE_OK ){ 176645 - sqlite3_result_blob(ctx, sqlite3PagerGetData(pDbPage), pTab->szPage, 176646 - SQLITE_TRANSIENT); 176647 - } 176648 - sqlite3PagerUnref(pDbPage); 176649 - break; 176650 - } 176651 - default: { /* schema */ 176652 - sqlite3 *db = sqlite3_context_db_handle(ctx); 176653 - sqlite3_result_text(ctx, db->aDb[pTab->iDb].zDbSName, -1, SQLITE_STATIC); 176654 - break; 176655 - } 176656 - } 176657 - return SQLITE_OK; 176658 -} 176659 - 176660 -static int dbpageRowid(sqlite3_vtab_cursor *pCursor, sqlite_int64 *pRowid){ 176661 - DbpageCursor *pCsr = (DbpageCursor *)pCursor; 176662 - *pRowid = pCsr->pgno; 176663 - return SQLITE_OK; 176664 -} 176665 - 176666 -static int dbpageUpdate( 176667 - sqlite3_vtab *pVtab, 176668 - int argc, 176669 - sqlite3_value **argv, 176670 - sqlite_int64 *pRowid 176671 -){ 176672 - DbpageTable *pTab = (DbpageTable *)pVtab; 176673 - int pgno; 176674 - DbPage *pDbPage = 0; 176675 - int rc = SQLITE_OK; 176676 - char *zErr = 0; 176677 - 176678 - if( argc==1 ){ 176679 - zErr = "cannot delete"; 176680 - goto update_fail; 176681 - } 176682 - pgno = sqlite3_value_int(argv[0]); 176683 - if( pgno<1 || pgno>pTab->nPage ){ 176684 - zErr = "bad page number"; 176685 - goto update_fail; 176686 - } 176687 - if( sqlite3_value_int(argv[1])!=pgno ){ 176688 - zErr = "cannot insert"; 176689 - goto update_fail; 176690 - } 176691 - if( sqlite3_value_type(argv[3])!=SQLITE_BLOB 176692 - || sqlite3_value_bytes(argv[3])!=pTab->szPage 176693 - ){ 176694 - zErr = "bad page value"; 176695 - goto update_fail; 176696 - } 176697 - rc = sqlite3PagerGet(pTab->pPager, pgno, (DbPage**)&pDbPage, 0); 176698 - if( rc==SQLITE_OK ){ 176699 - rc = sqlite3PagerWrite(pDbPage); 176700 - if( rc==SQLITE_OK ){ 176701 - memcpy(sqlite3PagerGetData(pDbPage), 176702 - sqlite3_value_blob(argv[3]), 176703 - pTab->szPage); 176704 - } 176705 - } 176706 - sqlite3PagerUnref(pDbPage); 176707 - return rc; 176708 - 176709 -update_fail: 176710 - sqlite3_free(pVtab->zErrMsg); 176711 - pVtab->zErrMsg = sqlite3_mprintf("%s", zErr); 176712 - return SQLITE_ERROR; 176713 -} 176714 - 176715 -/* 176716 -** Invoke this routine to register the "dbpage" virtual table module 176717 -*/ 176718 -SQLITE_PRIVATE int sqlite3DbpageRegister(sqlite3 *db){ 176719 - static sqlite3_module dbpage_module = { 176720 - 0, /* iVersion */ 176721 - dbpageConnect, /* xCreate */ 176722 - dbpageConnect, /* xConnect */ 176723 - dbpageBestIndex, /* xBestIndex */ 176724 - dbpageDisconnect, /* xDisconnect */ 176725 - dbpageDisconnect, /* xDestroy */ 176726 - dbpageOpen, /* xOpen - open a cursor */ 176727 - dbpageClose, /* xClose - close a cursor */ 176728 - dbpageFilter, /* xFilter - configure scan constraints */ 176729 - dbpageNext, /* xNext - advance a cursor */ 176730 - dbpageEof, /* xEof - check for end of scan */ 176731 - dbpageColumn, /* xColumn - read data */ 176732 - dbpageRowid, /* xRowid - read data */ 176733 - dbpageUpdate, /* xUpdate */ 176734 - 0, /* xBegin */ 176735 - 0, /* xSync */ 176736 - 0, /* xCommit */ 176737 - 0, /* xRollback */ 176738 - 0, /* xFindMethod */ 176739 - 0, /* xRename */ 176740 - 0, /* xSavepoint */ 176741 - 0, /* xRelease */ 176742 - 0, /* xRollbackTo */ 176743 - }; 176744 - return sqlite3_create_module(db, "sqlite_dbpage", &dbpage_module, 0); 176745 -} 176746 -#elif defined(SQLITE_ENABLE_DBPAGE_VTAB) 176747 -SQLITE_PRIVATE int sqlite3DbpageRegister(sqlite3 *db){ return SQLITE_OK; } 176748 -#endif /* SQLITE_ENABLE_DBSTAT_VTAB */ 176749 - 176750 -/************** End of dbpage.c **********************************************/ 176751 176407 /************** Begin file sqlite3session.c **********************************/ 176752 176408 176753 176409 #if defined(SQLITE_ENABLE_SESSION) && defined(SQLITE_ENABLE_PREUPDATE_HOOK) 176754 176410 /* #include "sqlite3session.h" */ 176755 176411 /* #include <assert.h> */ 176756 176412 /* #include <string.h> */ 176757 176413 ................................................................................ 201075 200731 static void fts5SourceIdFunc( 201076 200732 sqlite3_context *pCtx, /* Function call context */ 201077 200733 int nArg, /* Number of args */ 201078 200734 sqlite3_value **apUnused /* Function arguments */ 201079 200735 ){ 201080 200736 assert( nArg==0 ); 201081 200737 UNUSED_PARAM2(nArg, apUnused); 201082 - sqlite3_result_text(pCtx, "fts5: 2017-10-16 11:50:12 700a3c694438ca6cca185d0097f24799e82717ef38cb47bd83666c80f0e3cb2f", -1, SQLITE_TRANSIENT); 200738 + sqlite3_result_text(pCtx, "fts5: 2017-10-14 19:58:37 92eb721faefcdd8396072722d3e4d7ca41b860b306e4bb0f0191dde8f30d0add", -1, SQLITE_TRANSIENT); 201083 200739 } 201084 200740 201085 200741 static int fts5Init(sqlite3 *db){ 201086 200742 static const sqlite3_module fts5Mod = { 201087 200743 /* iVersion */ 2, 201088 200744 /* xCreate */ fts5CreateMethod, 201089 200745 /* xConnect */ fts5ConnectMethod, ................................................................................ 205343 204999 #endif 205344 205000 return rc; 205345 205001 } 205346 205002 #endif /* SQLITE_CORE */ 205347 205003 #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_STMTVTAB) */ 205348 205004 205349 205005 /************** End of stmt.c ************************************************/ 205350 -#if __LINE__!=205350 205006 +#if __LINE__!=205006 205351 205007 #undef SQLITE_SOURCE_ID 205352 -#define SQLITE_SOURCE_ID "2017-10-16 11:50:12 700a3c694438ca6cca185d0097f24799e82717ef38cb47bd83666c80f0e3alt2" 205008 +#define SQLITE_SOURCE_ID "2017-10-14 19:58:37 92eb721faefcdd8396072722d3e4d7ca41b860b306e4bb0f0191dde8f30dalt2" 205353 205009 #endif 205354 205010 /* Return the source-id for this library */ 205355 205011 SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; } 205356 205012 /************************** End of sqlite3.c ******************************/
Changes to SQLite.Interop/src/core/sqlite3.h.
121 121 ** 122 122 ** See also: [sqlite3_libversion()], 123 123 ** [sqlite3_libversion_number()], [sqlite3_sourceid()], 124 124 ** [sqlite_version()] and [sqlite_source_id()]. 125 125 */ 126 126 #define SQLITE_VERSION "3.21.0" 127 127 #define SQLITE_VERSION_NUMBER 3021000 128 -#define SQLITE_SOURCE_ID "2017-10-16 11:50:12 700a3c694438ca6cca185d0097f24799e82717ef38cb47bd83666c80f0e3cb2f" 128 +#define SQLITE_SOURCE_ID "2017-10-14 19:58:37 92eb721faefcdd8396072722d3e4d7ca41b860b306e4bb0f0191dde8f30d0add" 129 129 130 130 /* 131 131 ** CAPI3REF: Run-Time Library Version Numbers 132 132 ** KEYWORDS: sqlite3_version sqlite3_sourceid 133 133 ** 134 134 ** These interfaces provide the same information as the [SQLITE_VERSION], 135 135 ** [SQLITE_VERSION_NUMBER], and [SQLITE_SOURCE_ID] C preprocessor macros
Changes to SQLite.Interop/src/ext/fts5.c.
17315 17315 static void fts5SourceIdFunc( 17316 17316 sqlite3_context *pCtx, /* Function call context */ 17317 17317 int nArg, /* Number of args */ 17318 17318 sqlite3_value **apUnused /* Function arguments */ 17319 17319 ){ 17320 17320 assert( nArg==0 ); 17321 17321 UNUSED_PARAM2(nArg, apUnused); 17322 - sqlite3_result_text(pCtx, "fts5: 2017-10-16 11:50:12 700a3c694438ca6cca185d0097f24799e82717ef38cb47bd83666c80f0e3cb2f", -1, SQLITE_TRANSIENT); 17322 + sqlite3_result_text(pCtx, "fts5: 2017-10-14 19:58:37 92eb721faefcdd8396072722d3e4d7ca41b860b306e4bb0f0191dde8f30d0add", -1, SQLITE_TRANSIENT); 17323 17323 } 17324 17324 17325 17325 static int fts5Init(sqlite3 *db){ 17326 17326 static const sqlite3_module fts5Mod = { 17327 17327 /* iVersion */ 2, 17328 17328 /* xCreate */ fts5CreateMethod, 17329 17329 /* xConnect */ fts5ConnectMethod,