diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 20629d2afd..558505e3b3 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -16,6 +16,14 @@ The license applies to all entries newer than 2009-04-28. */ +2010-08-22 12:29 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) + * external/sqlite3/sqlite3.c + * external/sqlite3/sqlite3.dif + * external/sqlite3/sqlite3.h + * external/sqlite3/Makefile + + Upgraded to 3.7.0.1 (from 3.7.0) + Patch by Tamas Tevesz. Thank you very much. + 2010-08-20 19:04 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com) * contrib/hbide/idemisc.prg * contrib/hbide/idereportsmanager.prg diff --git a/harbour/external/sqlite3/Makefile b/harbour/external/sqlite3/Makefile index 0fdc052d17..230996da71 100644 --- a/harbour/external/sqlite3/Makefile +++ b/harbour/external/sqlite3/Makefile @@ -76,7 +76,7 @@ endif # ORIGIN http://www.sqlite.org/ # VER 3.7.0 -# URL http://www.sqlite.org/sqlite-amalgamation-3_7_0.zip +# URL http://www.sqlite.org/sqlite-amalgamation-3_7_0_1.zip # DIFF sqlite3.dif # # MAP sqlite3.c diff --git a/harbour/external/sqlite3/sqlite3.c b/harbour/external/sqlite3/sqlite3.c index 4a7c21e44a..e3746ebfee 100644 --- a/harbour/external/sqlite3/sqlite3.c +++ b/harbour/external/sqlite3/sqlite3.c @@ -1,6 +1,6 @@ /****************************************************************************** ** This file is an amalgamation of many separate C source files from SQLite -** version 3.7.0. By combining all the individual C code files into this +** version 3.7.0.1. By combining all the individual C code files into this ** single large file, the entire code can be compiled as a one translation ** unit. This allows many compilers to do optimizations that would not be ** possible if the files were compiled separately. Performance improvements @@ -643,9 +643,9 @@ extern "C" { ** [sqlite3_libversion_number()], [sqlite3_sourceid()], ** [sqlite_version()] and [sqlite_source_id()]. */ -#define SQLITE_VERSION "3.7.0" +#define SQLITE_VERSION "3.7.0.1" #define SQLITE_VERSION_NUMBER 3007000 -#define SQLITE_SOURCE_ID "2010-07-21 16:16:28 b36b105eab6fd3195f4bfba6cb5cda0f063b7460" +#define SQLITE_SOURCE_ID "2010-08-04 12:31:11 042a1abb030a0711386add7eb6e10832cc8b0f57" /* ** CAPI3REF: Run-Time Library Version Numbers @@ -46250,13 +46250,27 @@ SQLITE_PRIVATE int sqlite3BtreeBeginTrans(Btree *p, int wrflag){ if( p->inTrans>pBt->inTransaction ){ pBt->inTransaction = p->inTrans; } -#ifndef SQLITE_OMIT_SHARED_CACHE if( wrflag ){ + MemPage *pPage1 = pBt->pPage1; +#ifndef SQLITE_OMIT_SHARED_CACHE assert( !pBt->pWriter ); pBt->pWriter = p; pBt->isExclusive = (u8)(wrflag>1); - } #endif + + /* If the db-size header field is incorrect (as it may be if an old + ** client has been writing the database file), update it now. Doing + ** this sooner rather than later means the database size can safely + ** re-read the database size from page 1 if a savepoint or transaction + ** rollback occurs within the transaction. + */ + if( pBt->nPage!=get4byte(&pPage1->aData[28]) ){ + rc = sqlite3PagerWrite(pPage1->pDbPage); + if( rc==SQLITE_OK ){ + put4byte(&pPage1->aData[28], pBt->nPage); + } + } + } } @@ -68264,14 +68278,20 @@ SQLITE_PRIVATE int sqlite3FindInIndex(Parse *pParse, Expr *pX, int *prNotFound){ /* Could not found an existing table or index to use as the RHS b-tree. ** We will have to generate an ephemeral table to do the job. */ + double savedNQueryLoop = pParse->nQueryLoop; int rMayHaveNull = 0; eType = IN_INDEX_EPH; if( prNotFound ){ *prNotFound = rMayHaveNull = ++pParse->nMem; - }else if( pX->pLeft->iColumn<0 && !ExprHasAnyProperty(pX, EP_xIsSelect) ){ - eType = IN_INDEX_ROWID; + }else{ + testcase( pParse->nQueryLoop>(double)1 ); + pParse->nQueryLoop = (double)1; + if( pX->pLeft->iColumn<0 && !ExprHasAnyProperty(pX, EP_xIsSelect) ){ + eType = IN_INDEX_ROWID; + } } sqlite3CodeSubselect(pParse, pX, rMayHaveNull, eType==IN_INDEX_ROWID); + pParse->nQueryLoop = savedNQueryLoop; }else{ pX->iTable = iTab; } diff --git a/harbour/external/sqlite3/sqlite3.dif b/harbour/external/sqlite3/sqlite3.dif index e2c6214d89..9270295d7e 100644 --- a/harbour/external/sqlite3/sqlite3.dif +++ b/harbour/external/sqlite3/sqlite3.dif @@ -1,15 +1,6 @@ diff -urN sqlite3.orig/sqlite3.c sqlite3/sqlite3.c ---- sqlite3.orig/sqlite3.c 2010-07-28 22:33:32.000000000 +0200 -+++ sqlite3/sqlite3.c 2010-07-28 22:33:32.000000000 +0200 -@@ -21893,7 +21893,7 @@ - - memset( pFile, 0, sizeof(*pFile) ); - -- OSTRACE( "OPEN want %d\n", flags )); -+ OSTRACE(( "OPEN want %d\n", flags )); - - if( flags & SQLITE_OPEN_READWRITE ){ - ulOpenMode |= OPEN_ACCESS_READWRITE; +--- sqlite3.orig/sqlite3.c 2010-08-22 08:56:16.207563072 +0200 ++++ sqlite3/sqlite3.c 2010-08-22 08:56:16.307562085 +0200 @@ -27225,7 +27225,7 @@ ** error message. */ diff --git a/harbour/external/sqlite3/sqlite3.h b/harbour/external/sqlite3/sqlite3.h index 2404a458a3..3d02c7cca6 100644 --- a/harbour/external/sqlite3/sqlite3.h +++ b/harbour/external/sqlite3/sqlite3.h @@ -107,9 +107,9 @@ extern "C" { ** [sqlite3_libversion_number()], [sqlite3_sourceid()], ** [sqlite_version()] and [sqlite_source_id()]. */ -#define SQLITE_VERSION "3.7.0" +#define SQLITE_VERSION "3.7.0.1" #define SQLITE_VERSION_NUMBER 3007000 -#define SQLITE_SOURCE_ID "2010-07-21 16:16:28 b36b105eab6fd3195f4bfba6cb5cda0f063b7460" +#define SQLITE_SOURCE_ID "2010-08-04 12:31:11 042a1abb030a0711386add7eb6e10832cc8b0f57" /* ** CAPI3REF: Run-Time Library Version Numbers