diff --git a/manifest b/manifest index 77d7123095..4b3bcf03be 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Add\sAPI\sfunctions\ssqlite3_open_varargs(),\ssqlite3_open16_varargs()\sand\nsqlite3_complete16().\s(CVS\s1479) -D 2004-05-27T23:56:16 +C Remove\sthe\sencoding\sargument\sfrom\ssqlite3VdbeSerialGet.\s\sUse\sthe\s32-bit\nversion\sof\ssqlite3GetVarint\sfor\sschema-level\sparameters.\s(CVS\s1480) +D 2004-05-28T01:39:01 F Makefile.in ab7b0d5118e2da97bac66be8684a1034e3500f5a F Makefile.linux-gcc b86a99c493a5bfb402d1d9178dcdc4bd4b32f906 F README f1de682fbbd94899d50aca13d387d1b3fd3be2dd @@ -69,11 +69,11 @@ F src/update.c 96461bcf4e946697e83c09c77c7e61b545a2f66e F src/utf.c 59b5c8f06a4384a9f64933d6c57a2de02ce3673b F src/util.c d299404febd509556e720fbecadd880756b0f899 F src/vacuum.c 8734f89742f246abd91dbd3e087fc153bddbfbad -F src/vdbe.c c068f9ab3d82906de297c1f20e50d601981328fb +F src/vdbe.c ea44f5bef30c7fd8eeb28fb4aa5f05875566b369 F src/vdbe.h e73f890e0f2a6c42b183d7d6937947930fe4fdeb -F src/vdbeInt.h 0c30699ea21371980bc278e4e3d17d80ced722df +F src/vdbeInt.h 57b649105aeab1e39e77bdb3de3c1560deddc69e F src/vdbeapi.c b0bb1f98c899ba00c8a5cbca612c2a28a1bb79de -F src/vdbeaux.c 408a8949e895d2bf491dbe5e7847f17a7071b185 +F src/vdbeaux.c 97f240824de0d347967ea1616c5f59bbcf933591 F src/vdbemem.c b487e8a903012de1c0b7f603e8efeede2b51b21d F src/where.c efe5d25fe18cd7381722457898cd863e84097a0c F test/all.test 569a92a8ee88f5300c057cc4a8f50fbbc69a3242 @@ -203,7 +203,7 @@ F www/sqlite.tcl 3c83b08cf9f18aa2d69453ff441a36c40e431604 F www/tclsqlite.tcl b9271d44dcf147a93c98f8ecf28c927307abd6da F www/vdbe.tcl 9b9095d4495f37697fd1935d10e14c6015e80aa1 F www/whentouse.tcl a8335bce47cc2fddb07f19052cb0cb4d9129a8e4 -P 0c4d138807f367d75b3fb5b2dadf206df725659f -R c4417647d8e1e01a4408e7060f25760a -U danielk1977 -Z c4d7bdcd4bae75cf8bc8d11709178bcb +P 203af2b2e3a25f4fe0e128e350c21834cad0bd7f +R 2b74d4b0c22d8325d92f20886c62da43 +U drh +Z e19993d4f4e147db54eb88d1ba253c94 diff --git a/manifest.uuid b/manifest.uuid index 390f1d9cb5..c4b14adb2c 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -203af2b2e3a25f4fe0e128e350c21834cad0bd7f \ No newline at end of file +321f8c463520e99681de878b743027c570b73e35 \ No newline at end of file diff --git a/src/vdbe.c b/src/vdbe.c index 3930fd6919..c407405899 100644 --- a/src/vdbe.c +++ b/src/vdbe.c @@ -43,7 +43,7 @@ ** in this file for details. If in doubt, do not deviate from existing ** commenting and indentation practices when changing or adding code. ** -** $Id: vdbe.c,v 1.341 2004/05/27 19:59:32 drh Exp $ +** $Id: vdbe.c,v 1.342 2004/05/28 01:39:01 drh Exp $ */ #include "sqliteInt.h" #include "os.h" @@ -1827,7 +1827,7 @@ case OP_Column: { BtCursor *pCrsr; /* The BTree cursor */ u32 *aType; /* aType[i] holds the numeric type of the i-th column */ u32 *aOffset; /* aOffset[i] is offset to start of data for i-th column */ - u64 nField; /* number of fields in the record */ + u32 nField; /* number of fields in the record */ u32 szHdr; /* Number of bytes in the record header */ int len; /* The length of the serialized data for the column */ int offset = 0; /* Offset into the data */ @@ -1974,7 +1974,8 @@ case OP_Column: { getBtreeMem(pCrsr, aOffset[p2], len, pC->keyAsData, &sMem); zData = sMem.z; } - sqlite3VdbeSerialGet(zData, aType[p2], pTos, p->db->enc); + sqlite3VdbeSerialGet(zData, aType[p2], pTos); + pTos->enc = db->enc; if( rc!=SQLITE_OK ){ goto abort_due_to_error; } @@ -2044,7 +2045,7 @@ case OP_MakeRecord: { ** out how much space is required for the new record. */ for(pRec=pData0; pRec<=pTos; pRec++){ - u64 serial_type; + u32 serial_type; if( zAffinity ){ applyAffinity(pRec, zAffinity[pRec-pData0], db->enc); } @@ -2070,7 +2071,7 @@ case OP_MakeRecord: { zCsr = zNewRecord; zCsr += sqlite3PutVarint(zCsr, nHdr); for(pRec=pData0; pRec<=pTos; pRec++){ - u64 serial_type = sqlite3VdbeSerialType(pRec); + u32 serial_type = sqlite3VdbeSerialType(pRec); zCsr += sqlite3PutVarint(zCsr, serial_type); /* serial type */ } for(pRec=pData0; pRec<=pTos; pRec++){ @@ -2167,7 +2168,7 @@ case OP_MakeIdxKey: { ** OP_MakeKey when P2 is 0 (used by DISTINCT). */ for(pRec=pData0; pRec<=pTos; pRec++){ - u64 serial_type; + u32 serial_type; if( zAffinity ){ applyAffinity(pRec, zAffinity[pRec-pData0], db->enc); } @@ -2205,7 +2206,7 @@ case OP_MakeIdxKey: { /* Build the key in the buffer pointed to by zKey. */ for(pRec=pData0; pRec<=pTos; pRec++){ - u64 serial_type = sqlite3VdbeSerialType(pRec); + u32 serial_type = sqlite3VdbeSerialType(pRec); offset += sqlite3PutVarint(&zKey[offset], serial_type); offset += sqlite3VdbeSerialPut(&zKey[offset], pRec); } @@ -3354,7 +3355,7 @@ case OP_Recno: { case OP_IdxColumn: { char *zData; i64 n; - u64 serial_type; + u32 serial_type; int len; int freeZData = 0; BtCursor *pCsr; @@ -3370,7 +3371,7 @@ case OP_IdxColumn: { zData = (char *)sqlite3BtreeKeyFetch(pCsr, n); assert( zData ); - len = sqlite3GetVarint(zData, &serial_type); + len = sqlite3GetVarint32(zData, &serial_type); n = sqlite3VdbeSerialTypeLen(serial_type); zData = (char *)sqlite3BtreeKeyFetch(pCsr, len+n); @@ -3389,7 +3390,8 @@ case OP_IdxColumn: { } pTos++; - sqlite3VdbeSerialGet(&zData[len], serial_type, pTos, p->db->enc); + sqlite3VdbeSerialGet(&zData[len], serial_type, pTos); + pTos->enc = db->enc; if( freeZData ){ sqliteFree(zData); } @@ -3708,7 +3710,7 @@ case OP_IdxRecno: { while( len && buf[len-1] ){ len--; } - sqlite3GetVarint(&buf[len], &sz); + sqlite3GetVarint32(&buf[len], &sz); pTos->flags = MEM_Int; pTos->i = sz; } @@ -3810,8 +3812,8 @@ case OP_IdxIsNull: { z = pTos->z; n = pTos->n; for(k=0; k0; i--){ - u64 serial_type; - k += sqlite3GetVarint(&z[k], &serial_type); + u32 serial_type; + k += sqlite3GetVarint32(&z[k], &serial_type); if( serial_type==6 ){ /* Serial type 6 is a NULL */ pc = pOp->p2-1; break; diff --git a/src/vdbeInt.h b/src/vdbeInt.h index 9e8abcbcb9..5244a4d43a 100644 --- a/src/vdbeInt.h +++ b/src/vdbeInt.h @@ -339,10 +339,10 @@ int sqlite3VdbeCursorMoveto(Cursor*); #if !defined(NDEBUG) || defined(VDBE_PROFILE) void sqlite3VdbePrintOp(FILE*, int, Op*); #endif -int sqlite3VdbeSerialTypeLen(u64); -u64 sqlite3VdbeSerialType(Mem *); -int sqlite3VdbeSerialPut(unsigned char *, Mem *); -int sqlite3VdbeSerialGet(const unsigned char *, u64, Mem *, u8 enc); +int sqlite3VdbeSerialTypeLen(u32); +u32 sqlite3VdbeSerialType(Mem*); +int sqlite3VdbeSerialPut(unsigned char*, Mem*); +int sqlite3VdbeSerialGet(const unsigned char*, u32, Mem*); int sqlite2BtreeKeyCompare(BtCursor *, const void *, int, int, int *); int sqlite3VdbeIdxKeyCompare(Cursor*, int , const unsigned char*, int*); diff --git a/src/vdbeaux.c b/src/vdbeaux.c index 2fd31b7374..0873dd0ae1 100644 --- a/src/vdbeaux.c +++ b/src/vdbeaux.c @@ -1163,7 +1163,7 @@ int sqlite3VdbeCursorMoveto(Cursor *p){ /* ** Return the serial-type for the value stored in pMem. */ -u64 sqlite3VdbeSerialType(Mem *pMem){ +u32 sqlite3VdbeSerialType(Mem *pMem){ int flags = pMem->flags; if( flags&MEM_Null ){ @@ -1194,7 +1194,7 @@ u64 sqlite3VdbeSerialType(Mem *pMem){ /* ** Return the length of the data corresponding to the supplied serial-type. */ -int sqlite3VdbeSerialTypeLen(u64 serial_type){ +int sqlite3VdbeSerialTypeLen(u32 serial_type){ assert( serial_type!=0 ); switch(serial_type){ case 6: return 0; /* NULL */ @@ -1214,7 +1214,7 @@ int sqlite3VdbeSerialTypeLen(u64 serial_type){ ** Return the number of bytes written. */ int sqlite3VdbeSerialPut(unsigned char *buf, Mem *pMem){ - u64 serial_type = sqlite3VdbeSerialType(pMem); + u32 serial_type = sqlite3VdbeSerialType(pMem); int len; assert( serial_type!=0 ); @@ -1254,9 +1254,8 @@ int sqlite3VdbeSerialPut(unsigned char *buf, Mem *pMem){ */ int sqlite3VdbeSerialGet( const unsigned char *buf, /* Buffer to deserialize from */ - u64 serial_type, /* Serial type to deserialize */ - Mem *pMem, /* Memory cell to write value into */ - u8 enc /* Text encoding. Used to determine nul term. character */ + u32 serial_type, /* Serial type to deserialize */ + Mem *pMem /* Memory cell to write value into */ ){ int len; @@ -1304,7 +1303,6 @@ int sqlite3VdbeSerialGet( pMem->n = len; if( serial_type&0x01 ){ pMem->flags = MEM_Str | MEM_Ephem; - pMem->enc = enc; }else{ pMem->flags = MEM_Blob | MEM_Ephem; } @@ -1336,7 +1334,6 @@ int sqlite3VdbeKeyCompare( int offset2 = 0; int i = 0; int rc = 0; - u8 enc = pKeyInfo->enc; const unsigned char *aKey1 = (const unsigned char *)pKey1; const unsigned char *aKey2 = (const unsigned char *)pKey2; @@ -1344,12 +1341,12 @@ int sqlite3VdbeKeyCompare( while( offset1 serial_type2 ){ @@ -1377,8 +1374,8 @@ int sqlite3VdbeKeyCompare( ** the file is corrupted. Then read the value from each key into mem1 ** and mem2 respectively. */ - offset1 += sqlite3VdbeSerialGet(&aKey1[offset1], serial_type1, &mem1, enc); - offset2 += sqlite3VdbeSerialGet(&aKey2[offset2], serial_type2, &mem2, enc); + offset1 += sqlite3VdbeSerialGet(&aKey1[offset1], serial_type1, &mem1); + offset2 += sqlite3VdbeSerialGet(&aKey2[offset2], serial_type2, &mem2); rc = sqlite3MemCompare(&mem1, &mem2, pKeyInfo->aColl[i]); if( mem1.flags&MEM_Dyn ){ @@ -1460,8 +1457,8 @@ int sqlite3VdbeRowCompare( ** the file is corrupted. Then read the value from each key into mem1 ** and mem2 respectively. */ - d1 += sqlite3VdbeSerialGet(&aKey1[d1], serial_type1, &mem1, 0); - d2 += sqlite3VdbeSerialGet(&aKey2[d2], serial_type2, &mem2, 0); + d1 += sqlite3VdbeSerialGet(&aKey1[d1], serial_type1, &mem1); + d2 += sqlite3VdbeSerialGet(&aKey2[d2], serial_type2, &mem2); rc = sqlite3MemCompare(&mem1, &mem2, pKeyInfo->aColl[i]); if( mem1.flags&MEM_Dyn ){