Fossil SCM

Update the makefiles so that the build-in SQLite compiles with SQLITE_OMIT_SHARED_CACHE. Update the build-in SQLite sources to the latest 3.15 alpha, which compiles without warning with the above option.

drh 2016-09-10 20:01 trunk
Commit 871f978d9b080403b73408858a63353ddaaf85a3
--- src/main.mk
+++ src/main.mk
@@ -487,10 +487,11 @@
487487
$(OBJDIR)/mkversion $(SRCDIR)/../manifest.uuid $(SRCDIR)/../manifest $(SRCDIR)/../VERSION >$(OBJDIR)/VERSION.h
488488
489489
# Setup the options used to compile the included SQLite library.
490490
SQLITE_OPTIONS = -DNDEBUG=1 \
491491
-DSQLITE_OMIT_LOAD_EXTENSION=1 \
492
+ -DSQLITE_OMIT_SHARED_CACHE \
492493
-DSQLITE_ENABLE_LOCKING_STYLE=0 \
493494
-DSQLITE_LIKE_DOESNT_MATCH_BLOBS=1 \
494495
-DSQLITE_THREADSAFE=0 \
495496
-DSQLITE_DEFAULT_FILE_FORMAT=4 \
496497
-DSQLITE_OMIT_DEPRECATED \
497498
--- src/main.mk
+++ src/main.mk
@@ -487,10 +487,11 @@
487 $(OBJDIR)/mkversion $(SRCDIR)/../manifest.uuid $(SRCDIR)/../manifest $(SRCDIR)/../VERSION >$(OBJDIR)/VERSION.h
488
489 # Setup the options used to compile the included SQLite library.
490 SQLITE_OPTIONS = -DNDEBUG=1 \
491 -DSQLITE_OMIT_LOAD_EXTENSION=1 \
 
