]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Remove the encoding argument from sqlite3VdbeSerialGet. Use the 32-bit
authordrh <drh@noemail.net>
Fri, 28 May 2004 01:39:01 +0000 (01:39 +0000)
committerdrh <drh@noemail.net>
Fri, 28 May 2004 01:39:01 +0000 (01:39 +0000)
version of sqlite3GetVarint for schema-level parameters. (CVS 1480)

FossilOrigin-Name: 321f8c463520e99681de878b743027c570b73e35

manifest
manifest.uuid
src/vdbe.c
src/vdbeInt.h
src/vdbeaux.c

index 77d7123095a118690daff1852c2dcc13faf81779..4b3bcf03bed993c916bbdd6c34a4e11254454856 100644 (file)
--- 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
index 390f1d9cb5580f80d2aa1e42c32fad725959e94f..c4b14adb2c930d1909427a26bade3833cc6ddbdc 100644 (file)
@@ -1 +1 @@
-203af2b2e3a25f4fe0e128e350c21834cad0bd7f
\ No newline at end of file
+321f8c463520e99681de878b743027c570b73e35
\ No newline at end of file
index 3930fd691976002777d4232f01cbce88bc4b498f..c40740589912e99f2594ad295c96557fbeb0dc6d 100644 (file)
@@ -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; k<n && i>0; 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;
index 9e8abcbcb9c2c4e18f46300e57df2c9aca98fdd3..5244a4d43a4b6e37dc20b52d0a007fac841bba63 100644 (file)
@@ -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*);
index 2fd31b7374a73af1e292353952c20d8c1f9916fe..0873dd0ae1ccc38a4ca0a7cf83c131bcbd4023d2 100644 (file)
@@ -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<nKey1 && offset2<nKey2 ){
     Mem mem1;
     Mem mem2;
-    u64 serial_type1;
-    u64 serial_type2;
+    u32 serial_type1;
+    u32 serial_type2;
 
     /* Read the serial types for the next element in each key. */
-    offset1 += sqlite3GetVarint(&aKey1[offset1], &serial_type1);
-    offset2 += sqlite3GetVarint(&aKey2[offset2], &serial_type2);
+    offset1 += sqlite3GetVarint32(&aKey1[offset1], &serial_type1);
+    offset2 += sqlite3GetVarint32(&aKey2[offset2], &serial_type2);
 
     /* If either of the varints just read in are 0 (not a type), then
     ** this is the end of the keys. The remaining data in each key is
@@ -1358,8 +1355,8 @@ int sqlite3VdbeKeyCompare(
     */
     if( !serial_type1 || !serial_type2 ){
       assert( !serial_type1 && !serial_type2 );
-      sqlite3GetVarint(&aKey1[offset1], &serial_type1);
-      sqlite3GetVarint(&aKey2[offset2], &serial_type2);
+      sqlite3GetVarint32(&aKey1[offset1], &serial_type1);
+      sqlite3GetVarint32(&aKey2[offset2], &serial_type2);
       if( serial_type1 < serial_type2 ){
         rc = -1;
       }else if( serial_type1 > 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 ){