mirror of
https://github.com/DBD-SQLite/DBD-SQLite
synced 2025-06-07 14:19:10 -04:00
updated SQLite to 3.8.8.1
This commit is contained in:
parent
a3d4b3ae45
commit
2e3106166c
2 changed files with 48 additions and 9 deletions
53
sqlite3.c
53
sqlite3.c
|
@ -1,6 +1,6 @@
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
** This file is an amalgamation of many separate C source files from SQLite
|
** This file is an amalgamation of many separate C source files from SQLite
|
||||||
** version 3.8.8. By combining all the individual C code files into this
|
** version 3.8.8.1. By combining all the individual C code files into this
|
||||||
** single large file, the entire code can be compiled as a single translation
|
** single large file, the entire code can be compiled as a single translation
|
||||||
** unit. This allows many compilers to do optimizations that would not be
|
** unit. This allows many compilers to do optimizations that would not be
|
||||||
** possible if the files were compiled separately. Performance improvements
|
** possible if the files were compiled separately. Performance improvements
|
||||||
|
@ -278,9 +278,9 @@ extern "C" {
|
||||||
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
|
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
|
||||||
** [sqlite_version()] and [sqlite_source_id()].
|
** [sqlite_version()] and [sqlite_source_id()].
|
||||||
*/
|
*/
|
||||||
#define SQLITE_VERSION "3.8.8"
|
#define SQLITE_VERSION "3.8.8.1"
|
||||||
#define SQLITE_VERSION_NUMBER 3008008
|
#define SQLITE_VERSION_NUMBER 3008008
|
||||||
#define SQLITE_SOURCE_ID "2015-01-16 12:08:06 7d68a42face3ab14ed88407d4331872f5b243fdf"
|
#define SQLITE_SOURCE_ID "2015-01-20 16:51:25 f73337e3e289915a76ca96e7a05a1a8d4e890d55"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Run-Time Library Version Numbers
|
** CAPI3REF: Run-Time Library Version Numbers
|
||||||
|
@ -67498,6 +67498,41 @@ debugCompareEnd:
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if SQLITE_DEBUG
|
||||||
|
/*
|
||||||
|
** Count the number of fields (a.k.a. columns) in the record given by
|
||||||
|
** pKey,nKey. The verify that this count is less than or equal to the
|
||||||
|
** limit given by pKeyInfo->nField + pKeyInfo->nXField.
|
||||||
|
**
|
||||||
|
** If this constraint is not satisfied, it means that the high-speed
|
||||||
|
** vdbeRecordCompareInt() and vdbeRecordCompareString() routines will
|
||||||
|
** not work correctly. If this assert() ever fires, it probably means
|
||||||
|
** that the KeyInfo.nField or KeyInfo.nXField values were computed
|
||||||
|
** incorrectly.
|
||||||
|
*/
|
||||||
|
static void vdbeAssertFieldCountWithinLimits(
|
||||||
|
int nKey, const void *pKey, /* The record to verify */
|
||||||
|
const KeyInfo *pKeyInfo /* Compare size with this KeyInfo */
|
||||||
|
){
|
||||||
|
int nField = 0;
|
||||||
|
u32 szHdr;
|
||||||
|
u32 idx;
|
||||||
|
u32 notUsed;
|
||||||
|
const unsigned char *aKey = (const unsigned char*)pKey;
|
||||||
|
|
||||||
|
if( CORRUPT_DB ) return;
|
||||||
|
idx = getVarint32(aKey, szHdr);
|
||||||
|
assert( szHdr<=nKey );
|
||||||
|
while( idx<szHdr ){
|
||||||
|
idx += getVarint32(aKey+idx, notUsed);
|
||||||
|
nField++;
|
||||||
|
}
|
||||||
|
assert( nField <= pKeyInfo->nField+pKeyInfo->nXField );
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
# define vdbeAssertFieldCountWithinLimits(A,B,C)
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Both *pMem1 and *pMem2 contain string values. Compare the two values
|
** Both *pMem1 and *pMem2 contain string values. Compare the two values
|
||||||
** using the collation sequence pColl. As usual, return a negative , zero
|
** using the collation sequence pColl. As usual, return a negative , zero
|
||||||
|
@ -67909,6 +67944,7 @@ static int vdbeRecordCompareInt(
|
||||||
i64 v = pPKey2->aMem[0].u.i;
|
i64 v = pPKey2->aMem[0].u.i;
|
||||||
i64 lhs;
|
i64 lhs;
|
||||||
|
|
||||||
|
vdbeAssertFieldCountWithinLimits(nKey1, pKey1, pPKey2->pKeyInfo);
|
||||||
assert( (*(u8*)pKey1)<=0x3F || CORRUPT_DB );
|
assert( (*(u8*)pKey1)<=0x3F || CORRUPT_DB );
|
||||||
switch( serial_type ){
|
switch( serial_type ){
|
||||||
case 1: { /* 1-byte signed integer */
|
case 1: { /* 1-byte signed integer */
|
||||||
|
@ -67996,6 +68032,7 @@ static int vdbeRecordCompareString(
|
||||||
int serial_type;
|
int serial_type;
|
||||||
int res;
|
int res;
|
||||||
|
|
||||||
|
vdbeAssertFieldCountWithinLimits(nKey1, pKey1, pPKey2->pKeyInfo);
|
||||||
getVarint32(&aKey1[1], serial_type);
|
getVarint32(&aKey1[1], serial_type);
|
||||||
if( serial_type<12 ){
|
if( serial_type<12 ){
|
||||||
res = pPKey2->r1; /* (pKey1/nKey1) is a number or a null */
|
res = pPKey2->r1; /* (pKey1/nKey1) is a number or a null */
|
||||||
|
@ -105797,7 +105834,9 @@ static void pushOntoSorter(
|
||||||
pKI = pOp->p4.pKeyInfo;
|
pKI = pOp->p4.pKeyInfo;
|
||||||
memset(pKI->aSortOrder, 0, pKI->nField); /* Makes OP_Jump below testable */
|
memset(pKI->aSortOrder, 0, pKI->nField); /* Makes OP_Jump below testable */
|
||||||
sqlite3VdbeChangeP4(v, -1, (char*)pKI, P4_KEYINFO);
|
sqlite3VdbeChangeP4(v, -1, (char*)pKI, P4_KEYINFO);
|
||||||
pOp->p4.pKeyInfo = keyInfoFromExprList(pParse, pSort->pOrderBy, nOBSat, 1);
|
testcase( pKI->nXField>2 );
|
||||||
|
pOp->p4.pKeyInfo = keyInfoFromExprList(pParse, pSort->pOrderBy, nOBSat,
|
||||||
|
pKI->nXField-1);
|
||||||
addrJmp = sqlite3VdbeCurrentAddr(v);
|
addrJmp = sqlite3VdbeCurrentAddr(v);
|
||||||
sqlite3VdbeAddOp3(v, OP_Jump, addrJmp+1, 0, addrJmp+1); VdbeCoverage(v);
|
sqlite3VdbeAddOp3(v, OP_Jump, addrJmp+1, 0, addrJmp+1); VdbeCoverage(v);
|
||||||
pSort->labelBkOut = sqlite3VdbeMakeLabel(v);
|
pSort->labelBkOut = sqlite3VdbeMakeLabel(v);
|
||||||
|
@ -106308,7 +106347,7 @@ static KeyInfo *keyInfoFromExprList(
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
nExpr = pList->nExpr;
|
nExpr = pList->nExpr;
|
||||||
pInfo = sqlite3KeyInfoAlloc(db, nExpr+nExtra-iStart, 1);
|
pInfo = sqlite3KeyInfoAlloc(db, nExpr-iStart, nExtra+1);
|
||||||
if( pInfo ){
|
if( pInfo ){
|
||||||
assert( sqlite3KeyInfoIsWriteable(pInfo) );
|
assert( sqlite3KeyInfoIsWriteable(pInfo) );
|
||||||
for(i=iStart, pItem=pList->a+iStart; i<nExpr; i++, pItem++){
|
for(i=iStart, pItem=pList->a+iStart; i<nExpr; i++, pItem++){
|
||||||
|
@ -110178,7 +110217,7 @@ SQLITE_PRIVATE int sqlite3Select(
|
||||||
*/
|
*/
|
||||||
if( sSort.pOrderBy ){
|
if( sSort.pOrderBy ){
|
||||||
KeyInfo *pKeyInfo;
|
KeyInfo *pKeyInfo;
|
||||||
pKeyInfo = keyInfoFromExprList(pParse, sSort.pOrderBy, 0, 0);
|
pKeyInfo = keyInfoFromExprList(pParse, sSort.pOrderBy, 0, pEList->nExpr);
|
||||||
sSort.iECursor = pParse->nTab++;
|
sSort.iECursor = pParse->nTab++;
|
||||||
sSort.addrSortIndex =
|
sSort.addrSortIndex =
|
||||||
sqlite3VdbeAddOp4(v, OP_OpenEphemeral,
|
sqlite3VdbeAddOp4(v, OP_OpenEphemeral,
|
||||||
|
@ -110352,7 +110391,7 @@ SQLITE_PRIVATE int sqlite3Select(
|
||||||
** will be converted into a Noop.
|
** will be converted into a Noop.
|
||||||
*/
|
*/
|
||||||
sAggInfo.sortingIdx = pParse->nTab++;
|
sAggInfo.sortingIdx = pParse->nTab++;
|
||||||
pKeyInfo = keyInfoFromExprList(pParse, pGroupBy, 0, 0);
|
pKeyInfo = keyInfoFromExprList(pParse, pGroupBy, 0, sAggInfo.nColumn);
|
||||||
addrSortingIdx = sqlite3VdbeAddOp4(v, OP_SorterOpen,
|
addrSortingIdx = sqlite3VdbeAddOp4(v, OP_SorterOpen,
|
||||||
sAggInfo.sortingIdx, sAggInfo.nSortingColumn,
|
sAggInfo.sortingIdx, sAggInfo.nSortingColumn,
|
||||||
0, (char*)pKeyInfo, P4_KEYINFO);
|
0, (char*)pKeyInfo, P4_KEYINFO);
|
||||||
|
|
|
@ -107,9 +107,9 @@ extern "C" {
|
||||||
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
|
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
|
||||||
** [sqlite_version()] and [sqlite_source_id()].
|
** [sqlite_version()] and [sqlite_source_id()].
|
||||||
*/
|
*/
|
||||||
#define SQLITE_VERSION "3.8.8"
|
#define SQLITE_VERSION "3.8.8.1"
|
||||||
#define SQLITE_VERSION_NUMBER 3008008
|
#define SQLITE_VERSION_NUMBER 3008008
|
||||||
#define SQLITE_SOURCE_ID "2015-01-16 12:08:06 7d68a42face3ab14ed88407d4331872f5b243fdf"
|
#define SQLITE_SOURCE_ID "2015-01-20 16:51:25 f73337e3e289915a76ca96e7a05a1a8d4e890d55"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Run-Time Library Version Numbers
|
** CAPI3REF: Run-Time Library Version Numbers
|
||||||
|
|
Loading…
Add table
Reference in a new issue