System.Data.SQLite
Check-in [1f07d53a90]
Not logged in

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: 1f07d53a90504a4c50a3ae9a4666db57976b8f7d
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
Hide Diffs Side-by-Side Diffs Ignore Whitespace Patch

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,