Fossil SCM

Update SQLite to the 3.7.2 release candidate.

drh 2010-08-23 19:33 trunk
Commit 6fd2ff1b09a8468e761c02af630eb2bca07687b5
2 files changed +39 -20 +3 -3
+39 -20
--- src/sqlite3.c
+++ src/sqlite3.c
@@ -1,8 +1,8 @@
11
/******************************************************************************
22
** This file is an amalgamation of many separate C source files from SQLite
3
-** version 3.7.1. By combining all the individual C code files into this
3
+** version 3.7.2. By combining all the individual C code files into this
44
** single large file, the entire code can be compiled as a one translation
55
** unit. This allows many compilers to do optimizations that would not be
66
** possible if the files were compiled separately. Performance improvements
77
** of 5% are more are commonly seen when SQLite is compiled as a single
88
** translation unit.
@@ -642,13 +642,13 @@
642642
**
643643
** See also: [sqlite3_libversion()],
644644
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
645645
** [sqlite_version()] and [sqlite_source_id()].
646646
*/
647
-#define SQLITE_VERSION "3.7.1"
648
-#define SQLITE_VERSION_NUMBER 3007001
649
-#define SQLITE_SOURCE_ID "2010-08-20 15:32:21 5523ecd32295c188e3bf5dbd57d92d2879461e32"
647
+#define SQLITE_VERSION "3.7.2"
648
+#define SQLITE_VERSION_NUMBER 3007002
649
+#define SQLITE_SOURCE_ID "2010-08-23 18:52:01 42537b60566f288167f1b5864a5435986838e3a3"
650650
651651
/*
652652
** CAPI3REF: Run-Time Library Version Numbers
653653
** KEYWORDS: sqlite3_version, sqlite3_sourceid
654654
**
@@ -35310,17 +35310,18 @@
3531035310
** that the page is either dirty or still matches the calculated page-hash.
3531135311
*/
3531235312
#define CHECK_PAGE(x) checkPage(x)
3531335313
static void checkPage(PgHdr *pPg){
3531435314
Pager *pPager = pPg->pPager;
35315
- assert( !pPg->pageHash || pPager->errCode
35316
- || (pPg->flags&PGHDR_DIRTY) || pPg->pageHash==pager_pagehash(pPg) );
35315
+ assert( pPager->eState!=PAGER_ERROR );
35316
+ assert( (pPg->flags&PGHDR_DIRTY) || pPg->pageHash==pager_pagehash(pPg) );
3531735317
}
3531835318
3531935319
#else
3532035320
#define pager_datahash(X,Y) 0
3532135321
#define pager_pagehash(X) 0
35322
+#define pager_set_pagehash(X)
3532235323
#define CHECK_PAGE(x)
3532335324
#endif /* SQLITE_CHECK_PAGES */
3532435325
3532535326
/*
3532635327
** When this is called the journal file for pager pPager must be open.
@@ -36086,15 +36087,23 @@
3608636087
sqlite3OsClose(pPager->jfd);
3608736088
if( !pPager->tempFile ){
3608836089
rc = sqlite3OsDelete(pPager->pVfs, pPager->zJournal, 0);
3608936090
}
3609036091
}
36092
+ }
3609136093
3609236094
#ifdef SQLITE_CHECK_PAGES
36093
- sqlite3PcacheIterateDirty(pPager->pPCache, pager_set_pagehash);
36095
+ sqlite3PcacheIterateDirty(pPager->pPCache, pager_set_pagehash);
36096
+ if( pPager->dbSize==0 && sqlite3PcacheRefCount(pPager->pPCache)>0 ){
36097
+ PgHdr *p = pager_lookup(pPager, 1);
36098
+ if( p ){
36099
+ p->pageHash = 0;
36100
+ sqlite3PagerUnref(p);
36101
+ }
36102
+ }
3609436103
#endif
36095
- }
36104
+
3609636105
sqlite3BitvecDestroy(pPager->pInJournal);
3609736106
pPager->pInJournal = 0;
3609836107
pPager->nRec = 0;
3609936108
sqlite3PcacheCleanAll(pPager->pPCache);
3610036109
sqlite3PcacheTruncate(pPager->pPCache, pPager->dbSize);
@@ -36437,13 +36446,12 @@
3643736446
** database corruption may ensue.
3643836447
*/
3643936448
assert( !pagerUseWal(pPager) );
3644036449
sqlite3PcacheMakeClean(pPg);
3644136450
}
36442
-#ifdef SQLITE_CHECK_PAGES
36443
- pPg->pageHash = pager_pagehash(pPg);
36444
-#endif
36451
+ pager_set_pagehash(pPg);
36452
+
3644536453
/* If this was page 1, then restore the value of Pager.dbFileVers.
3644636454
** Do this before any decoding. */
3644736455
if( pgno==1 ){
3644836456
memcpy(&pPager->dbFileVers, &((u8*)pData)[24],sizeof(pPager->dbFileVers));
3644936457
}
@@ -37078,10 +37086,18 @@
3707837086
PgHdr *p;
3707937087
for(p=pList; p; p=p->pDirty){
3708037088
sqlite3BackupUpdate(pPager->pBackup, p->pgno, (u8 *)p->pData);
3708137089
}
3708237090
}
37091
+
37092
+#ifdef SQLITE_CHECK_PAGES
37093
+ {
37094
+ PgHdr *p;
37095
+ for(p=pList; p; p=p->pDirty) pager_set_pagehash(p);
37096
+ }
37097
+#endif
37098
+
3708337099
return rc;
3708437100
}
3708537101
3708637102
/*
3708737103
** Begin a read transaction on the WAL.
@@ -38096,13 +38112,11 @@
3809638112
PAGER_INCR(sqlite3_pager_writedb_count);
3809738113
PAGER_INCR(pPager->nWrite);
3809838114
}else{
3809938115
PAGERTRACE(("NOSTORE %d page %d\n", PAGERID(pPager), pgno));
3810038116
}
38101
-#ifdef SQLITE_CHECK_PAGES
38102
- pList->pageHash = pager_pagehash(pList);
38103
-#endif
38117
+ pager_set_pagehash(pList);
3810438118
pList = pList->pDirty;
3810538119
}
3810638120
3810738121
return rc;
3810838122
}
@@ -39086,13 +39100,11 @@
3908639100
rc = readDbPage(pPg);
3908739101
if( rc!=SQLITE_OK ){
3908839102
goto pager_acquire_err;
3908939103
}
3909039104
}
39091
-#ifdef SQLITE_CHECK_PAGES
39092
- pPg->pageHash = pager_pagehash(pPg);
39093
-#endif
39105
+ pager_set_pagehash(pPg);
3909439106
}
3909539107
3909639108
return SQLITE_OK;
3909739109
3909839110
pager_acquire_err:
@@ -39586,13 +39598,11 @@
3958639598
Pager *pPager = pPg->pPager;
3958739599
if( (pPg->flags&PGHDR_DIRTY) && pPager->nSavepoint==0 ){
3958839600
PAGERTRACE(("DONT_WRITE page %d of %d\n", pPg->pgno, PAGERID(pPager)));
3958939601
IOTRACE(("CLEAN %p %d\n", pPager, pPg->pgno))
3959039602
pPg->flags |= PGHDR_DONT_WRITE;
39591
-#ifdef SQLITE_CHECK_PAGES
39592
- pPg->pageHash = pager_pagehash(pPg);
39593
-#endif
39603
+ pager_set_pagehash(pPg);
3959439604
}
3959539605
}
3959639606
3959739607
/*
3959839608
** This routine is called to increment the value of the database file
@@ -45250,15 +45260,20 @@
4525045260
#ifndef SQLITE_OMIT_AUTOVACUUM
4525145261
/*
4525245262
** Given a page number of a regular database page, return the page
4525345263
** number for the pointer-map page that contains the entry for the
4525445264
** input page number.
45265
+**
45266
+** Return 0 (not a valid page) for pgno==1 since there is
45267
+** no pointer map associated with page 1. The integrity_check logic
45268
+** requires that ptrmapPageno(*,1)!=1.
4525545269
*/
4525645270
static Pgno ptrmapPageno(BtShared *pBt, Pgno pgno){
4525745271
int nPagesPerMapPage;
4525845272
Pgno iPtrMap, ret;
4525945273
assert( sqlite3_mutex_held(pBt->mutex) );
45274
+ if( pgno<2 ) return 0;
4526045275
nPagesPerMapPage = (pBt->usableSize/5)+1;
4526145276
iPtrMap = (pgno-2)/nPagesPerMapPage;
4526245277
ret = (iPtrMap*nPagesPerMapPage) + 2;
4526345278
if( ret==PENDING_BYTE_PAGE(pBt) ){
4526445279
ret++;
@@ -49322,10 +49337,14 @@
4932249337
}
4932349338
if( k==0 ){
4932449339
if( !pPrevTrunk ){
4932549340
memcpy(&pPage1->aData[32], &pTrunk->aData[0], 4);
4932649341
}else{
49342
+ rc = sqlite3PagerWrite(pPrevTrunk->pDbPage);
49343
+ if( rc!=SQLITE_OK ){
49344
+ goto end_allocate_page;
49345
+ }
4932749346
memcpy(&pPrevTrunk->aData[0], &pTrunk->aData[0], 4);
4932849347
}
4932949348
}else{
4933049349
/* The trunk page is required by the caller but it contains
4933149350
** pointers to free-list leaves. The first leaf becomes a trunk
4933249351
--- src/sqlite3.c
+++ src/sqlite3.c
@@ -1,8 +1,8 @@
1 /******************************************************************************
2 ** This file is an amalgamation of many separate C source files from SQLite
3 ** version 3.7.1. By combining all the individual C code files into this
4 ** single large file, the entire code can be compiled as a one translation
5 ** unit. This allows many compilers to do optimizations that would not be
6 ** possible if the files were compiled separately. Performance improvements
7 ** of 5% are more are commonly seen when SQLite is compiled as a single
8 ** translation unit.
@@ -642,13 +642,13 @@
642 **
643 ** See also: [sqlite3_libversion()],
644 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
645 ** [sqlite_version()] and [sqlite_source_id()].
646 */
647 #define SQLITE_VERSION "3.7.1"
648 #define SQLITE_VERSION_NUMBER 3007001
649 #define SQLITE_SOURCE_ID "2010-08-20 15:32:21 5523ecd32295c188e3bf5dbd57d92d2879461e32"
650
651 /*
652 ** CAPI3REF: Run-Time Library Version Numbers
653 ** KEYWORDS: sqlite3_version, sqlite3_sourceid
654 **
@@ -35310,17 +35310,18 @@
35310 ** that the page is either dirty or still matches the calculated page-hash.
35311 */
35312 #define CHECK_PAGE(x) checkPage(x)
35313 static void checkPage(PgHdr *pPg){
35314 Pager *pPager = pPg->pPager;
35315 assert( !pPg->pageHash || pPager->errCode
35316 || (pPg->flags&PGHDR_DIRTY) || pPg->pageHash==pager_pagehash(pPg) );
35317 }
35318
35319 #else
35320 #define pager_datahash(X,Y) 0
35321 #define pager_pagehash(X) 0
 
35322 #define CHECK_PAGE(x)
35323 #endif /* SQLITE_CHECK_PAGES */
35324
35325 /*
35326 ** When this is called the journal file for pager pPager must be open.
@@ -36086,15 +36087,23 @@
36086 sqlite3OsClose(pPager->jfd);
36087 if( !pPager->tempFile ){
36088 rc = sqlite3OsDelete(pPager->pVfs, pPager->zJournal, 0);
36089 }
36090 }
 
36091
36092 #ifdef SQLITE_CHECK_PAGES
36093 sqlite3PcacheIterateDirty(pPager->pPCache, pager_set_pagehash);
 
 
 
 
 
 
 
36094 #endif
36095 }
36096 sqlite3BitvecDestroy(pPager->pInJournal);
36097 pPager->pInJournal = 0;
36098 pPager->nRec = 0;
36099 sqlite3PcacheCleanAll(pPager->pPCache);
36100 sqlite3PcacheTruncate(pPager->pPCache, pPager->dbSize);
@@ -36437,13 +36446,12 @@
36437 ** database corruption may ensue.
36438 */
36439 assert( !pagerUseWal(pPager) );
36440 sqlite3PcacheMakeClean(pPg);
36441 }
36442 #ifdef SQLITE_CHECK_PAGES
36443 pPg->pageHash = pager_pagehash(pPg);
36444 #endif
36445 /* If this was page 1, then restore the value of Pager.dbFileVers.
36446 ** Do this before any decoding. */
36447 if( pgno==1 ){
36448 memcpy(&pPager->dbFileVers, &((u8*)pData)[24],sizeof(pPager->dbFileVers));
36449 }
@@ -37078,10 +37086,18 @@
37078 PgHdr *p;
37079 for(p=pList; p; p=p->pDirty){
37080 sqlite3BackupUpdate(pPager->pBackup, p->pgno, (u8 *)p->pData);
37081 }
37082 }
 
 
 
 
 
 
 
 
37083 return rc;
37084 }
37085
37086 /*
37087 ** Begin a read transaction on the WAL.
@@ -38096,13 +38112,11 @@
38096 PAGER_INCR(sqlite3_pager_writedb_count);
38097 PAGER_INCR(pPager->nWrite);
38098 }else{
38099 PAGERTRACE(("NOSTORE %d page %d\n", PAGERID(pPager), pgno));
38100 }
38101 #ifdef SQLITE_CHECK_PAGES
38102 pList->pageHash = pager_pagehash(pList);
38103 #endif
38104 pList = pList->pDirty;
38105 }
38106
38107 return rc;
38108 }
@@ -39086,13 +39100,11 @@
39086 rc = readDbPage(pPg);
39087 if( rc!=SQLITE_OK ){
39088 goto pager_acquire_err;
39089 }
39090 }
39091 #ifdef SQLITE_CHECK_PAGES
39092 pPg->pageHash = pager_pagehash(pPg);
39093 #endif
39094 }
39095
39096 return SQLITE_OK;
39097
39098 pager_acquire_err:
@@ -39586,13 +39598,11 @@
39586 Pager *pPager = pPg->pPager;
39587 if( (pPg->flags&PGHDR_DIRTY) && pPager->nSavepoint==0 ){
39588 PAGERTRACE(("DONT_WRITE page %d of %d\n", pPg->pgno, PAGERID(pPager)));
39589 IOTRACE(("CLEAN %p %d\n", pPager, pPg->pgno))
39590 pPg->flags |= PGHDR_DONT_WRITE;
39591 #ifdef SQLITE_CHECK_PAGES
39592 pPg->pageHash = pager_pagehash(pPg);
39593 #endif
39594 }
39595 }
39596
39597 /*
39598 ** This routine is called to increment the value of the database file
@@ -45250,15 +45260,20 @@
45250 #ifndef SQLITE_OMIT_AUTOVACUUM
45251 /*
45252 ** Given a page number of a regular database page, return the page
45253 ** number for the pointer-map page that contains the entry for the
45254 ** input page number.
 
 
 
 
45255 */
45256 static Pgno ptrmapPageno(BtShared *pBt, Pgno pgno){
45257 int nPagesPerMapPage;
45258 Pgno iPtrMap, ret;
45259 assert( sqlite3_mutex_held(pBt->mutex) );
 
45260 nPagesPerMapPage = (pBt->usableSize/5)+1;
45261 iPtrMap = (pgno-2)/nPagesPerMapPage;
45262 ret = (iPtrMap*nPagesPerMapPage) + 2;
45263 if( ret==PENDING_BYTE_PAGE(pBt) ){
45264 ret++;
@@ -49322,10 +49337,14 @@
49322 }
49323 if( k==0 ){
49324 if( !pPrevTrunk ){
49325 memcpy(&pPage1->aData[32], &pTrunk->aData[0], 4);
49326 }else{
 
 
 
 
49327 memcpy(&pPrevTrunk->aData[0], &pTrunk->aData[0], 4);
49328 }
49329 }else{
49330 /* The trunk page is required by the caller but it contains
49331 ** pointers to free-list leaves. The first leaf becomes a trunk
49332
--- src/sqlite3.c
+++ src/sqlite3.c
@@ -1,8 +1,8 @@
1 /******************************************************************************
2 ** This file is an amalgamation of many separate C source files from SQLite
3 ** version 3.7.2. By combining all the individual C code files into this
4 ** single large file, the entire code can be compiled as a one translation
5 ** unit. This allows many compilers to do optimizations that would not be
6 ** possible if the files were compiled separately. Performance improvements
7 ** of 5% are more are commonly seen when SQLite is compiled as a single
8 ** translation unit.
@@ -642,13 +642,13 @@
642 **
643 ** See also: [sqlite3_libversion()],
644 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
645 ** [sqlite_version()] and [sqlite_source_id()].
646 */
647 #define SQLITE_VERSION "3.7.2"
648 #define SQLITE_VERSION_NUMBER 3007002
649 #define SQLITE_SOURCE_ID "2010-08-23 18:52:01 42537b60566f288167f1b5864a5435986838e3a3"
650
651 /*
652 ** CAPI3REF: Run-Time Library Version Numbers
653 ** KEYWORDS: sqlite3_version, sqlite3_sourceid
654 **
@@ -35310,17 +35310,18 @@
35310 ** that the page is either dirty or still matches the calculated page-hash.
35311 */
35312 #define CHECK_PAGE(x) checkPage(x)
35313 static void checkPage(PgHdr *pPg){
35314 Pager *pPager = pPg->pPager;
35315 assert( pPager->eState!=PAGER_ERROR );
35316 assert( (pPg->flags&PGHDR_DIRTY) || pPg->pageHash==pager_pagehash(pPg) );
35317 }
35318
35319 #else
35320 #define pager_datahash(X,Y) 0
35321 #define pager_pagehash(X) 0
35322 #define pager_set_pagehash(X)
35323 #define CHECK_PAGE(x)
35324 #endif /* SQLITE_CHECK_PAGES */
35325
35326 /*
35327 ** When this is called the journal file for pager pPager must be open.
@@ -36086,15 +36087,23 @@
36087 sqlite3OsClose(pPager->jfd);
36088 if( !pPager->tempFile ){
36089 rc = sqlite3OsDelete(pPager->pVfs, pPager->zJournal, 0);
36090 }
36091 }
36092 }
36093
36094 #ifdef SQLITE_CHECK_PAGES
36095 sqlite3PcacheIterateDirty(pPager->pPCache, pager_set_pagehash);
36096 if( pPager->dbSize==0 && sqlite3PcacheRefCount(pPager->pPCache)>0 ){
36097 PgHdr *p = pager_lookup(pPager, 1);
36098 if( p ){
36099 p->pageHash = 0;
36100 sqlite3PagerUnref(p);
36101 }
36102 }
36103 #endif
36104
36105 sqlite3BitvecDestroy(pPager->pInJournal);
36106 pPager->pInJournal = 0;
36107 pPager->nRec = 0;
36108 sqlite3PcacheCleanAll(pPager->pPCache);
36109 sqlite3PcacheTruncate(pPager->pPCache, pPager->dbSize);
@@ -36437,13 +36446,12 @@
36446 ** database corruption may ensue.
36447 */
36448 assert( !pagerUseWal(pPager) );
36449 sqlite3PcacheMakeClean(pPg);
36450 }
36451 pager_set_pagehash(pPg);
36452
 
36453 /* If this was page 1, then restore the value of Pager.dbFileVers.
36454 ** Do this before any decoding. */
36455 if( pgno==1 ){
36456 memcpy(&pPager->dbFileVers, &((u8*)pData)[24],sizeof(pPager->dbFileVers));
36457 }
@@ -37078,10 +37086,18 @@
37086 PgHdr *p;
37087 for(p=pList; p; p=p->pDirty){
37088 sqlite3BackupUpdate(pPager->pBackup, p->pgno, (u8 *)p->pData);
37089 }
37090 }
37091
37092 #ifdef SQLITE_CHECK_PAGES
37093 {
37094 PgHdr *p;
37095 for(p=pList; p; p=p->pDirty) pager_set_pagehash(p);
37096 }
37097 #endif
37098
37099 return rc;
37100 }
37101
37102 /*
37103 ** Begin a read transaction on the WAL.
@@ -38096,13 +38112,11 @@
38112 PAGER_INCR(sqlite3_pager_writedb_count);
38113 PAGER_INCR(pPager->nWrite);
38114 }else{
38115 PAGERTRACE(("NOSTORE %d page %d\n", PAGERID(pPager), pgno));
38116 }
38117 pager_set_pagehash(pList);
 
 
38118 pList = pList->pDirty;
38119 }
38120
38121 return rc;
38122 }
@@ -39086,13 +39100,11 @@
39100 rc = readDbPage(pPg);
39101 if( rc!=SQLITE_OK ){
39102 goto pager_acquire_err;
39103 }
39104 }
39105 pager_set_pagehash(pPg);
 
 
39106 }
39107
39108 return SQLITE_OK;
39109
39110 pager_acquire_err:
@@ -39586,13 +39598,11 @@
39598 Pager *pPager = pPg->pPager;
39599 if( (pPg->flags&PGHDR_DIRTY) && pPager->nSavepoint==0 ){
39600 PAGERTRACE(("DONT_WRITE page %d of %d\n", pPg->pgno, PAGERID(pPager)));
39601 IOTRACE(("CLEAN %p %d\n", pPager, pPg->pgno))
39602 pPg->flags |= PGHDR_DONT_WRITE;
39603 pager_set_pagehash(pPg);
 
 
39604 }
39605 }
39606
39607 /*
39608 ** This routine is called to increment the value of the database file
@@ -45250,15 +45260,20 @@
45260 #ifndef SQLITE_OMIT_AUTOVACUUM
45261 /*
45262 ** Given a page number of a regular database page, return the page
45263 ** number for the pointer-map page that contains the entry for the
45264 ** input page number.
45265 **
45266 ** Return 0 (not a valid page) for pgno==1 since there is
45267 ** no pointer map associated with page 1. The integrity_check logic
45268 ** requires that ptrmapPageno(*,1)!=1.
45269 */
45270 static Pgno ptrmapPageno(BtShared *pBt, Pgno pgno){
45271 int nPagesPerMapPage;
45272 Pgno iPtrMap, ret;
45273 assert( sqlite3_mutex_held(pBt->mutex) );
45274 if( pgno<2 ) return 0;
45275 nPagesPerMapPage = (pBt->usableSize/5)+1;
45276 iPtrMap = (pgno-2)/nPagesPerMapPage;
45277 ret = (iPtrMap*nPagesPerMapPage) + 2;
45278 if( ret==PENDING_BYTE_PAGE(pBt) ){
45279 ret++;
@@ -49322,10 +49337,14 @@
49337 }
49338 if( k==0 ){
49339 if( !pPrevTrunk ){
49340 memcpy(&pPage1->aData[32], &pTrunk->aData[0], 4);
49341 }else{
49342 rc = sqlite3PagerWrite(pPrevTrunk->pDbPage);
49343 if( rc!=SQLITE_OK ){
49344 goto end_allocate_page;
49345 }
49346 memcpy(&pPrevTrunk->aData[0], &pTrunk->aData[0], 4);
49347 }
49348 }else{
49349 /* The trunk page is required by the caller but it contains
49350 ** pointers to free-list leaves. The first leaf becomes a trunk
49351
+3 -3
--- src/sqlite3.h
+++ src/sqlite3.h
@@ -105,13 +105,13 @@
105105
**
106106
** See also: [sqlite3_libversion()],
107107
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
108108
** [sqlite_version()] and [sqlite_source_id()].
109109
*/
110
-#define SQLITE_VERSION "3.7.1"
111
-#define SQLITE_VERSION_NUMBER 3007001
112
-#define SQLITE_SOURCE_ID "2010-08-20 15:32:21 5523ecd32295c188e3bf5dbd57d92d2879461e32"
110
+#define SQLITE_VERSION "3.7.2"
111
+#define SQLITE_VERSION_NUMBER 3007002
112
+#define SQLITE_SOURCE_ID "2010-08-23 18:52:01 42537b60566f288167f1b5864a5435986838e3a3"
113113
114114
/*
115115
** CAPI3REF: Run-Time Library Version Numbers
116116
** KEYWORDS: sqlite3_version, sqlite3_sourceid
117117
**
118118
--- src/sqlite3.h
+++ src/sqlite3.h
@@ -105,13 +105,13 @@
105 **
106 ** See also: [sqlite3_libversion()],
107 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
108 ** [sqlite_version()] and [sqlite_source_id()].
109 */
110 #define SQLITE_VERSION "3.7.1"
111 #define SQLITE_VERSION_NUMBER 3007001
112 #define SQLITE_SOURCE_ID "2010-08-20 15:32:21 5523ecd32295c188e3bf5dbd57d92d2879461e32"
113
114 /*
115 ** CAPI3REF: Run-Time Library Version Numbers
116 ** KEYWORDS: sqlite3_version, sqlite3_sourceid
117 **
118
--- src/sqlite3.h
+++ src/sqlite3.h
@@ -105,13 +105,13 @@
105 **
106 ** See also: [sqlite3_libversion()],
107 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
108 ** [sqlite_version()] and [sqlite_source_id()].
109 */
110 #define SQLITE_VERSION "3.7.2"
111 #define SQLITE_VERSION_NUMBER 3007002
112 #define SQLITE_SOURCE_ID "2010-08-23 18:52:01 42537b60566f288167f1b5864a5435986838e3a3"
113
114 /*
115 ** CAPI3REF: Run-Time Library Version Numbers
116 ** KEYWORDS: sqlite3_version, sqlite3_sourceid
117 **
118

Keyboard Shortcuts

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