492 -DSQLITE_ENABLE_LOCKING_STYLE=0 \
493 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS=1 \
494 -DSQLITE_THREADSAFE=0 \
495 -DSQLITE_DEFAULT_FILE_FORMAT=4 \
496 -DSQLITE_OMIT_DEPRECATED \
497
--- src/main.mk
+++ src/main.mk
@@ -487,10 +487,11 @@
487 $(OBJDIR)/mkversion $(SRCDIR)/../manifest.uuid $(SRCDIR)/../manifest $(SRCDIR)/../VERSION >$(OBJDIR)/VERSION.h
488
489 # Setup the options used to compile the included SQLite library.
490 SQLITE_OPTIONS = -DNDEBUG=1 \
491 -DSQLITE_OMIT_LOAD_EXTENSION=1 \
492 -DSQLITE_OMIT_SHARED_CACHE \
493 -DSQLITE_ENABLE_LOCKING_STYLE=0 \
494 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS=1 \
495 -DSQLITE_THREADSAFE=0 \
496 -DSQLITE_DEFAULT_FILE_FORMAT=4 \
497 -DSQLITE_OMIT_DEPRECATED \
498
--- src/makemake.tcl
+++ src/makemake.tcl
@@ -155,10 +155,11 @@
155155
# Options used to compile the included SQLite library.
156156
#
157157
set SQLITE_OPTIONS {
158158
-DNDEBUG=1
159159
-DSQLITE_OMIT_LOAD_EXTENSION=1
160
+ -DSQLITE_OMIT_SHARED_CACHE
160161
-DSQLITE_ENABLE_LOCKING_STYLE=0
161162
-DSQLITE_LIKE_DOESNT_MATCH_BLOBS=1
162163
-DSQLITE_THREADSAFE=0
163164
-DSQLITE_DEFAULT_FILE_FORMAT=4
164165
-DSQLITE_OMIT_DEPRECATED
165166
--- src/makemake.tcl
+++ src/makemake.tcl
@@ -155,10 +155,11 @@
155 # Options used to compile the included SQLite library.
156 #
157 set SQLITE_OPTIONS {
158 -DNDEBUG=1
159 -DSQLITE_OMIT_LOAD_EXTENSION=1
 
160 -DSQLITE_ENABLE_LOCKING_STYLE=0
161 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS=1
162 -DSQLITE_THREADSAFE=0
163 -DSQLITE_DEFAULT_FILE_FORMAT=4
164 -DSQLITE_OMIT_DEPRECATED
165
--- src/makemake.tcl
+++ src/makemake.tcl
@@ -155,10 +155,11 @@
155 # Options used to compile the included SQLite library.
156 #
157 set SQLITE_OPTIONS {
158 -DNDEBUG=1
159 -DSQLITE_OMIT_LOAD_EXTENSION=1
160 -DSQLITE_OMIT_SHARED_CACHE
161 -DSQLITE_ENABLE_LOCKING_STYLE=0
162 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS=1
163 -DSQLITE_THREADSAFE=0
164 -DSQLITE_DEFAULT_FILE_FORMAT=4
165 -DSQLITE_OMIT_DEPRECATED
166
+61 -25
--- src/sqlite3.c
+++ src/sqlite3.c
@@ -380,11 +380,11 @@
380380
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
381381
** [sqlite_version()] and [sqlite_source_id()].
382382
*/
383383
#define SQLITE_VERSION "3.15.0"
384384
#define SQLITE_VERSION_NUMBER 3015000
385
-#define SQLITE_SOURCE_ID "2016-09-07 19:54:24 ddb5f0558c44569913d22781ab78f3e9b58d7aea"
385
+#define SQLITE_SOURCE_ID "2016-09-10 19:51:40 711c59171b22df04224183a713e6c36e0bb3bba8"
386386
387387
/*
388388
** CAPI3REF: Run-Time Library Version Numbers
389389
** KEYWORDS: sqlite3_version, sqlite3_sourceid
390390
**
@@ -12093,11 +12093,13 @@
1209312093
SQLITE_PRIVATE int sqlite3BtreeIsInTrans(Btree*);
1209412094
SQLITE_PRIVATE int sqlite3BtreeIsInReadTrans(Btree*);
1209512095
SQLITE_PRIVATE int sqlite3BtreeIsInBackup(Btree*);
1209612096
SQLITE_PRIVATE void *sqlite3BtreeSchema(Btree *, int, void(*)(void *));
1209712097
SQLITE_PRIVATE int sqlite3BtreeSchemaLocked(Btree *pBtree);
12098
+#ifndef SQLITE_OMIT_SHARED_CACHE
1209812099
SQLITE_PRIVATE int sqlite3BtreeLockTable(Btree *pBtree, int iTab, u8 isWriteLock);
12100
+#endif
1209912101
SQLITE_PRIVATE int sqlite3BtreeSavepoint(Btree *, int, int);
1210012102
1210112103
SQLITE_PRIVATE const char *sqlite3BtreeGetFilename(Btree *);
1210212104
SQLITE_PRIVATE const char *sqlite3BtreeGetJournalname(Btree *);
1210312105
SQLITE_PRIVATE int sqlite3BtreeCopyFile(Btree *, Btree *);
@@ -12296,12 +12298,14 @@
1229612298
SQLITE_PRIVATE int sqlite3BtreeData(BtCursor*, u32 offset, u32 amt, void*);
1229712299
1229812300
SQLITE_PRIVATE char *sqlite3BtreeIntegrityCheck(Btree*, int *aRoot, int nRoot, int, int*);
1229912301
SQLITE_PRIVATE struct Pager *sqlite3BtreePager(Btree*);
1230012302
12303
+#ifndef SQLITE_OMIT_INCRBLOB
1230112304
SQLITE_PRIVATE int sqlite3BtreePutData(BtCursor*, u32 offset, u32 amt, void*);
1230212305
SQLITE_PRIVATE void sqlite3BtreeIncrblobCursor(BtCursor *);
12306
+#endif
1230312307
SQLITE_PRIVATE void sqlite3BtreeClearCursor(BtCursor *);
1230412308
SQLITE_PRIVATE int sqlite3BtreeSetVersion(Btree *pBt, int iVersion);
1230512309
SQLITE_PRIVATE int sqlite3BtreeCursorHasHint(BtCursor*, unsigned int mask);
1230612310
SQLITE_PRIVATE int sqlite3BtreeIsReadonly(Btree *pBt);
1230712311
SQLITE_PRIVATE int sqlite3HeaderSizeBtree(void);
@@ -68945,11 +68949,11 @@
6894568949
*/
6894668950
SQLITE_PRIVATE int sqlite3VdbeMemMakeWriteable(Mem *pMem){
6894768951
int f;
6894868952
assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) );
6894968953
assert( (pMem->flags&MEM_RowSet)==0 );
68950
- ExpandBlob(pMem);
68954
+ (void)ExpandBlob(pMem);
6895168955
f = pMem->flags;
6895268956
if( (f&(MEM_Str|MEM_Blob)) && (pMem->szMalloc==0 || pMem->z!=pMem->zMalloc) ){
6895368957
if( sqlite3VdbeMemGrow(pMem, pMem->n + 2, 1) ){
6895468958
return SQLITE_NOMEM_BKPT;
6895568959
}
@@ -69328,11 +69332,11 @@
6932869332
MemSetTypeFlag(pMem, MEM_Real);
6932969333
sqlite3VdbeIntegerAffinity(pMem);
6933069334
}
6933169335
}
6933269336
assert( (pMem->flags & (MEM_Int|MEM_Real|MEM_Null))!=0 );
69333
- pMem->flags &= ~(MEM_Str|MEM_Blob);
69337
+ pMem->flags &= ~(MEM_Str|MEM_Blob|MEM_Zero);
6933469338
return SQLITE_OK;
6933569339
}
6933669340
6933769341
/*
6933869342
** Cast the datatype of the value in pMem according to the affinity
@@ -69771,13 +69775,10 @@
6977169775
assert( (enc&3)==(enc&~SQLITE_UTF16_ALIGNED) );
6977269776
assert( (pVal->flags & MEM_RowSet)==0 );
6977369777
assert( (pVal->flags & (MEM_Null))==0 );
6977469778
if( pVal->flags & (MEM_Blob|MEM_Str) ){
6977569779
pVal->flags |= MEM_Str;
69776
- if( pVal->flags & MEM_Zero ){
69777
- sqlite3VdbeMemExpandBlob(pVal);
69778
- }
6977969780
if( pVal->enc != (enc & ~SQLITE_UTF16_ALIGNED) ){
6978069781
sqlite3VdbeChangeEncoding(pVal, enc & ~SQLITE_UTF16_ALIGNED);
6978169782
}
6978269783
if( (enc & SQLITE_UTF16_ALIGNED)!=0 && 1==(1&SQLITE_PTR_TO_INT(pVal->z)) ){
6978369784
assert( (pVal->flags & (MEM_Ephem|MEM_Static))!=0 );
@@ -74190,20 +74191,52 @@
7419074191
sqlite3VdbeMemRelease(&c1);
7419174192
sqlite3VdbeMemRelease(&c2);
7419274193
return rc;
7419374194
}
7419474195
}
74196
+
74197
+/*
74198
+** The input pBlob is guaranteed to be a Blob that is not marked
74199
+** with MEM_Zero. Return true if it could be a zero-blob.
74200
+*/
74201
+static int isZeroBlob(const Mem *pBlob){
74202
+ int i;
74203
+ for(i=0; i<pBlob->n && pBlob->z[i]==0; i++){}
74204
+ return i==pBlob->n;
74205
+}
7419574206
7419674207
/*
7419774208
** Compare two blobs. Return negative, zero, or positive if the first
7419874209
** is less than, equal to, or greater than the second, respectively.
7419974210
** If one blob is a prefix of the other, then the shorter is the lessor.
7420074211
*/
7420174212
static SQLITE_NOINLINE int sqlite3BlobCompare(const Mem *pB1, const Mem *pB2){
74202
- int c = memcmp(pB1->z, pB2->z, pB1->n>pB2->n ? pB2->n : pB1->n);
74213
+ int c;
74214
+ int n1 = pB1->n;
74215
+ int n2 = pB2->n;
74216
+
74217
+ /* It is possible to have a Blob value that has some non-zero content
74218
+ ** followed by zero content. But that only comes up for Blobs formed
74219
+ ** by the OP_MakeRecord opcode, and such Blobs never get passed into
74220
+ ** sqlite3MemCompare(). */
74221
+ assert( (pB1->flags & MEM_Zero)==0 || n1==0 );
74222
+ assert( (pB2->flags & MEM_Zero)==0 || n2==0 );
74223
+
74224
+ if( (pB1->flags|pB2->flags) & MEM_Zero ){
74225
+ if( pB1->flags & pB2->flags & MEM_Zero ){
74226
+ return pB1->u.nZero - pB2->u.nZero;
74227
+ }else if( pB1->flags & MEM_Zero ){
74228
+ if( !isZeroBlob(pB2) ) return -1;
74229
+ return pB1->u.nZero - n2;
74230
+ }else{
74231
+ if( !isZeroBlob(pB1) ) return +1;
74232
+ return n1 - pB2->u.nZero;
74233
+ }
74234
+ }
74235
+ c = memcmp(pB1->z, pB2->z, n1>n2 ? n2 : n1);
7420374236
if( c ) return c;
74204
- return pB1->n - pB2->n;
74237
+ return n1 - n2;
7420574238
}
7420674239
7420774240
/*
7420874241
** Do a comparison between a 64-bit signed integer and a 64-bit floating-point
7420974242
** number. Return negative, zero, or positive if the first (i64) is less than,
@@ -79289,23 +79322,33 @@
7928979322
affinity = pOp->p5 & SQLITE_AFF_MASK;
7929079323
if( affinity>=SQLITE_AFF_NUMERIC ){
7929179324
if( (flags1 | flags3)&MEM_Str ){
7929279325
if( (flags1 & (MEM_Int|MEM_Real|MEM_Str))==MEM_Str ){
7929379326
applyNumericAffinity(pIn1,0);
79327
+ testcase( flags3!=pIn3->flags ); /* Possible if pIn1==pIn3 */
7929479328
flags3 = pIn3->flags;
7929579329
}
7929679330
if( (flags3 & (MEM_Int|MEM_Real|MEM_Str))==MEM_Str ){
7929779331
applyNumericAffinity(pIn3,0);
7929879332
}
79333
+ }
79334
+ /* Handle the common case of integer comparison here, as an
79335
+ ** optimization, to avoid a call to sqlite3MemCompare() */
79336
+ if( (pIn1->flags & pIn3->flags & MEM_Int)!=0 ){
79337
+ if( pIn3->u.i > pIn1->u.i ){ res = +1; goto compare_op; }
79338
+ if( pIn3->u.i < pIn1->u.i ){ res = -1; goto compare_op; }
79339
+ res = 0;
79340
+ goto compare_op;
7929979341
}
7930079342
}else if( affinity==SQLITE_AFF_TEXT ){
7930179343
if( (flags1 & MEM_Str)==0 && (flags1 & (MEM_Int|MEM_Real))!=0 ){
7930279344
testcase( pIn1->flags & MEM_Int );
7930379345
testcase( pIn1->flags & MEM_Real );
7930479346
sqlite3VdbeMemStringify(pIn1, encoding, 1);
7930579347
testcase( (flags1&MEM_Dyn) != (pIn1->flags&MEM_Dyn) );
7930679348
flags1 = (pIn1->flags & ~MEM_TypeMask) | (flags1 & MEM_TypeMask);
79349
+ testcase( flags3!=pIn3->flags ); /* Possible if pIn1==pIn3 */
7930779350
flags3 = pIn3->flags;
7930879351
}
7930979352
if( (flags3 & MEM_Str)==0 && (flags3 & (MEM_Int|MEM_Real))!=0 ){
7931079353
testcase( pIn3->flags & MEM_Int );
7931179354
testcase( pIn3->flags & MEM_Real );
@@ -79313,20 +79356,13 @@
7931379356
testcase( (flags3&MEM_Dyn) != (pIn3->flags&MEM_Dyn) );
7931479357
flags3 = (pIn3->flags & ~MEM_TypeMask) | (flags3 & MEM_TypeMask);
7931579358
}
7931679359
}
7931779360
assert( pOp->p4type==P4_COLLSEQ || pOp->p4.pColl==0 );
79318
- if( flags1 & MEM_Zero ){
79319
- sqlite3VdbeMemExpandBlob(pIn1);
79320
- flags1 &= ~MEM_Zero;
79321
- }
79322
- if( flags3 & MEM_Zero ){
79323
- sqlite3VdbeMemExpandBlob(pIn3);
79324
- flags3 &= ~MEM_Zero;
79325
- }
7932679361
res = sqlite3MemCompare(pIn3, pIn1, pOp->p4.pColl);
7932779362
}
79363
+compare_op:
7932879364
switch( pOp->opcode ){
7932979365
case OP_Eq: res2 = res==0; break;
7933079366
case OP_Ne: res2 = res; break;
7933179367
case OP_Lt: res2 = res<0; break;
7933279368
case OP_Le: res2 = res<=0; break;
@@ -81128,11 +81164,11 @@
8112881164
8112981165
r.aMem = &aMem[pOp->p3];
8113081166
#ifdef SQLITE_DEBUG
8113181167
{ int i; for(i=0; i<r.nField; i++) assert( memIsValid(&r.aMem[i]) ); }
8113281168
#endif
81133
- ExpandBlob(r.aMem);
81169
+ (void)ExpandBlob(r.aMem);
8113481170
r.eqSeen = 0;
8113581171
rc = sqlite3BtreeMovetoUnpacked(pC->uc.pCursor, &r, 0, 0, &res);
8113681172
if( rc!=SQLITE_OK ){
8113781173
goto abort_due_to_error;
8113881174
}
@@ -81271,11 +81307,11 @@
8127181307
r.pKeyInfo = pC->pKeyInfo;
8127281308
r.nField = (u16)pOp->p4.i;
8127381309
r.aMem = pIn3;
8127481310
for(ii=0; ii<r.nField; ii++){
8127581311
assert( memIsValid(&r.aMem[ii]) );
81276
- ExpandBlob(&r.aMem[ii]);
81312
+ (void)ExpandBlob(&r.aMem[ii]);
8127781313
#ifdef SQLITE_DEBUG
8127881314
if( ii ) REGISTER_TRACE(pOp->p3+ii, &r.aMem[ii]);
8127981315
#endif
8128081316
}
8128181317
pIdxKey = &r;
@@ -81283,11 +81319,11 @@
8128381319
pIdxKey = sqlite3VdbeAllocUnpackedRecord(
8128481320
pC->pKeyInfo, aTempRec, sizeof(aTempRec), &pFree
8128581321
);
8128681322
if( pIdxKey==0 ) goto no_mem;
8128781323
assert( pIn3->flags & MEM_Blob );
81288
- ExpandBlob(pIn3);
81324
+ (void)ExpandBlob(pIn3);
8128981325
sqlite3VdbeRecordUnpack(pC->pKeyInfo, pIn3->n, pIn3->z, pIdxKey);
8129081326
}
8129181327
pIdxKey->default_rc = 0;
8129281328
takeJump = 0;
8129381329
if( pOp->opcode==OP_NoConflict ){
@@ -91894,28 +91930,28 @@
9189491930
9189591931
assert( i==nExpr || colUsed!=(MASKBIT(nExpr)-1) );
9189691932
if( colUsed==(MASKBIT(nExpr)-1) ){
9189791933
/* If we reach this point, that means the index pIdx is usable */
9189891934
int iAddr = sqlite3CodeOnce(pParse); VdbeCoverage(v);
91899
- #ifndef SQLITE_OMIT_EXPLAIN
91935
+#ifndef SQLITE_OMIT_EXPLAIN
9190091936
sqlite3VdbeAddOp4(v, OP_Explain, 0, 0, 0,
9190191937
sqlite3MPrintf(db, "USING INDEX %s FOR IN-OPERATOR",pIdx->zName),
9190291938
P4_DYNAMIC);
91903
- #endif
91939
+#endif
9190491940
sqlite3VdbeAddOp3(v, OP_OpenRead, iTab, pIdx->tnum, iDb);
9190591941
sqlite3VdbeSetP4KeyInfo(pParse, pIdx);
9190691942
VdbeComment((v, "%s", pIdx->zName));
9190791943
assert( IN_INDEX_INDEX_DESC == IN_INDEX_INDEX_ASC+1 );
9190891944
eType = IN_INDEX_INDEX_ASC + pIdx->aSortOrder[0];
9190991945
9191091946
if( prRhsHasNull ){
91911
- *prRhsHasNull = ++pParse->nMem;
91912
- #ifdef SQLITE_ENABLE_COLUMN_USED_MASK
91947
+#ifdef SQLITE_ENABLE_COLUMN_USED_MASK
9191391948
i64 mask = (1<<nExpr)-1;
9191491949
sqlite3VdbeAddOp4Dup8(v, OP_ColumnsUsed,
9191591950
iTab, 0, 0, (u8*)&mask, P4_INT64);
91916
- #endif
91951
+#endif
91952
+ *prRhsHasNull = ++pParse->nMem;
9191791953
if( nExpr==1 ){
9191891954
sqlite3SetHasNullFlag(v, iTab, *prRhsHasNull);
9191991955
}
9192091956
}
9192191957
sqlite3VdbeJumpHere(v, iAddr);
@@ -195577,11 +195613,11 @@
195577195613
int nArg, /* Number of args */
195578195614
sqlite3_value **apUnused /* Function arguments */
195579195615
){
195580195616
assert( nArg==0 );
195581195617
UNUSED_PARAM2(nArg, apUnused);
195582
- sqlite3_result_text(pCtx, "fts5: 2016-08-08 14:21:10 c3cd543f3380475509d7bab9bb6c7858a8402457", -1, SQLITE_TRANSIENT);
195618
+ sqlite3_result_text(pCtx, "fts5: 2016-09-10 14:43:07 8a9d128119fde36c175735be56876d30e5c8586f", -1, SQLITE_TRANSIENT);
195583195619
}
195584195620
195585195621
static int fts5Init(sqlite3 *db){
195586195622
static const sqlite3_module fts5Mod = {
195587195623
/* iVersion */ 2,
195588195624
--- src/sqlite3.c
+++ src/sqlite3.c
@@ -380,11 +380,11 @@
380 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
381 ** [sqlite_version()] and [sqlite_source_id()].
382 */
383 #define SQLITE_VERSION "3.15.0"
384 #define SQLITE_VERSION_NUMBER 3015000
385 #define SQLITE_SOURCE_ID "2016-09-07 19:54:24 ddb5f0558c44569913d22781ab78f3e9b58d7aea"
386
387 /*
388 ** CAPI3REF: Run-Time Library Version Numbers
389 ** KEYWORDS: sqlite3_version, sqlite3_sourceid
390 **
@@ -12093,11 +12093,13 @@
12093 SQLITE_PRIVATE int sqlite3BtreeIsInTrans(Btree*);
12094 SQLITE_PRIVATE int sqlite3BtreeIsInReadTrans(Btree*);
12095 SQLITE_PRIVATE int sqlite3BtreeIsInBackup(Btree*);
12096 SQLITE_PRIVATE void *sqlite3BtreeSchema(Btree *, int, void(*)(void *));
12097 SQLITE_PRIVATE int sqlite3BtreeSchemaLocked(Btree *pBtree);
 
12098 SQLITE_PRIVATE int sqlite3BtreeLockTable(Btree *pBtree, int iTab, u8 isWriteLock);
 
12099 SQLITE_PRIVATE int sqlite3BtreeSavepoint(Btree *, int, int);
12100
12101 SQLITE_PRIVATE const char *sqlite3BtreeGetFilename(Btree *);
12102 SQLITE_PRIVATE const char *sqlite3BtreeGetJournalname(Btree *);
12103 SQLITE_PRIVATE int sqlite3BtreeCopyFile(Btree *, Btree *);
@@ -12296,12 +12298,14 @@
12296 SQLITE_PRIVATE int sqlite3BtreeData(BtCursor*, u32 offset, u32 amt, void*);
12297
12298 SQLITE_PRIVATE char *sqlite3BtreeIntegrityCheck(Btree*, int *aRoot, int nRoot, int, int*);
12299 SQLITE_PRIVATE struct Pager *sqlite3BtreePager(Btree*);
12300
 
12301 SQLITE_PRIVATE int sqlite3BtreePutData(BtCursor*, u32 offset, u32 amt, void*);
12302 SQLITE_PRIVATE void sqlite3BtreeIncrblobCursor(BtCursor *);
 
12303 SQLITE_PRIVATE void sqlite3BtreeClearCursor(BtCursor *);
12304 SQLITE_PRIVATE int sqlite3BtreeSetVersion(Btree *pBt, int iVersion);
12305 SQLITE_PRIVATE int sqlite3BtreeCursorHasHint(BtCursor*, unsigned int mask);
12306 SQLITE_PRIVATE int sqlite3BtreeIsReadonly(Btree *pBt);
12307 SQLITE_PRIVATE int sqlite3HeaderSizeBtree(void);
@@ -68945,11 +68949,11 @@
68945 */
68946 SQLITE_PRIVATE int sqlite3VdbeMemMakeWriteable(Mem *pMem){
68947 int f;
68948 assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) );
68949 assert( (pMem->flags&MEM_RowSet)==0 );
68950 ExpandBlob(pMem);
68951 f = pMem->flags;
68952 if( (f&(MEM_Str|MEM_Blob)) && (pMem->szMalloc==0 || pMem->z!=pMem->zMalloc) ){
68953 if( sqlite3VdbeMemGrow(pMem, pMem->n + 2, 1) ){
68954 return SQLITE_NOMEM_BKPT;
68955 }
@@ -69328,11 +69332,11 @@
69328 MemSetTypeFlag(pMem, MEM_Real);
69329 sqlite3VdbeIntegerAffinity(pMem);
69330 }
69331 }
69332 assert( (pMem->flags & (MEM_Int|MEM_Real|MEM_Null))!=0 );
69333 pMem->flags &= ~(MEM_Str|MEM_Blob);
69334 return SQLITE_OK;
69335 }
69336
69337 /*
69338 ** Cast the datatype of the value in pMem according to the affinity
@@ -69771,13 +69775,10 @@
69771 assert( (enc&3)==(enc&~SQLITE_UTF16_ALIGNED) );
69772 assert( (pVal->flags & MEM_RowSet)==0 );
69773 assert( (pVal->flags & (MEM_Null))==0 );
69774 if( pVal->flags & (MEM_Blob|MEM_Str) ){
69775 pVal->flags |= MEM_Str;
69776 if( pVal->flags & MEM_Zero ){
69777 sqlite3VdbeMemExpandBlob(pVal);
69778 }
69779 if( pVal->enc != (enc & ~SQLITE_UTF16_ALIGNED) ){
69780 sqlite3VdbeChangeEncoding(pVal, enc & ~SQLITE_UTF16_ALIGNED);
69781 }
69782 if( (enc & SQLITE_UTF16_ALIGNED)!=0 && 1==(1&SQLITE_PTR_TO_INT(pVal->z)) ){
69783 assert( (pVal->flags & (MEM_Ephem|MEM_Static))!=0 );
@@ -74190,20 +74191,52 @@
74190 sqlite3VdbeMemRelease(&c1);
74191 sqlite3VdbeMemRelease(&c2);
74192 return rc;
74193 }
74194 }
 
 
 
 
 
 
 
 
 
 
74195
74196 /*
74197 ** Compare two blobs. Return negative, zero, or positive if the first
74198 ** is less than, equal to, or greater than the second, respectively.
74199 ** If one blob is a prefix of the other, then the shorter is the lessor.
74200 */
74201 static SQLITE_NOINLINE int sqlite3BlobCompare(const Mem *pB1, const Mem *pB2){
74202 int c = memcmp(pB1->z, pB2->z, pB1->n>pB2->n ? pB2->n : pB1->n);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
74203 if( c ) return c;
74204 return pB1->n - pB2->n;
74205 }
74206
74207 /*
74208 ** Do a comparison between a 64-bit signed integer and a 64-bit floating-point
74209 ** number. Return negative, zero, or positive if the first (i64) is less than,
@@ -79289,23 +79322,33 @@
79289 affinity = pOp->p5 & SQLITE_AFF_MASK;
79290 if( affinity>=SQLITE_AFF_NUMERIC ){
79291 if( (flags1 | flags3)&MEM_Str ){
79292 if( (flags1 & (MEM_Int|MEM_Real|MEM_Str))==MEM_Str ){
79293 applyNumericAffinity(pIn1,0);
 
79294 flags3 = pIn3->flags;
79295 }
79296 if( (flags3 & (MEM_Int|MEM_Real|MEM_Str))==MEM_Str ){
79297 applyNumericAffinity(pIn3,0);
79298 }
 
 
 
 
 
 
 
 
79299 }
79300 }else if( affinity==SQLITE_AFF_TEXT ){
79301 if( (flags1 & MEM_Str)==0 && (flags1 & (MEM_Int|MEM_Real))!=0 ){
79302 testcase( pIn1->flags & MEM_Int );
79303 testcase( pIn1->flags & MEM_Real );
79304 sqlite3VdbeMemStringify(pIn1, encoding, 1);
79305 testcase( (flags1&MEM_Dyn) != (pIn1->flags&MEM_Dyn) );
79306 flags1 = (pIn1->flags & ~MEM_TypeMask) | (flags1 & MEM_TypeMask);
 
79307 flags3 = pIn3->flags;
79308 }
79309 if( (flags3 & MEM_Str)==0 && (flags3 & (MEM_Int|MEM_Real))!=0 ){
79310 testcase( pIn3->flags & MEM_Int );
79311 testcase( pIn3->flags & MEM_Real );
@@ -79313,20 +79356,13 @@
79313 testcase( (flags3&MEM_Dyn) != (pIn3->flags&MEM_Dyn) );
79314 flags3 = (pIn3->flags & ~MEM_TypeMask) | (flags3 & MEM_TypeMask);
79315 }
79316 }
79317 assert( pOp->p4type==P4_COLLSEQ || pOp->p4.pColl==0 );
79318 if( flags1 & MEM_Zero ){
79319 sqlite3VdbeMemExpandBlob(pIn1);
79320 flags1 &= ~MEM_Zero;
79321 }
79322 if( flags3 & MEM_Zero ){
79323 sqlite3VdbeMemExpandBlob(pIn3);
79324 flags3 &= ~MEM_Zero;
79325 }
79326 res = sqlite3MemCompare(pIn3, pIn1, pOp->p4.pColl);
79327 }
 
79328 switch( pOp->opcode ){
79329 case OP_Eq: res2 = res==0; break;
79330 case OP_Ne: res2 = res; break;
79331 case OP_Lt: res2 = res<0; break;
79332 case OP_Le: res2 = res<=0; break;
@@ -81128,11 +81164,11 @@
81128
81129 r.aMem = &aMem[pOp->p3];
81130 #ifdef SQLITE_DEBUG
81131 { int i; for(i=0; i<r.nField; i++) assert( memIsValid(&r.aMem[i]) ); }
81132 #endif
81133 ExpandBlob(r.aMem);
81134 r.eqSeen = 0;
81135 rc = sqlite3BtreeMovetoUnpacked(pC->uc.pCursor, &r, 0, 0, &res);
81136 if( rc!=SQLITE_OK ){
81137 goto abort_due_to_error;
81138 }
@@ -81271,11 +81307,11 @@
81271 r.pKeyInfo = pC->pKeyInfo;
81272 r.nField = (u16)pOp->p4.i;
81273 r.aMem = pIn3;
81274 for(ii=0; ii<r.nField; ii++){
81275 assert( memIsValid(&r.aMem[ii]) );
81276 ExpandBlob(&r.aMem[ii]);
81277 #ifdef SQLITE_DEBUG
81278 if( ii ) REGISTER_TRACE(pOp->p3+ii, &r.aMem[ii]);
81279 #endif
81280 }
81281 pIdxKey = &r;
@@ -81283,11 +81319,11 @@
81283 pIdxKey = sqlite3VdbeAllocUnpackedRecord(
81284 pC->pKeyInfo, aTempRec, sizeof(aTempRec), &pFree
81285 );
81286 if( pIdxKey==0 ) goto no_mem;
81287 assert( pIn3->flags & MEM_Blob );
81288 ExpandBlob(pIn3);
81289 sqlite3VdbeRecordUnpack(pC->pKeyInfo, pIn3->n, pIn3->z, pIdxKey);
81290 }
81291 pIdxKey->default_rc = 0;
81292 takeJump = 0;
81293 if( pOp->opcode==OP_NoConflict ){
@@ -91894,28 +91930,28 @@
91894
91895 assert( i==nExpr || colUsed!=(MASKBIT(nExpr)-1) );
91896 if( colUsed==(MASKBIT(nExpr)-1) ){
91897 /* If we reach this point, that means the index pIdx is usable */
91898 int iAddr = sqlite3CodeOnce(pParse); VdbeCoverage(v);
91899 #ifndef SQLITE_OMIT_EXPLAIN
91900 sqlite3VdbeAddOp4(v, OP_Explain, 0, 0, 0,
91901 sqlite3MPrintf(db, "USING INDEX %s FOR IN-OPERATOR",pIdx->zName),
91902 P4_DYNAMIC);
91903 #endif
91904 sqlite3VdbeAddOp3(v, OP_OpenRead, iTab, pIdx->tnum, iDb);
91905 sqlite3VdbeSetP4KeyInfo(pParse, pIdx);
91906 VdbeComment((v, "%s", pIdx->zName));
91907 assert( IN_INDEX_INDEX_DESC == IN_INDEX_INDEX_ASC+1 );
91908 eType = IN_INDEX_INDEX_ASC + pIdx->aSortOrder[0];
91909
91910 if( prRhsHasNull ){
91911 *prRhsHasNull = ++pParse->nMem;
91912 #ifdef SQLITE_ENABLE_COLUMN_USED_MASK
91913 i64 mask = (1<<nExpr)-1;
91914 sqlite3VdbeAddOp4Dup8(v, OP_ColumnsUsed,
91915 iTab, 0, 0, (u8*)&mask, P4_INT64);
91916 #endif
 
91917 if( nExpr==1 ){
91918 sqlite3SetHasNullFlag(v, iTab, *prRhsHasNull);
91919 }
91920 }
91921 sqlite3VdbeJumpHere(v, iAddr);
@@ -195577,11 +195613,11 @@
195577 int nArg, /* Number of args */
195578 sqlite3_value **apUnused /* Function arguments */
195579 ){
195580 assert( nArg==0 );
195581 UNUSED_PARAM2(nArg, apUnused);
195582 sqlite3_result_text(pCtx, "fts5: 2016-08-08 14:21:10 c3cd543f3380475509d7bab9bb6c7858a8402457", -1, SQLITE_TRANSIENT);
195583 }
195584
195585 static int fts5Init(sqlite3 *db){
195586 static const sqlite3_module fts5Mod = {
195587 /* iVersion */ 2,
195588
--- src/sqlite3.c
+++ src/sqlite3.c
@@ -380,11 +380,11 @@
380 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
381 ** [sqlite_version()] and [sqlite_source_id()].
382 */
383 #define SQLITE_VERSION "3.15.0"
384 #define SQLITE_VERSION_NUMBER 3015000
385 #define SQLITE_SOURCE_ID "2016-09-10 19:51:40 711c59171b22df04224183a713e6c36e0bb3bba8"
386
387 /*
388 ** CAPI3REF: Run-Time Library Version Numbers
389 ** KEYWORDS: sqlite3_version, sqlite3_sourceid
390 **
@@ -12093,11 +12093,13 @@
12093 SQLITE_PRIVATE int sqlite3BtreeIsInTrans(Btree*);
12094 SQLITE_PRIVATE int sqlite3BtreeIsInReadTrans(Btree*);
12095 SQLITE_PRIVATE int sqlite3BtreeIsInBackup(Btree*);
12096 SQLITE_PRIVATE void *sqlite3BtreeSchema(Btree *, int, void(*)(void *));
12097 SQLITE_PRIVATE int sqlite3BtreeSchemaLocked(Btree *pBtree);
12098 #ifndef SQLITE_OMIT_SHARED_CACHE
12099 SQLITE_PRIVATE int sqlite3BtreeLockTable(Btree *pBtree, int iTab, u8 isWriteLock);
12100 #endif
12101 SQLITE_PRIVATE int sqlite3BtreeSavepoint(Btree *, int, int);
12102
12103 SQLITE_PRIVATE const char *sqlite3BtreeGetFilename(Btree *);
12104 SQLITE_PRIVATE const char *sqlite3BtreeGetJournalname(Btree *);
12105 SQLITE_PRIVATE int sqlite3BtreeCopyFile(Btree *, Btree *);
@@ -12296,12 +12298,14 @@
12298 SQLITE_PRIVATE int sqlite3BtreeData(BtCursor*, u32 offset, u32 amt, void*);
12299
12300 SQLITE_PRIVATE char *sqlite3BtreeIntegrityCheck(Btree*, int *aRoot, int nRoot, int, int*);
12301 SQLITE_PRIVATE struct Pager *sqlite3BtreePager(Btree*);
12302
12303 #ifndef SQLITE_OMIT_INCRBLOB
12304 SQLITE_PRIVATE int sqlite3BtreePutData(BtCursor*, u32 offset, u32 amt, void*);
12305 SQLITE_PRIVATE void sqlite3BtreeIncrblobCursor(BtCursor *);
12306 #endif
12307 SQLITE_PRIVATE void sqlite3BtreeClearCursor(BtCursor *);
12308 SQLITE_PRIVATE int sqlite3BtreeSetVersion(Btree *pBt, int iVersion);
12309 SQLITE_PRIVATE int sqlite3BtreeCursorHasHint(BtCursor*, unsigned int mask);
12310 SQLITE_PRIVATE int sqlite3BtreeIsReadonly(Btree *pBt);
12311 SQLITE_PRIVATE int sqlite3HeaderSizeBtree(void);
@@ -68945,11 +68949,11 @@
68949 */
68950 SQLITE_PRIVATE int sqlite3VdbeMemMakeWriteable(Mem *pMem){
68951 int f;
68952 assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) );
68953 assert( (pMem->flags&MEM_RowSet)==0 );
68954 (void)ExpandBlob(pMem);
68955 f = pMem->flags;
68956 if( (f&(MEM_Str|MEM_Blob)) && (pMem->szMalloc==0 || pMem->z!=pMem->zMalloc) ){
68957 if( sqlite3VdbeMemGrow(pMem, pMem->n + 2, 1) ){
68958 return SQLITE_NOMEM_BKPT;
68959 }
@@ -69328,11 +69332,11 @@
69332 MemSetTypeFlag(pMem, MEM_Real);
69333 sqlite3VdbeIntegerAffinity(pMem);
69334 }
69335 }
69336 assert( (pMem->flags & (MEM_Int|MEM_Real|MEM_Null))!=0 );
69337 pMem->flags &= ~(MEM_Str|MEM_Blob|MEM_Zero);
69338 return SQLITE_OK;
69339 }
69340
69341 /*
69342 ** Cast the datatype of the value in pMem according to the affinity
@@ -69771,13 +69775,10 @@
69775 assert( (enc&3)==(enc&~SQLITE_UTF16_ALIGNED) );
69776 assert( (pVal->flags & MEM_RowSet)==0 );
69777 assert( (pVal->flags & (MEM_Null))==0 );
69778 if( pVal->flags & (MEM_Blob|MEM_Str) ){
69779 pVal->flags |= MEM_Str;
 
 
 
69780 if( pVal->enc != (enc & ~SQLITE_UTF16_ALIGNED) ){
69781 sqlite3VdbeChangeEncoding(pVal, enc & ~SQLITE_UTF16_ALIGNED);
69782 }
69783 if( (enc & SQLITE_UTF16_ALIGNED)!=0 && 1==(1&SQLITE_PTR_TO_INT(pVal->z)) ){
69784 assert( (pVal->flags & (MEM_Ephem|MEM_Static))!=0 );
@@ -74190,20 +74191,52 @@
74191 sqlite3VdbeMemRelease(&c1);
74192 sqlite3VdbeMemRelease(&c2);
74193 return rc;
74194 }
74195 }
74196
74197 /*
74198 ** The input pBlob is guaranteed to be a Blob that is not marked
74199 ** with MEM_Zero. Return true if it could be a zero-blob.
74200 */
74201 static int isZeroBlob(const Mem *pBlob){
74202 int i;
74203 for(i=0; i<pBlob->n && pBlob->z[i]==0; i++){}
74204 return i==pBlob->n;
74205 }
74206
74207 /*
74208 ** Compare two blobs. Return negative, zero, or positive if the first
74209 ** is less than, equal to, or greater than the second, respectively.
74210 ** If one blob is a prefix of the other, then the shorter is the lessor.
74211 */
74212 static SQLITE_NOINLINE int sqlite3BlobCompare(const Mem *pB1, const Mem *pB2){
74213 int c;
74214 int n1 = pB1->n;
74215 int n2 = pB2->n;
74216
74217 /* It is possible to have a Blob value that has some non-zero content
74218 ** followed by zero content. But that only comes up for Blobs formed
74219 ** by the OP_MakeRecord opcode, and such Blobs never get passed into
74220 ** sqlite3MemCompare(). */
74221 assert( (pB1->flags & MEM_Zero)==0 || n1==0 );
74222 assert( (pB2->flags & MEM_Zero)==0 || n2==0 );
74223
74224 if( (pB1->flags|pB2->flags) & MEM_Zero ){
74225 if( pB1->flags & pB2->flags & MEM_Zero ){
74226 return pB1->u.nZero - pB2->u.nZero;
74227 }else if( pB1->flags & MEM_Zero ){
74228 if( !isZeroBlob(pB2) ) return -1;
74229 return pB1->u.nZero - n2;
74230 }else{
74231 if( !isZeroBlob(pB1) ) return +1;
74232 return n1 - pB2->u.nZero;
74233 }
74234 }
74235 c = memcmp(pB1->z, pB2->z, n1>n2 ? n2 : n1);
74236 if( c ) return c;
74237 return n1 - n2;
74238 }
74239
74240 /*
74241 ** Do a comparison between a 64-bit signed integer and a 64-bit floating-point
74242 ** number. Return negative, zero, or positive if the first (i64) is less than,
@@ -79289,23 +79322,33 @@
79322 affinity = pOp->p5 & SQLITE_AFF_MASK;
79323 if( affinity>=SQLITE_AFF_NUMERIC ){
79324 if( (flags1 | flags3)&MEM_Str ){
79325 if( (flags1 & (MEM_Int|MEM_Real|MEM_Str))==MEM_Str ){
79326 applyNumericAffinity(pIn1,0);
79327 testcase( flags3!=pIn3->flags ); /* Possible if pIn1==pIn3 */
79328 flags3 = pIn3->flags;
79329 }
79330 if( (flags3 & (MEM_Int|MEM_Real|MEM_Str))==MEM_Str ){
79331 applyNumericAffinity(pIn3,0);
79332 }
79333 }
79334 /* Handle the common case of integer comparison here, as an
79335 ** optimization, to avoid a call to sqlite3MemCompare() */
79336 if( (pIn1->flags & pIn3->flags & MEM_Int)!=0 ){
79337 if( pIn3->u.i > pIn1->u.i ){ res = +1; goto compare_op; }
79338 if( pIn3->u.i < pIn1->u.i ){ res = -1; goto compare_op; }
79339 res = 0;
79340 goto compare_op;
79341 }
79342 }else if( affinity==SQLITE_AFF_TEXT ){
79343 if( (flags1 & MEM_Str)==0 && (flags1 & (MEM_Int|MEM_Real))!=0 ){
79344 testcase( pIn1->flags & MEM_Int );
79345 testcase( pIn1->flags & MEM_Real );
79346 sqlite3VdbeMemStringify(pIn1, encoding, 1);
79347 testcase( (flags1&MEM_Dyn) != (pIn1->flags&MEM_Dyn) );
79348 flags1 = (pIn1->flags & ~MEM_TypeMask) | (flags1 & MEM_TypeMask);
79349 testcase( flags3!=pIn3->flags ); /* Possible if pIn1==pIn3 */
79350 flags3 = pIn3->flags;
79351 }
79352 if( (flags3 & MEM_Str)==0 && (flags3 & (MEM_Int|MEM_Real))!=0 ){
79353 testcase( pIn3->flags & MEM_Int );
79354 testcase( pIn3->flags & MEM_Real );
@@ -79313,20 +79356,13 @@
79356 testcase( (flags3&MEM_Dyn) != (pIn3->flags&MEM_Dyn) );
79357 flags3 = (pIn3->flags & ~MEM_TypeMask) | (flags3 & MEM_TypeMask);
79358 }
79359 }
79360 assert( pOp->p4type==P4_COLLSEQ || pOp->p4.pColl==0 );
 
 
 
 
 
 
 
 
79361 res = sqlite3MemCompare(pIn3, pIn1, pOp->p4.pColl);
79362 }
79363 compare_op:
79364 switch( pOp->opcode ){
79365 case OP_Eq: res2 = res==0; break;
79366 case OP_Ne: res2 = res; break;
79367 case OP_Lt: res2 = res<0; break;
79368 case OP_Le: res2 = res<=0; break;
@@ -81128,11 +81164,11 @@
81164
81165 r.aMem = &aMem[pOp->p3];
81166 #ifdef SQLITE_DEBUG
81167 { int i; for(i=0; i<r.nField; i++) assert( memIsValid(&r.aMem[i]) ); }
81168 #endif
81169 (void)ExpandBlob(r.aMem);
81170 r.eqSeen = 0;
81171 rc = sqlite3BtreeMovetoUnpacked(pC->uc.pCursor, &r, 0, 0, &res);
81172 if( rc!=SQLITE_OK ){
81173 goto abort_due_to_error;
81174 }
@@ -81271,11 +81307,11 @@
81307 r.pKeyInfo = pC->pKeyInfo;
81308 r.nField = (u16)pOp->p4.i;
81309 r.aMem = pIn3;
81310 for(ii=0; ii<r.nField; ii++){
81311 assert( memIsValid(&r.aMem[ii]) );
81312 (void)ExpandBlob(&r.aMem[ii]);
81313 #ifdef SQLITE_DEBUG
81314 if( ii ) REGISTER_TRACE(pOp->p3+ii, &r.aMem[ii]);
81315 #endif
81316 }
81317 pIdxKey = &r;
@@ -81283,11 +81319,11 @@
81319 pIdxKey = sqlite3VdbeAllocUnpackedRecord(
81320 pC->pKeyInfo, aTempRec, sizeof(aTempRec), &pFree
81321 );
81322 if( pIdxKey==0 ) goto no_mem;
81323 assert( pIn3->flags & MEM_Blob );
81324 (void)ExpandBlob(pIn3);
81325 sqlite3VdbeRecordUnpack(pC->pKeyInfo, pIn3->n, pIn3->z, pIdxKey);
81326 }
81327 pIdxKey->default_rc = 0;
81328 takeJump = 0;
81329 if( pOp->opcode==OP_NoConflict ){
@@ -91894,28 +91930,28 @@
91930
91931 assert( i==nExpr || colUsed!=(MASKBIT(nExpr)-1) );
91932 if( colUsed==(MASKBIT(nExpr)-1) ){
91933 /* If we reach this point, that means the index pIdx is usable */
91934 int iAddr = sqlite3CodeOnce(pParse); VdbeCoverage(v);
91935 #ifndef SQLITE_OMIT_EXPLAIN
91936 sqlite3VdbeAddOp4(v, OP_Explain, 0, 0, 0,
91937 sqlite3MPrintf(db, "USING INDEX %s FOR IN-OPERATOR",pIdx->zName),
91938 P4_DYNAMIC);
91939 #endif
91940 sqlite3VdbeAddOp3(v, OP_OpenRead, iTab, pIdx->tnum, iDb);
91941 sqlite3VdbeSetP4KeyInfo(pParse, pIdx);
91942 VdbeComment((v, "%s", pIdx->zName));
91943 assert( IN_INDEX_INDEX_DESC == IN_INDEX_INDEX_ASC+1 );
91944 eType = IN_INDEX_INDEX_ASC + pIdx->aSortOrder[0];
91945
91946 if( prRhsHasNull ){
91947 #ifdef SQLITE_ENABLE_COLUMN_USED_MASK
 
91948 i64 mask = (1<<nExpr)-1;
91949 sqlite3VdbeAddOp4Dup8(v, OP_ColumnsUsed,
91950 iTab, 0, 0, (u8*)&mask, P4_INT64);
91951 #endif
91952 *prRhsHasNull = ++pParse->nMem;
91953 if( nExpr==1 ){
91954 sqlite3SetHasNullFlag(v, iTab, *prRhsHasNull);
91955 }
91956 }
91957 sqlite3VdbeJumpHere(v, iAddr);
@@ -195577,11 +195613,11 @@
195613 int nArg, /* Number of args */
195614 sqlite3_value **apUnused /* Function arguments */
195615 ){
195616 assert( nArg==0 );
195617 UNUSED_PARAM2(nArg, apUnused);
195618 sqlite3_result_text(pCtx, "fts5: 2016-09-10 14:43:07 8a9d128119fde36c175735be56876d30e5c8586f", -1, SQLITE_TRANSIENT);
195619 }
195620
195621 static int fts5Init(sqlite3 *db){
195622 static const sqlite3_module fts5Mod = {
195623 /* iVersion */ 2,
195624
+1 -1
--- src/sqlite3.h
+++ src/sqlite3.h
@@ -120,11 +120,11 @@
120120
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
121121
** [sqlite_version()] and [sqlite_source_id()].
122122
*/
123123
#define SQLITE_VERSION "3.15.0"
124124
#define SQLITE_VERSION_NUMBER 3015000
125
-#define SQLITE_SOURCE_ID "2016-09-07 19:54:24 ddb5f0558c44569913d22781ab78f3e9b58d7aea"
125
+#define SQLITE_SOURCE_ID "2016-09-10 19:51:40 711c59171b22df04224183a713e6c36e0bb3bba8"
126126
127127
/*
128128
** CAPI3REF: Run-Time Library Version Numbers
129129
** KEYWORDS: sqlite3_version, sqlite3_sourceid
130130
**
131131
--- src/sqlite3.h
+++ src/sqlite3.h
@@ -120,11 +120,11 @@
120 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
121 ** [sqlite_version()] and [sqlite_source_id()].
122 */
123 #define SQLITE_VERSION "3.15.0"
124 #define SQLITE_VERSION_NUMBER 3015000
125 #define SQLITE_SOURCE_ID "2016-09-07 19:54:24 ddb5f0558c44569913d22781ab78f3e9b58d7aea"
126
127 /*
128 ** CAPI3REF: Run-Time Library Version Numbers
129 ** KEYWORDS: sqlite3_version, sqlite3_sourceid
130 **
131
--- src/sqlite3.h
+++ src/sqlite3.h
@@ -120,11 +120,11 @@
120 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
121 ** [sqlite_version()] and [sqlite_source_id()].
122 */
123 #define SQLITE_VERSION "3.15.0"
124 #define SQLITE_VERSION_NUMBER 3015000
125 #define SQLITE_SOURCE_ID "2016-09-10 19:51:40 711c59171b22df04224183a713e6c36e0bb3bba8"
126
127 /*
128 ** CAPI3REF: Run-Time Library Version Numbers
129 ** KEYWORDS: sqlite3_version, sqlite3_sourceid
130 **
131
--- win/Makefile.PellesCGMake
+++ win/Makefile.PellesCGMake
@@ -83,11 +83,11 @@
8383
8484
# define the SQLite files, which need special flags on compile
8585
SQLITESRC=sqlite3.c
8686
ORIGSQLITESRC=$(foreach sf,$(SQLITESRC),$(SRCDIR)$(sf))
8787
SQLITEOBJ=$(foreach sf,$(SQLITESRC),$(sf:.c=.obj))
88
-SQLITEDEFINES=-DNDEBUG=1 -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_OMIT_DEPRECATED -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_FTS5 -DSQLITE_WIN32_NO_ANSI
88
+SQLITEDEFINES=-DNDEBUG=1 -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_OMIT_DEPRECATED -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_FTS5 -DSQLITE_WIN32_NO_ANSI
8989
9090
# define the SQLite shell files, which need special flags on compile
9191
SQLITESHELLSRC=shell.c
9292
ORIGSQLITESHELLSRC=$(foreach sf,$(SQLITESHELLSRC),$(SRCDIR)$(sf))
9393
SQLITESHELLOBJ=$(foreach sf,$(SQLITESHELLSRC),$(sf:.c=.obj))
9494
--- win/Makefile.PellesCGMake
+++ win/Makefile.PellesCGMake
@@ -83,11 +83,11 @@
83
84 # define the SQLite files, which need special flags on compile
85 SQLITESRC=sqlite3.c
86 ORIGSQLITESRC=$(foreach sf,$(SQLITESRC),$(SRCDIR)$(sf))
87 SQLITEOBJ=$(foreach sf,$(SQLITESRC),$(sf:.c=.obj))
88 SQLITEDEFINES=-DNDEBUG=1 -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_OMIT_DEPRECATED -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_FTS5 -DSQLITE_WIN32_NO_ANSI
89
90 # define the SQLite shell files, which need special flags on compile
91 SQLITESHELLSRC=shell.c
92 ORIGSQLITESHELLSRC=$(foreach sf,$(SQLITESHELLSRC),$(SRCDIR)$(sf))
93 SQLITESHELLOBJ=$(foreach sf,$(SQLITESHELLSRC),$(sf:.c=.obj))
94
--- win/Makefile.PellesCGMake
+++ win/Makefile.PellesCGMake
@@ -83,11 +83,11 @@
83
84 # define the SQLite files, which need special flags on compile
85 SQLITESRC=sqlite3.c
86 ORIGSQLITESRC=$(foreach sf,$(SQLITESRC),$(SRCDIR)$(sf))
87 SQLITEOBJ=$(foreach sf,$(SQLITESRC),$(sf:.c=.obj))
88 SQLITEDEFINES=-DNDEBUG=1 -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_OMIT_DEPRECATED -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_FTS5 -DSQLITE_WIN32_NO_ANSI
89
90 # define the SQLite shell files, which need special flags on compile
91 SQLITESHELLSRC=shell.c
92 ORIGSQLITESHELLSRC=$(foreach sf,$(SQLITESHELLSRC),$(SRCDIR)$(sf))
93 SQLITESHELLOBJ=$(foreach sf,$(SQLITESHELLSRC),$(sf:.c=.obj))
94
--- win/Makefile.dmc
+++ win/Makefile.dmc
@@ -24,11 +24,11 @@
2424
CFLAGS = -o
2525
BCC = $(DMDIR)\bin\dmc $(CFLAGS)
2626
TCC = $(DMDIR)\bin\dmc $(CFLAGS) $(DMCDEF) $(SSL) $(INCL)
2727
LIBS = $(DMDIR)\extra\lib\ zlib wsock32 advapi32
2828
29
-SQLITE_OPTIONS = -DNDEBUG=1 -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_OMIT_DEPRECATED -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_FTS5
29
+SQLITE_OPTIONS = -DNDEBUG=1 -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_OMIT_DEPRECATED -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_FTS5
3030
3131
SHELL_OPTIONS = -Dmain=sqlite3_shell -DSQLITE_SHELL_IS_UTF8=1 -DSQLITE_OMIT_LOAD_EXTENSION=1 -DUSE_SYSTEM_SQLITE=$(USE_SYSTEM_SQLITE) -DSQLITE_SHELL_DBNAME_PROC=fossil_open -Daccess=file_access -Dsystem=fossil_system -Dgetenv=fossil_getenv -Dfopen=fossil_fopen
3232
3333
SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c builtin_.c bundle_.c cache_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c foci_.c fshell_.c fusefs_.c glob_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_artifact_.c json_branch_.c json_config_.c json_diff_.c json_dir_.c json_finfo_.c json_login_.c json_query_.c json_report_.c json_status_.c json_tag_.c json_timeline_.c json_user_.c json_wiki_.c leaf_.c loadctrl_.c login_.c lookslike_.c main_.c manifest_.c markdown_.c markdown_html_.c md5_.c merge_.c merge3_.c moderate_.c name_.c path_.c piechart_.c pivot_.c popen_.c pqueue_.c printf_.c publish_.c purge_.c rebuild_.c regexp_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c sitemap_.c skins_.c sqlcmd_.c stash_.c stat_.c statrep_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c unicode_.c unversioned_.c update_.c url_.c user_.c utf8_.c util_.c verify_.c vfile_.c wiki_.c wikiformat_.c winfile_.c winhttp_.c wysiwyg_.c xfer_.c xfersetup_.c zip_.c
3434
3535
--- win/Makefile.dmc
+++ win/Makefile.dmc
@@ -24,11 +24,11 @@
24 CFLAGS = -o
25 BCC = $(DMDIR)\bin\dmc $(CFLAGS)
26 TCC = $(DMDIR)\bin\dmc $(CFLAGS) $(DMCDEF) $(SSL) $(INCL)
27 LIBS = $(DMDIR)\extra\lib\ zlib wsock32 advapi32
28
29 SQLITE_OPTIONS = -DNDEBUG=1 -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_OMIT_DEPRECATED -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_FTS5
30
31 SHELL_OPTIONS = -Dmain=sqlite3_shell -DSQLITE_SHELL_IS_UTF8=1 -DSQLITE_OMIT_LOAD_EXTENSION=1 -DUSE_SYSTEM_SQLITE=$(USE_SYSTEM_SQLITE) -DSQLITE_SHELL_DBNAME_PROC=fossil_open -Daccess=file_access -Dsystem=fossil_system -Dgetenv=fossil_getenv -Dfopen=fossil_fopen
32
33 SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c builtin_.c bundle_.c cache_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c foci_.c fshell_.c fusefs_.c glob_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_artifact_.c json_branch_.c json_config_.c json_diff_.c json_dir_.c json_finfo_.c json_login_.c json_query_.c json_report_.c json_status_.c json_tag_.c json_timeline_.c json_user_.c json_wiki_.c leaf_.c loadctrl_.c login_.c lookslike_.c main_.c manifest_.c markdown_.c markdown_html_.c md5_.c merge_.c merge3_.c moderate_.c name_.c path_.c piechart_.c pivot_.c popen_.c pqueue_.c printf_.c publish_.c purge_.c rebuild_.c regexp_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c sitemap_.c skins_.c sqlcmd_.c stash_.c stat_.c statrep_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c unicode_.c unversioned_.c update_.c url_.c user_.c utf8_.c util_.c verify_.c vfile_.c wiki_.c wikiformat_.c winfile_.c winhttp_.c wysiwyg_.c xfer_.c xfersetup_.c zip_.c
34
35
--- win/Makefile.dmc
+++ win/Makefile.dmc
@@ -24,11 +24,11 @@
24 CFLAGS = -o
25 BCC = $(DMDIR)\bin\dmc $(CFLAGS)
26 TCC = $(DMDIR)\bin\dmc $(CFLAGS) $(DMCDEF) $(SSL) $(INCL)
27 LIBS = $(DMDIR)\extra\lib\ zlib wsock32 advapi32
28
29 SQLITE_OPTIONS = -DNDEBUG=1 -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_OMIT_DEPRECATED -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_FTS5
30
31 SHELL_OPTIONS = -Dmain=sqlite3_shell -DSQLITE_SHELL_IS_UTF8=1 -DSQLITE_OMIT_LOAD_EXTENSION=1 -DUSE_SYSTEM_SQLITE=$(USE_SYSTEM_SQLITE) -DSQLITE_SHELL_DBNAME_PROC=fossil_open -Daccess=file_access -Dsystem=fossil_system -Dgetenv=fossil_getenv -Dfopen=fossil_fopen
32
33 SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c builtin_.c bundle_.c cache_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c foci_.c fshell_.c fusefs_.c glob_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_artifact_.c json_branch_.c json_config_.c json_diff_.c json_dir_.c json_finfo_.c json_login_.c json_query_.c json_report_.c json_status_.c json_tag_.c json_timeline_.c json_user_.c json_wiki_.c leaf_.c loadctrl_.c login_.c lookslike_.c main_.c manifest_.c markdown_.c markdown_html_.c md5_.c merge_.c merge3_.c moderate_.c name_.c path_.c piechart_.c pivot_.c popen_.c pqueue_.c printf_.c publish_.c purge_.c rebuild_.c regexp_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c sitemap_.c skins_.c sqlcmd_.c stash_.c stat_.c statrep_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c unicode_.c unversioned_.c update_.c url_.c user_.c utf8_.c util_.c verify_.c vfile_.c wiki_.c wikiformat_.c winfile_.c winhttp_.c wysiwyg_.c xfer_.c xfersetup_.c zip_.c
34
35
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -2154,10 +2154,11 @@
21542154
21552155
MINGW_OPTIONS = -D_HAVE__MINGW_H
21562156
21572157
SQLITE_OPTIONS = -DNDEBUG=1 \
21582158
-DSQLITE_OMIT_LOAD_EXTENSION=1 \
2159
+ -DSQLITE_OMIT_SHARED_CACHE \
21592160
-DSQLITE_ENABLE_LOCKING_STYLE=0 \
21602161
-DSQLITE_LIKE_DOESNT_MATCH_BLOBS=1 \
21612162
-DSQLITE_THREADSAFE=0 \
21622163
-DSQLITE_DEFAULT_FILE_FORMAT=4 \
21632164
-DSQLITE_OMIT_DEPRECATED \
21642165
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -2154,10 +2154,11 @@
2154
2155 MINGW_OPTIONS = -D_HAVE__MINGW_H
2156
2157 SQLITE_OPTIONS = -DNDEBUG=1 \
2158 -DSQLITE_OMIT_LOAD_EXTENSION=1 \
 
2159 -DSQLITE_ENABLE_LOCKING_STYLE=0 \
2160 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS=1 \
2161 -DSQLITE_THREADSAFE=0 \
2162 -DSQLITE_DEFAULT_FILE_FORMAT=4 \
2163 -DSQLITE_OMIT_DEPRECATED \
2164
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -2154,10 +2154,11 @@
2154
2155 MINGW_OPTIONS = -D_HAVE__MINGW_H
2156
2157 SQLITE_OPTIONS = -DNDEBUG=1 \
2158 -DSQLITE_OMIT_LOAD_EXTENSION=1 \
2159 -DSQLITE_OMIT_SHARED_CACHE \
2160 -DSQLITE_ENABLE_LOCKING_STYLE=0 \
2161 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS=1 \
2162 -DSQLITE_THREADSAFE=0 \
2163 -DSQLITE_DEFAULT_FILE_FORMAT=4 \
2164 -DSQLITE_OMIT_DEPRECATED \
2165
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -313,10 +313,11 @@
313313
RCC = $(RCC) /DUSE_SEE=1
314314
!endif
315315
316316
SQLITE_OPTIONS = /DNDEBUG=1 \
317317
/DSQLITE_OMIT_LOAD_EXTENSION=1 \
318
+ /DSQLITE_OMIT_SHARED_CACHE \
318319
/DSQLITE_ENABLE_LOCKING_STYLE=0 \
319320
/DSQLITE_LIKE_DOESNT_MATCH_BLOBS=1 \
320321
/DSQLITE_THREADSAFE=0 \
321322
/DSQLITE_DEFAULT_FILE_FORMAT=4 \
322323
/DSQLITE_OMIT_DEPRECATED \
323324
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -313,10 +313,11 @@
313 RCC = $(RCC) /DUSE_SEE=1
314 !endif
315
316 SQLITE_OPTIONS = /DNDEBUG=1 \
317 /DSQLITE_OMIT_LOAD_EXTENSION=1 \
 
318 /DSQLITE_ENABLE_LOCKING_STYLE=0 \
319 /DSQLITE_LIKE_DOESNT_MATCH_BLOBS=1 \
320 /DSQLITE_THREADSAFE=0 \
321 /DSQLITE_DEFAULT_FILE_FORMAT=4 \
322 /DSQLITE_OMIT_DEPRECATED \
323
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -313,10 +313,11 @@
313 RCC = $(RCC) /DUSE_SEE=1
314 !endif
315
316 SQLITE_OPTIONS = /DNDEBUG=1 \
317 /DSQLITE_OMIT_LOAD_EXTENSION=1 \
318 /DSQLITE_OMIT_SHARED_CACHE \
319 /DSQLITE_ENABLE_LOCKING_STYLE=0 \
320 /DSQLITE_LIKE_DOESNT_MATCH_BLOBS=1 \
321 /DSQLITE_THREADSAFE=0 \
322 /DSQLITE_DEFAULT_FILE_FORMAT=4 \
323 /DSQLITE_OMIT_DEPRECATED \
324

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button