Fossil SCM
Pull in trunk changes and the latest NGQP updates.
Commit
d3d4e1117945db539f427d800f5bd910546d18f6
Parent
ea308ab98bb2b49…
6 files changed
+8
-11
+9
-4
+9
-4
+1
-1
+1
-1
+2
-2
+8
-11
| --- src/main.c | ||
| +++ src/main.c | ||
| @@ -786,33 +786,30 @@ | ||
| 786 | 786 | MANIFEST_VERSION " " MANIFEST_DATE " UTC\n"); |
| 787 | 787 | if(!find_option("verbose","v",0)){ |
| 788 | 788 | return; |
| 789 | 789 | }else{ |
| 790 | 790 | int count = 0; |
| 791 | - fossil_print("\nCompiled using \"%s\" with\nSQLite %s [%s],\nzlib %s, " | |
| 792 | - "and the following optional features enabled:\n\n", | |
| 793 | - COMPILER_NAME, SQLITE_VERSION, SQLITE_SOURCE_ID, | |
| 794 | - ZLIB_VERSION); | |
| 791 | + fossil_print("Compiled on %s %s using %s (%d-bit)\n", | |
| 792 | + __DATE__, __TIME__, COMPILER_NAME, sizeof(void*)*8); | |
| 793 | + fossil_print("SQLite %s [%s],\n", SQLITE_VERSION, SQLITE_SOURCE_ID); | |
| 794 | + fossil_print("zlib %s\n", ZLIB_VERSION); | |
| 795 | 795 | #if defined(FOSSIL_ENABLE_SSL) |
| 796 | 796 | ++count; |
| 797 | - fossil_print("\tSSL (%s)\n", OPENSSL_VERSION_TEXT); | |
| 797 | + fossil_print("SSL (%s)\n", OPENSSL_VERSION_TEXT); | |
| 798 | 798 | #endif |
| 799 | 799 | #if defined(FOSSIL_ENABLE_TCL) |
| 800 | 800 | ++count; |
| 801 | - fossil_print("\tTCL (Tcl %s)\n", TCL_PATCH_LEVEL); | |
| 801 | + fossil_print("TCL (Tcl %s)\n", TCL_PATCH_LEVEL); | |
| 802 | 802 | #endif |
| 803 | 803 | #if defined(FOSSIL_ENABLE_TCL_STUBS) |
| 804 | 804 | ++count; |
| 805 | - fossil_print("\tTCL_STUBS\n"); | |
| 805 | + fossil_print("TCL_STUBS\n"); | |
| 806 | 806 | #endif |
| 807 | 807 | #if defined(FOSSIL_ENABLE_JSON) |
| 808 | 808 | ++count; |
| 809 | - fossil_print("\tJSON (API %s)\n", FOSSIL_JSON_API_VERSION); | |
| 809 | + fossil_print("JSON (API %s)\n", FOSSIL_JSON_API_VERSION); | |
| 810 | 810 | #endif |
| 811 | - if( !count ){ | |
| 812 | - fossil_print("\tNo optional features were enabled.\n"); | |
| 813 | - } | |
| 814 | 811 | } |
| 815 | 812 | } |
| 816 | 813 | |
| 817 | 814 | |
| 818 | 815 | /* |
| 819 | 816 |
| --- src/main.c | |
| +++ src/main.c | |
| @@ -786,33 +786,30 @@ | |
| 786 | MANIFEST_VERSION " " MANIFEST_DATE " UTC\n"); |
| 787 | if(!find_option("verbose","v",0)){ |
| 788 | return; |
| 789 | }else{ |
| 790 | int count = 0; |
| 791 | fossil_print("\nCompiled using \"%s\" with\nSQLite %s [%s],\nzlib %s, " |
| 792 | "and the following optional features enabled:\n\n", |
| 793 | COMPILER_NAME, SQLITE_VERSION, SQLITE_SOURCE_ID, |
| 794 | ZLIB_VERSION); |
| 795 | #if defined(FOSSIL_ENABLE_SSL) |
| 796 | ++count; |
| 797 | fossil_print("\tSSL (%s)\n", OPENSSL_VERSION_TEXT); |
| 798 | #endif |
| 799 | #if defined(FOSSIL_ENABLE_TCL) |
| 800 | ++count; |
| 801 | fossil_print("\tTCL (Tcl %s)\n", TCL_PATCH_LEVEL); |
| 802 | #endif |
| 803 | #if defined(FOSSIL_ENABLE_TCL_STUBS) |
| 804 | ++count; |
| 805 | fossil_print("\tTCL_STUBS\n"); |
| 806 | #endif |
| 807 | #if defined(FOSSIL_ENABLE_JSON) |
| 808 | ++count; |
| 809 | fossil_print("\tJSON (API %s)\n", FOSSIL_JSON_API_VERSION); |
| 810 | #endif |
| 811 | if( !count ){ |
| 812 | fossil_print("\tNo optional features were enabled.\n"); |
| 813 | } |
| 814 | } |
| 815 | } |
| 816 | |
| 817 | |
| 818 | /* |
| 819 |
| --- src/main.c | |
| +++ src/main.c | |
| @@ -786,33 +786,30 @@ | |
| 786 | MANIFEST_VERSION " " MANIFEST_DATE " UTC\n"); |
| 787 | if(!find_option("verbose","v",0)){ |
| 788 | return; |
| 789 | }else{ |
| 790 | int count = 0; |
| 791 | fossil_print("Compiled on %s %s using %s (%d-bit)\n", |
| 792 | __DATE__, __TIME__, COMPILER_NAME, sizeof(void*)*8); |
| 793 | fossil_print("SQLite %s [%s],\n", SQLITE_VERSION, SQLITE_SOURCE_ID); |
| 794 | fossil_print("zlib %s\n", ZLIB_VERSION); |
| 795 | #if defined(FOSSIL_ENABLE_SSL) |
| 796 | ++count; |
| 797 | fossil_print("SSL (%s)\n", OPENSSL_VERSION_TEXT); |
| 798 | #endif |
| 799 | #if defined(FOSSIL_ENABLE_TCL) |
| 800 | ++count; |
| 801 | fossil_print("TCL (Tcl %s)\n", TCL_PATCH_LEVEL); |
| 802 | #endif |
| 803 | #if defined(FOSSIL_ENABLE_TCL_STUBS) |
| 804 | ++count; |
| 805 | fossil_print("TCL_STUBS\n"); |
| 806 | #endif |
| 807 | #if defined(FOSSIL_ENABLE_JSON) |
| 808 | ++count; |
| 809 | fossil_print("JSON (API %s)\n", FOSSIL_JSON_API_VERSION); |
| 810 | #endif |
| 811 | } |
| 812 | } |
| 813 | |
| 814 | |
| 815 | /* |
| 816 |
+9
-4
| --- src/sqlite3.c | ||
| +++ src/sqlite3.c | ||
| @@ -670,11 +670,11 @@ | ||
| 670 | 670 | ** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
| 671 | 671 | ** [sqlite_version()] and [sqlite_source_id()]. |
| 672 | 672 | */ |
| 673 | 673 | #define SQLITE_VERSION "3.7.17" |
| 674 | 674 | #define SQLITE_VERSION_NUMBER 3007017 |
| 675 | -#define SQLITE_SOURCE_ID "2013-06-18 01:52:41 4c6d58d75d51e1ce829aec214617c3a89e784a2d" | |
| 675 | +#define SQLITE_SOURCE_ID "2013-06-18 20:06:23 4fbb0c4d26c54aaefbe5397cde2a0b9d2ce3885f" | |
| 676 | 676 | |
| 677 | 677 | /* |
| 678 | 678 | ** CAPI3REF: Run-Time Library Version Numbers |
| 679 | 679 | ** KEYWORDS: sqlite3_version, sqlite3_sourceid |
| 680 | 680 | ** |
| @@ -95705,11 +95705,11 @@ | ||
| 95705 | 95705 | } |
| 95706 | 95706 | |
| 95707 | 95707 | sqlite3VtabUnlockList(db); |
| 95708 | 95708 | |
| 95709 | 95709 | pParse->db = db; |
| 95710 | - pParse->nQueryLoop = 1; | |
| 95710 | + pParse->nQueryLoop = 0; /* Logarithmic, so 0 really means 1 */ | |
| 95711 | 95711 | if( nBytes>=0 && (nBytes==0 || zSql[nBytes-1]!=0) ){ |
| 95712 | 95712 | char *zSqlCopy; |
| 95713 | 95713 | int mxLen = db->aLimit[SQLITE_LIMIT_SQL_LENGTH]; |
| 95714 | 95714 | testcase( nBytes==mxLen ); |
| 95715 | 95715 | testcase( nBytes==mxLen+1 ); |
| @@ -95727,11 +95727,11 @@ | ||
| 95727 | 95727 | pParse->zTail = &zSql[nBytes]; |
| 95728 | 95728 | } |
| 95729 | 95729 | }else{ |
| 95730 | 95730 | sqlite3RunParser(pParse, zSql, &zErrMsg); |
| 95731 | 95731 | } |
| 95732 | - assert( 1==pParse->nQueryLoop ); | |
| 95732 | + assert( 0==pParse->nQueryLoop ); | |
| 95733 | 95733 | |
| 95734 | 95734 | if( db->mallocFailed ){ |
| 95735 | 95735 | pParse->rc = SQLITE_NOMEM; |
| 95736 | 95736 | } |
| 95737 | 95737 | if( pParse->rc==SQLITE_DONE ) pParse->rc = SQLITE_OK; |
| @@ -108545,10 +108545,11 @@ | ||
| 108545 | 108545 | |
| 108546 | 108546 | assert( pNew->u.btree.nEq<=pProbe->nColumn ); |
| 108547 | 108547 | if( pNew->u.btree.nEq < pProbe->nColumn ){ |
| 108548 | 108548 | iCol = pProbe->aiColumn[pNew->u.btree.nEq]; |
| 108549 | 108549 | nRowEst = whereCost(pProbe->aiRowEst[pNew->u.btree.nEq+1]); |
| 108550 | + if( nRowEst==0 && pProbe->onError==OE_None ) nRowEst = 1; | |
| 108550 | 108551 | }else{ |
| 108551 | 108552 | iCol = -1; |
| 108552 | 108553 | nRowEst = 0; |
| 108553 | 108554 | } |
| 108554 | 108555 | pTerm = whereScanInit(&scan, pBuilder->pWC, pSrc->iCursor, iCol, |
| @@ -109422,10 +109423,14 @@ | ||
| 109422 | 109423 | |
| 109423 | 109424 | /* |
| 109424 | 109425 | ** Given the list of WhereLoop objects on pWInfo->pLoops, this routine |
| 109425 | 109426 | ** attempts to find the lowest cost path that visits each WhereLoop |
| 109426 | 109427 | ** once. This path is then loaded into the pWInfo->a[].pWLoop fields. |
| 109428 | +** | |
| 109429 | +** Assume that the total number of output rows that will need to be sorted | |
| 109430 | +** will be nRowEst (in the 10*log2 representation). Or, ignore sorting | |
| 109431 | +** costs if nRowEst==0. | |
| 109427 | 109432 | ** |
| 109428 | 109433 | ** Return SQLITE_OK on success or SQLITE_NOMEM of a memory allocation |
| 109429 | 109434 | ** error occurs. |
| 109430 | 109435 | */ |
| 109431 | 109436 | static int wherePathSolver(WhereInfo *pWInfo, WhereCost nRowEst){ |
| @@ -110027,11 +110032,11 @@ | ||
| 110027 | 110032 | #endif |
| 110028 | 110033 | |
| 110029 | 110034 | wherePathSolver(pWInfo, 0); |
| 110030 | 110035 | if( db->mallocFailed ) goto whereBeginError; |
| 110031 | 110036 | if( pWInfo->pOrderBy ){ |
| 110032 | - wherePathSolver(pWInfo, pWInfo->nRowOut); | |
| 110037 | + wherePathSolver(pWInfo, pWInfo->nRowOut+1); | |
| 110033 | 110038 | if( db->mallocFailed ) goto whereBeginError; |
| 110034 | 110039 | } |
| 110035 | 110040 | } |
| 110036 | 110041 | if( pWInfo->pOrderBy==0 && (db->flags & SQLITE_ReverseOrder)!=0 ){ |
| 110037 | 110042 | pWInfo->revMask = (Bitmask)(-1); |
| 110038 | 110043 |
| --- src/sqlite3.c | |
| +++ src/sqlite3.c | |
| @@ -670,11 +670,11 @@ | |
| 670 | ** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
| 671 | ** [sqlite_version()] and [sqlite_source_id()]. |
| 672 | */ |
| 673 | #define SQLITE_VERSION "3.7.17" |
| 674 | #define SQLITE_VERSION_NUMBER 3007017 |
| 675 | #define SQLITE_SOURCE_ID "2013-06-18 01:52:41 4c6d58d75d51e1ce829aec214617c3a89e784a2d" |
| 676 | |
| 677 | /* |
| 678 | ** CAPI3REF: Run-Time Library Version Numbers |
| 679 | ** KEYWORDS: sqlite3_version, sqlite3_sourceid |
| 680 | ** |
| @@ -95705,11 +95705,11 @@ | |
| 95705 | } |
| 95706 | |
| 95707 | sqlite3VtabUnlockList(db); |
| 95708 | |
| 95709 | pParse->db = db; |
| 95710 | pParse->nQueryLoop = 1; |
| 95711 | if( nBytes>=0 && (nBytes==0 || zSql[nBytes-1]!=0) ){ |
| 95712 | char *zSqlCopy; |
| 95713 | int mxLen = db->aLimit[SQLITE_LIMIT_SQL_LENGTH]; |
| 95714 | testcase( nBytes==mxLen ); |
| 95715 | testcase( nBytes==mxLen+1 ); |
| @@ -95727,11 +95727,11 @@ | |
| 95727 | pParse->zTail = &zSql[nBytes]; |
| 95728 | } |
| 95729 | }else{ |
| 95730 | sqlite3RunParser(pParse, zSql, &zErrMsg); |
| 95731 | } |
| 95732 | assert( 1==pParse->nQueryLoop ); |
| 95733 | |
| 95734 | if( db->mallocFailed ){ |
| 95735 | pParse->rc = SQLITE_NOMEM; |
| 95736 | } |
| 95737 | if( pParse->rc==SQLITE_DONE ) pParse->rc = SQLITE_OK; |
| @@ -108545,10 +108545,11 @@ | |
| 108545 | |
| 108546 | assert( pNew->u.btree.nEq<=pProbe->nColumn ); |
| 108547 | if( pNew->u.btree.nEq < pProbe->nColumn ){ |
| 108548 | iCol = pProbe->aiColumn[pNew->u.btree.nEq]; |
| 108549 | nRowEst = whereCost(pProbe->aiRowEst[pNew->u.btree.nEq+1]); |
| 108550 | }else{ |
| 108551 | iCol = -1; |
| 108552 | nRowEst = 0; |
| 108553 | } |
| 108554 | pTerm = whereScanInit(&scan, pBuilder->pWC, pSrc->iCursor, iCol, |
| @@ -109422,10 +109423,14 @@ | |
| 109422 | |
| 109423 | /* |
| 109424 | ** Given the list of WhereLoop objects on pWInfo->pLoops, this routine |
| 109425 | ** attempts to find the lowest cost path that visits each WhereLoop |
| 109426 | ** once. This path is then loaded into the pWInfo->a[].pWLoop fields. |
| 109427 | ** |
| 109428 | ** Return SQLITE_OK on success or SQLITE_NOMEM of a memory allocation |
| 109429 | ** error occurs. |
| 109430 | */ |
| 109431 | static int wherePathSolver(WhereInfo *pWInfo, WhereCost nRowEst){ |
| @@ -110027,11 +110032,11 @@ | |
| 110027 | #endif |
| 110028 | |
| 110029 | wherePathSolver(pWInfo, 0); |
| 110030 | if( db->mallocFailed ) goto whereBeginError; |
| 110031 | if( pWInfo->pOrderBy ){ |
| 110032 | wherePathSolver(pWInfo, pWInfo->nRowOut); |
| 110033 | if( db->mallocFailed ) goto whereBeginError; |
| 110034 | } |
| 110035 | } |
| 110036 | if( pWInfo->pOrderBy==0 && (db->flags & SQLITE_ReverseOrder)!=0 ){ |
| 110037 | pWInfo->revMask = (Bitmask)(-1); |
| 110038 |
| --- src/sqlite3.c | |
| +++ src/sqlite3.c | |
| @@ -670,11 +670,11 @@ | |
| 670 | ** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
| 671 | ** [sqlite_version()] and [sqlite_source_id()]. |
| 672 | */ |
| 673 | #define SQLITE_VERSION "3.7.17" |
| 674 | #define SQLITE_VERSION_NUMBER 3007017 |
| 675 | #define SQLITE_SOURCE_ID "2013-06-18 20:06:23 4fbb0c4d26c54aaefbe5397cde2a0b9d2ce3885f" |
| 676 | |
| 677 | /* |
| 678 | ** CAPI3REF: Run-Time Library Version Numbers |
| 679 | ** KEYWORDS: sqlite3_version, sqlite3_sourceid |
| 680 | ** |
| @@ -95705,11 +95705,11 @@ | |
| 95705 | } |
| 95706 | |
| 95707 | sqlite3VtabUnlockList(db); |
| 95708 | |
| 95709 | pParse->db = db; |
| 95710 | pParse->nQueryLoop = 0; /* Logarithmic, so 0 really means 1 */ |
| 95711 | if( nBytes>=0 && (nBytes==0 || zSql[nBytes-1]!=0) ){ |
| 95712 | char *zSqlCopy; |
| 95713 | int mxLen = db->aLimit[SQLITE_LIMIT_SQL_LENGTH]; |
| 95714 | testcase( nBytes==mxLen ); |
| 95715 | testcase( nBytes==mxLen+1 ); |
| @@ -95727,11 +95727,11 @@ | |
| 95727 | pParse->zTail = &zSql[nBytes]; |
| 95728 | } |
| 95729 | }else{ |
| 95730 | sqlite3RunParser(pParse, zSql, &zErrMsg); |
| 95731 | } |
| 95732 | assert( 0==pParse->nQueryLoop ); |
| 95733 | |
| 95734 | if( db->mallocFailed ){ |
| 95735 | pParse->rc = SQLITE_NOMEM; |
| 95736 | } |
| 95737 | if( pParse->rc==SQLITE_DONE ) pParse->rc = SQLITE_OK; |
| @@ -108545,10 +108545,11 @@ | |
| 108545 | |
| 108546 | assert( pNew->u.btree.nEq<=pProbe->nColumn ); |
| 108547 | if( pNew->u.btree.nEq < pProbe->nColumn ){ |
| 108548 | iCol = pProbe->aiColumn[pNew->u.btree.nEq]; |
| 108549 | nRowEst = whereCost(pProbe->aiRowEst[pNew->u.btree.nEq+1]); |
| 108550 | if( nRowEst==0 && pProbe->onError==OE_None ) nRowEst = 1; |
| 108551 | }else{ |
| 108552 | iCol = -1; |
| 108553 | nRowEst = 0; |
| 108554 | } |
| 108555 | pTerm = whereScanInit(&scan, pBuilder->pWC, pSrc->iCursor, iCol, |
| @@ -109422,10 +109423,14 @@ | |
| 109423 | |
| 109424 | /* |
| 109425 | ** Given the list of WhereLoop objects on pWInfo->pLoops, this routine |
| 109426 | ** attempts to find the lowest cost path that visits each WhereLoop |
| 109427 | ** once. This path is then loaded into the pWInfo->a[].pWLoop fields. |
| 109428 | ** |
| 109429 | ** Assume that the total number of output rows that will need to be sorted |
| 109430 | ** will be nRowEst (in the 10*log2 representation). Or, ignore sorting |
| 109431 | ** costs if nRowEst==0. |
| 109432 | ** |
| 109433 | ** Return SQLITE_OK on success or SQLITE_NOMEM of a memory allocation |
| 109434 | ** error occurs. |
| 109435 | */ |
| 109436 | static int wherePathSolver(WhereInfo *pWInfo, WhereCost nRowEst){ |
| @@ -110027,11 +110032,11 @@ | |
| 110032 | #endif |
| 110033 | |
| 110034 | wherePathSolver(pWInfo, 0); |
| 110035 | if( db->mallocFailed ) goto whereBeginError; |
| 110036 | if( pWInfo->pOrderBy ){ |
| 110037 | wherePathSolver(pWInfo, pWInfo->nRowOut+1); |
| 110038 | if( db->mallocFailed ) goto whereBeginError; |
| 110039 | } |
| 110040 | } |
| 110041 | if( pWInfo->pOrderBy==0 && (db->flags & SQLITE_ReverseOrder)!=0 ){ |
| 110042 | pWInfo->revMask = (Bitmask)(-1); |
| 110043 |
+9
-4
| --- src/sqlite3.c | ||
| +++ src/sqlite3.c | ||
| @@ -670,11 +670,11 @@ | ||
| 670 | 670 | ** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
| 671 | 671 | ** [sqlite_version()] and [sqlite_source_id()]. |
| 672 | 672 | */ |
| 673 | 673 | #define SQLITE_VERSION "3.7.17" |
| 674 | 674 | #define SQLITE_VERSION_NUMBER 3007017 |
| 675 | -#define SQLITE_SOURCE_ID "2013-06-18 01:52:41 4c6d58d75d51e1ce829aec214617c3a89e784a2d" | |
| 675 | +#define SQLITE_SOURCE_ID "2013-06-18 20:06:23 4fbb0c4d26c54aaefbe5397cde2a0b9d2ce3885f" | |
| 676 | 676 | |
| 677 | 677 | /* |
| 678 | 678 | ** CAPI3REF: Run-Time Library Version Numbers |
| 679 | 679 | ** KEYWORDS: sqlite3_version, sqlite3_sourceid |
| 680 | 680 | ** |
| @@ -95705,11 +95705,11 @@ | ||
| 95705 | 95705 | } |
| 95706 | 95706 | |
| 95707 | 95707 | sqlite3VtabUnlockList(db); |
| 95708 | 95708 | |
| 95709 | 95709 | pParse->db = db; |
| 95710 | - pParse->nQueryLoop = 1; | |
| 95710 | + pParse->nQueryLoop = 0; /* Logarithmic, so 0 really means 1 */ | |
| 95711 | 95711 | if( nBytes>=0 && (nBytes==0 || zSql[nBytes-1]!=0) ){ |
| 95712 | 95712 | char *zSqlCopy; |
| 95713 | 95713 | int mxLen = db->aLimit[SQLITE_LIMIT_SQL_LENGTH]; |
| 95714 | 95714 | testcase( nBytes==mxLen ); |
| 95715 | 95715 | testcase( nBytes==mxLen+1 ); |
| @@ -95727,11 +95727,11 @@ | ||
| 95727 | 95727 | pParse->zTail = &zSql[nBytes]; |
| 95728 | 95728 | } |
| 95729 | 95729 | }else{ |
| 95730 | 95730 | sqlite3RunParser(pParse, zSql, &zErrMsg); |
| 95731 | 95731 | } |
| 95732 | - assert( 1==pParse->nQueryLoop ); | |
| 95732 | + assert( 0==pParse->nQueryLoop ); | |
| 95733 | 95733 | |
| 95734 | 95734 | if( db->mallocFailed ){ |
| 95735 | 95735 | pParse->rc = SQLITE_NOMEM; |
| 95736 | 95736 | } |
| 95737 | 95737 | if( pParse->rc==SQLITE_DONE ) pParse->rc = SQLITE_OK; |
| @@ -108545,10 +108545,11 @@ | ||
| 108545 | 108545 | |
| 108546 | 108546 | assert( pNew->u.btree.nEq<=pProbe->nColumn ); |
| 108547 | 108547 | if( pNew->u.btree.nEq < pProbe->nColumn ){ |
| 108548 | 108548 | iCol = pProbe->aiColumn[pNew->u.btree.nEq]; |
| 108549 | 108549 | nRowEst = whereCost(pProbe->aiRowEst[pNew->u.btree.nEq+1]); |
| 108550 | + if( nRowEst==0 && pProbe->onError==OE_None ) nRowEst = 1; | |
| 108550 | 108551 | }else{ |
| 108551 | 108552 | iCol = -1; |
| 108552 | 108553 | nRowEst = 0; |
| 108553 | 108554 | } |
| 108554 | 108555 | pTerm = whereScanInit(&scan, pBuilder->pWC, pSrc->iCursor, iCol, |
| @@ -109422,10 +109423,14 @@ | ||
| 109422 | 109423 | |
| 109423 | 109424 | /* |
| 109424 | 109425 | ** Given the list of WhereLoop objects on pWInfo->pLoops, this routine |
| 109425 | 109426 | ** attempts to find the lowest cost path that visits each WhereLoop |
| 109426 | 109427 | ** once. This path is then loaded into the pWInfo->a[].pWLoop fields. |
| 109428 | +** | |
| 109429 | +** Assume that the total number of output rows that will need to be sorted | |
| 109430 | +** will be nRowEst (in the 10*log2 representation). Or, ignore sorting | |
| 109431 | +** costs if nRowEst==0. | |
| 109427 | 109432 | ** |
| 109428 | 109433 | ** Return SQLITE_OK on success or SQLITE_NOMEM of a memory allocation |
| 109429 | 109434 | ** error occurs. |
| 109430 | 109435 | */ |
| 109431 | 109436 | static int wherePathSolver(WhereInfo *pWInfo, WhereCost nRowEst){ |
| @@ -110027,11 +110032,11 @@ | ||
| 110027 | 110032 | #endif |
| 110028 | 110033 | |
| 110029 | 110034 | wherePathSolver(pWInfo, 0); |
| 110030 | 110035 | if( db->mallocFailed ) goto whereBeginError; |
| 110031 | 110036 | if( pWInfo->pOrderBy ){ |
| 110032 | - wherePathSolver(pWInfo, pWInfo->nRowOut); | |
| 110037 | + wherePathSolver(pWInfo, pWInfo->nRowOut+1); | |
| 110033 | 110038 | if( db->mallocFailed ) goto whereBeginError; |
| 110034 | 110039 | } |
| 110035 | 110040 | } |
| 110036 | 110041 | if( pWInfo->pOrderBy==0 && (db->flags & SQLITE_ReverseOrder)!=0 ){ |
| 110037 | 110042 | pWInfo->revMask = (Bitmask)(-1); |
| 110038 | 110043 |
| --- src/sqlite3.c | |
| +++ src/sqlite3.c | |
| @@ -670,11 +670,11 @@ | |
| 670 | ** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
| 671 | ** [sqlite_version()] and [sqlite_source_id()]. |
| 672 | */ |
| 673 | #define SQLITE_VERSION "3.7.17" |
| 674 | #define SQLITE_VERSION_NUMBER 3007017 |
| 675 | #define SQLITE_SOURCE_ID "2013-06-18 01:52:41 4c6d58d75d51e1ce829aec214617c3a89e784a2d" |
| 676 | |
| 677 | /* |
| 678 | ** CAPI3REF: Run-Time Library Version Numbers |
| 679 | ** KEYWORDS: sqlite3_version, sqlite3_sourceid |
| 680 | ** |
| @@ -95705,11 +95705,11 @@ | |
| 95705 | } |
| 95706 | |
| 95707 | sqlite3VtabUnlockList(db); |
| 95708 | |
| 95709 | pParse->db = db; |
| 95710 | pParse->nQueryLoop = 1; |
| 95711 | if( nBytes>=0 && (nBytes==0 || zSql[nBytes-1]!=0) ){ |
| 95712 | char *zSqlCopy; |
| 95713 | int mxLen = db->aLimit[SQLITE_LIMIT_SQL_LENGTH]; |
| 95714 | testcase( nBytes==mxLen ); |
| 95715 | testcase( nBytes==mxLen+1 ); |
| @@ -95727,11 +95727,11 @@ | |
| 95727 | pParse->zTail = &zSql[nBytes]; |
| 95728 | } |
| 95729 | }else{ |
| 95730 | sqlite3RunParser(pParse, zSql, &zErrMsg); |
| 95731 | } |
| 95732 | assert( 1==pParse->nQueryLoop ); |
| 95733 | |
| 95734 | if( db->mallocFailed ){ |
| 95735 | pParse->rc = SQLITE_NOMEM; |
| 95736 | } |
| 95737 | if( pParse->rc==SQLITE_DONE ) pParse->rc = SQLITE_OK; |
| @@ -108545,10 +108545,11 @@ | |
| 108545 | |
| 108546 | assert( pNew->u.btree.nEq<=pProbe->nColumn ); |
| 108547 | if( pNew->u.btree.nEq < pProbe->nColumn ){ |
| 108548 | iCol = pProbe->aiColumn[pNew->u.btree.nEq]; |
| 108549 | nRowEst = whereCost(pProbe->aiRowEst[pNew->u.btree.nEq+1]); |
| 108550 | }else{ |
| 108551 | iCol = -1; |
| 108552 | nRowEst = 0; |
| 108553 | } |
| 108554 | pTerm = whereScanInit(&scan, pBuilder->pWC, pSrc->iCursor, iCol, |
| @@ -109422,10 +109423,14 @@ | |
| 109422 | |
| 109423 | /* |
| 109424 | ** Given the list of WhereLoop objects on pWInfo->pLoops, this routine |
| 109425 | ** attempts to find the lowest cost path that visits each WhereLoop |
| 109426 | ** once. This path is then loaded into the pWInfo->a[].pWLoop fields. |
| 109427 | ** |
| 109428 | ** Return SQLITE_OK on success or SQLITE_NOMEM of a memory allocation |
| 109429 | ** error occurs. |
| 109430 | */ |
| 109431 | static int wherePathSolver(WhereInfo *pWInfo, WhereCost nRowEst){ |
| @@ -110027,11 +110032,11 @@ | |
| 110027 | #endif |
| 110028 | |
| 110029 | wherePathSolver(pWInfo, 0); |
| 110030 | if( db->mallocFailed ) goto whereBeginError; |
| 110031 | if( pWInfo->pOrderBy ){ |
| 110032 | wherePathSolver(pWInfo, pWInfo->nRowOut); |
| 110033 | if( db->mallocFailed ) goto whereBeginError; |
| 110034 | } |
| 110035 | } |
| 110036 | if( pWInfo->pOrderBy==0 && (db->flags & SQLITE_ReverseOrder)!=0 ){ |
| 110037 | pWInfo->revMask = (Bitmask)(-1); |
| 110038 |
| --- src/sqlite3.c | |
| +++ src/sqlite3.c | |
| @@ -670,11 +670,11 @@ | |
| 670 | ** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
| 671 | ** [sqlite_version()] and [sqlite_source_id()]. |
| 672 | */ |
| 673 | #define SQLITE_VERSION "3.7.17" |
| 674 | #define SQLITE_VERSION_NUMBER 3007017 |
| 675 | #define SQLITE_SOURCE_ID "2013-06-18 20:06:23 4fbb0c4d26c54aaefbe5397cde2a0b9d2ce3885f" |
| 676 | |
| 677 | /* |
| 678 | ** CAPI3REF: Run-Time Library Version Numbers |
| 679 | ** KEYWORDS: sqlite3_version, sqlite3_sourceid |
| 680 | ** |
| @@ -95705,11 +95705,11 @@ | |
| 95705 | } |
| 95706 | |
| 95707 | sqlite3VtabUnlockList(db); |
| 95708 | |
| 95709 | pParse->db = db; |
| 95710 | pParse->nQueryLoop = 0; /* Logarithmic, so 0 really means 1 */ |
| 95711 | if( nBytes>=0 && (nBytes==0 || zSql[nBytes-1]!=0) ){ |
| 95712 | char *zSqlCopy; |
| 95713 | int mxLen = db->aLimit[SQLITE_LIMIT_SQL_LENGTH]; |
| 95714 | testcase( nBytes==mxLen ); |
| 95715 | testcase( nBytes==mxLen+1 ); |
| @@ -95727,11 +95727,11 @@ | |
| 95727 | pParse->zTail = &zSql[nBytes]; |
| 95728 | } |
| 95729 | }else{ |
| 95730 | sqlite3RunParser(pParse, zSql, &zErrMsg); |
| 95731 | } |
| 95732 | assert( 0==pParse->nQueryLoop ); |
| 95733 | |
| 95734 | if( db->mallocFailed ){ |
| 95735 | pParse->rc = SQLITE_NOMEM; |
| 95736 | } |
| 95737 | if( pParse->rc==SQLITE_DONE ) pParse->rc = SQLITE_OK; |
| @@ -108545,10 +108545,11 @@ | |
| 108545 | |
| 108546 | assert( pNew->u.btree.nEq<=pProbe->nColumn ); |
| 108547 | if( pNew->u.btree.nEq < pProbe->nColumn ){ |
| 108548 | iCol = pProbe->aiColumn[pNew->u.btree.nEq]; |
| 108549 | nRowEst = whereCost(pProbe->aiRowEst[pNew->u.btree.nEq+1]); |
| 108550 | if( nRowEst==0 && pProbe->onError==OE_None ) nRowEst = 1; |
| 108551 | }else{ |
| 108552 | iCol = -1; |
| 108553 | nRowEst = 0; |
| 108554 | } |
| 108555 | pTerm = whereScanInit(&scan, pBuilder->pWC, pSrc->iCursor, iCol, |
| @@ -109422,10 +109423,14 @@ | |
| 109423 | |
| 109424 | /* |
| 109425 | ** Given the list of WhereLoop objects on pWInfo->pLoops, this routine |
| 109426 | ** attempts to find the lowest cost path that visits each WhereLoop |
| 109427 | ** once. This path is then loaded into the pWInfo->a[].pWLoop fields. |
| 109428 | ** |
| 109429 | ** Assume that the total number of output rows that will need to be sorted |
| 109430 | ** will be nRowEst (in the 10*log2 representation). Or, ignore sorting |
| 109431 | ** costs if nRowEst==0. |
| 109432 | ** |
| 109433 | ** Return SQLITE_OK on success or SQLITE_NOMEM of a memory allocation |
| 109434 | ** error occurs. |
| 109435 | */ |
| 109436 | static int wherePathSolver(WhereInfo *pWInfo, WhereCost nRowEst){ |
| @@ -110027,11 +110032,11 @@ | |
| 110032 | #endif |
| 110033 | |
| 110034 | wherePathSolver(pWInfo, 0); |
| 110035 | if( db->mallocFailed ) goto whereBeginError; |
| 110036 | if( pWInfo->pOrderBy ){ |
| 110037 | wherePathSolver(pWInfo, pWInfo->nRowOut+1); |
| 110038 | if( db->mallocFailed ) goto whereBeginError; |
| 110039 | } |
| 110040 | } |
| 110041 | if( pWInfo->pOrderBy==0 && (db->flags & SQLITE_ReverseOrder)!=0 ){ |
| 110042 | pWInfo->revMask = (Bitmask)(-1); |
| 110043 |
+1
-1
| --- src/sqlite3.h | ||
| +++ src/sqlite3.h | ||
| @@ -107,11 +107,11 @@ | ||
| 107 | 107 | ** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
| 108 | 108 | ** [sqlite_version()] and [sqlite_source_id()]. |
| 109 | 109 | */ |
| 110 | 110 | #define SQLITE_VERSION "3.7.17" |
| 111 | 111 | #define SQLITE_VERSION_NUMBER 3007017 |
| 112 | -#define SQLITE_SOURCE_ID "2013-06-18 01:52:41 4c6d58d75d51e1ce829aec214617c3a89e784a2d" | |
| 112 | +#define SQLITE_SOURCE_ID "2013-06-18 20:06:23 4fbb0c4d26c54aaefbe5397cde2a0b9d2ce3885f" | |
| 113 | 113 | |
| 114 | 114 | /* |
| 115 | 115 | ** CAPI3REF: Run-Time Library Version Numbers |
| 116 | 116 | ** KEYWORDS: sqlite3_version, sqlite3_sourceid |
| 117 | 117 | ** |
| 118 | 118 |
| --- src/sqlite3.h | |
| +++ src/sqlite3.h | |
| @@ -107,11 +107,11 @@ | |
| 107 | ** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
| 108 | ** [sqlite_version()] and [sqlite_source_id()]. |
| 109 | */ |
| 110 | #define SQLITE_VERSION "3.7.17" |
| 111 | #define SQLITE_VERSION_NUMBER 3007017 |
| 112 | #define SQLITE_SOURCE_ID "2013-06-18 01:52:41 4c6d58d75d51e1ce829aec214617c3a89e784a2d" |
| 113 | |
| 114 | /* |
| 115 | ** CAPI3REF: Run-Time Library Version Numbers |
| 116 | ** KEYWORDS: sqlite3_version, sqlite3_sourceid |
| 117 | ** |
| 118 |
| --- src/sqlite3.h | |
| +++ src/sqlite3.h | |
| @@ -107,11 +107,11 @@ | |
| 107 | ** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
| 108 | ** [sqlite_version()] and [sqlite_source_id()]. |
| 109 | */ |
| 110 | #define SQLITE_VERSION "3.7.17" |
| 111 | #define SQLITE_VERSION_NUMBER 3007017 |
| 112 | #define SQLITE_SOURCE_ID "2013-06-18 20:06:23 4fbb0c4d26c54aaefbe5397cde2a0b9d2ce3885f" |
| 113 | |
| 114 | /* |
| 115 | ** CAPI3REF: Run-Time Library Version Numbers |
| 116 | ** KEYWORDS: sqlite3_version, sqlite3_sourceid |
| 117 | ** |
| 118 |
+1
-1
| --- src/sqlite3.h | ||
| +++ src/sqlite3.h | ||
| @@ -107,11 +107,11 @@ | ||
| 107 | 107 | ** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
| 108 | 108 | ** [sqlite_version()] and [sqlite_source_id()]. |
| 109 | 109 | */ |
| 110 | 110 | #define SQLITE_VERSION "3.7.17" |
| 111 | 111 | #define SQLITE_VERSION_NUMBER 3007017 |
| 112 | -#define SQLITE_SOURCE_ID "2013-06-18 01:52:41 4c6d58d75d51e1ce829aec214617c3a89e784a2d" | |
| 112 | +#define SQLITE_SOURCE_ID "2013-06-18 20:06:23 4fbb0c4d26c54aaefbe5397cde2a0b9d2ce3885f" | |
| 113 | 113 | |
| 114 | 114 | /* |
| 115 | 115 | ** CAPI3REF: Run-Time Library Version Numbers |
| 116 | 116 | ** KEYWORDS: sqlite3_version, sqlite3_sourceid |
| 117 | 117 | ** |
| 118 | 118 |
| --- src/sqlite3.h | |
| +++ src/sqlite3.h | |
| @@ -107,11 +107,11 @@ | |
| 107 | ** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
| 108 | ** [sqlite_version()] and [sqlite_source_id()]. |
| 109 | */ |
| 110 | #define SQLITE_VERSION "3.7.17" |
| 111 | #define SQLITE_VERSION_NUMBER 3007017 |
| 112 | #define SQLITE_SOURCE_ID "2013-06-18 01:52:41 4c6d58d75d51e1ce829aec214617c3a89e784a2d" |
| 113 | |
| 114 | /* |
| 115 | ** CAPI3REF: Run-Time Library Version Numbers |
| 116 | ** KEYWORDS: sqlite3_version, sqlite3_sourceid |
| 117 | ** |
| 118 |
| --- src/sqlite3.h | |
| +++ src/sqlite3.h | |
| @@ -107,11 +107,11 @@ | |
| 107 | ** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
| 108 | ** [sqlite_version()] and [sqlite_source_id()]. |
| 109 | */ |
| 110 | #define SQLITE_VERSION "3.7.17" |
| 111 | #define SQLITE_VERSION_NUMBER 3007017 |
| 112 | #define SQLITE_SOURCE_ID "2013-06-18 20:06:23 4fbb0c4d26c54aaefbe5397cde2a0b9d2ce3885f" |
| 113 | |
| 114 | /* |
| 115 | ** CAPI3REF: Run-Time Library Version Numbers |
| 116 | ** KEYWORDS: sqlite3_version, sqlite3_sourceid |
| 117 | ** |
| 118 |
+2
-2
| --- www/changes.wiki | ||
| +++ www/changes.wiki | ||
| @@ -1,8 +1,8 @@ | ||
| 1 | 1 | <title>Change Log</title> |
| 2 | 2 | |
| 3 | -<h2>Changes For Version 1.26 (as yet unreleased)</h2> | |
| 3 | +<h2>Changes For Version 1.26 (2013-06-18)</h2> | |
| 4 | 4 | * The argument to the --port option for the [/help?cmd=ui | fossil ui] and |
| 5 | 5 | [/help?cmd=server | fossil server] commands can take an IP address in addition |
| 6 | 6 | to the port number, causing Fossil to bind to just that one IP address. |
| 7 | 7 | * After prompting for a password, also ask if that password should be |
| 8 | 8 | remembered. |
| @@ -13,11 +13,11 @@ | ||
| 13 | 13 | * The markdown formatter is now available by default and can be used for |
| 14 | 14 | tickets, wiki, and embedded documentation. |
| 15 | 15 | * Add subcommands "fossil bisect log" and "fossil bisect status" to the |
| 16 | 16 | [/help?cmd=bisect | fossil bisect] command, as well as other bisect enhancements. |
| 17 | 17 | * Enhanced defenses that prevent spiders from using excessive CPU and bandwidth. |
| 18 | - * Consistent us of the -n or --dry-run command line options. | |
| 18 | + * Consistent use of the -n or --dry-run command line options. | |
| 19 | 19 | * Win32: Fossil now understands Cygwin paths containing one or more of |
| 20 | 20 | the characters <nowiki>"*:<>?|</nowiki>. Those are normally forbidden in |
| 21 | 21 | win32. This means that the win32 fossil.exe is better usable in a Cygwin |
| 22 | 22 | environment. See |
| 23 | 23 | [http://cygwin.com/cygwin-ug-net/using-specialnames.html#pathnames-specialchars]. |
| 24 | 24 |
| --- www/changes.wiki | |
| +++ www/changes.wiki | |
| @@ -1,8 +1,8 @@ | |
| 1 | <title>Change Log</title> |
| 2 | |
| 3 | <h2>Changes For Version 1.26 (as yet unreleased)</h2> |
| 4 | * The argument to the --port option for the [/help?cmd=ui | fossil ui] and |
| 5 | [/help?cmd=server | fossil server] commands can take an IP address in addition |
| 6 | to the port number, causing Fossil to bind to just that one IP address. |
| 7 | * After prompting for a password, also ask if that password should be |
| 8 | remembered. |
| @@ -13,11 +13,11 @@ | |
| 13 | * The markdown formatter is now available by default and can be used for |
| 14 | tickets, wiki, and embedded documentation. |
| 15 | * Add subcommands "fossil bisect log" and "fossil bisect status" to the |
| 16 | [/help?cmd=bisect | fossil bisect] command, as well as other bisect enhancements. |
| 17 | * Enhanced defenses that prevent spiders from using excessive CPU and bandwidth. |
| 18 | * Consistent us of the -n or --dry-run command line options. |
| 19 | * Win32: Fossil now understands Cygwin paths containing one or more of |
| 20 | the characters <nowiki>"*:<>?|</nowiki>. Those are normally forbidden in |
| 21 | win32. This means that the win32 fossil.exe is better usable in a Cygwin |
| 22 | environment. See |
| 23 | [http://cygwin.com/cygwin-ug-net/using-specialnames.html#pathnames-specialchars]. |
| 24 |
| --- www/changes.wiki | |
| +++ www/changes.wiki | |
| @@ -1,8 +1,8 @@ | |
| 1 | <title>Change Log</title> |
| 2 | |
| 3 | <h2>Changes For Version 1.26 (2013-06-18)</h2> |
| 4 | * The argument to the --port option for the [/help?cmd=ui | fossil ui] and |
| 5 | [/help?cmd=server | fossil server] commands can take an IP address in addition |
| 6 | to the port number, causing Fossil to bind to just that one IP address. |
| 7 | * After prompting for a password, also ask if that password should be |
| 8 | remembered. |
| @@ -13,11 +13,11 @@ | |
| 13 | * The markdown formatter is now available by default and can be used for |
| 14 | tickets, wiki, and embedded documentation. |
| 15 | * Add subcommands "fossil bisect log" and "fossil bisect status" to the |
| 16 | [/help?cmd=bisect | fossil bisect] command, as well as other bisect enhancements. |
| 17 | * Enhanced defenses that prevent spiders from using excessive CPU and bandwidth. |
| 18 | * Consistent use of the -n or --dry-run command line options. |
| 19 | * Win32: Fossil now understands Cygwin paths containing one or more of |
| 20 | the characters <nowiki>"*:<>?|</nowiki>. Those are normally forbidden in |
| 21 | win32. This means that the win32 fossil.exe is better usable in a Cygwin |
| 22 | environment. See |
| 23 | [http://cygwin.com/cygwin-ug-net/using-specialnames.html#pathnames-specialchars]. |
| 24 |