Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Pretty-print blobs in vdbe-traces. (CVS 1428) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
5eb94c97657b34ed2df6455e23875e28 |
User & Date: | danielk1977 2004-05-21 10:49:48.000 |
Context
2004-05-21
| ||
11:39 | Eliminate some unused code (CVS 1429) (check-in: 550a53b3f2 user: danielk1977 tags: trunk) | |
10:49 | Pretty-print blobs in vdbe-traces. (CVS 1428) (check-in: 5eb94c9765 user: danielk1977 tags: trunk) | |
10:08 | Further work on the new API. All the functions to execute queries are there now. (CVS 1427) (check-in: fc94575d77 user: danielk1977 tags: trunk) | |
Changes
Changes to src/vdbe.c.
︙ | ︙ | |||
39 40 41 42 43 44 45 | ** ** Various scripts scan this source file in order to generate HTML ** documentation, headers files, or other derived files. The formatting ** of the code in this file is, therefore, important. See other comments ** in this file for details. If in doubt, do not deviate from existing ** commenting and indentation practices when changing or adding code. ** | | | 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | ** ** Various scripts scan this source file in order to generate HTML ** documentation, headers files, or other derived files. The formatting ** of the code in this file is, therefore, important. See other comments ** 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.314 2004/05/21 10:49:48 danielk1977 Exp $ */ #include "sqliteInt.h" #include "os.h" #include <ctype.h> #include "vdbeInt.h" /* |
︙ | ︙ | |||
836 837 838 839 840 841 842 843 844 845 846 847 848 849 | break; default: assert(0); } } /* ** Move data out of a btree key or data field and into a Mem structure. ** The data or key is taken from the entry that pCur is currently pointing ** to. offset and amt determine what portion of the data or key to retrieve. ** key is true to get the key or false to get data. The result is written ** into the pMem element. */ | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 | break; default: assert(0); } } /* ** Write a nice string representation of the contents of cell pMem ** into buffer zBuf, length nBuf. */ #ifndef NDEBUG void prettyPrintMem(Mem *pMem, char *zBuf, int nBuf){ char *zCsr = zBuf; int f = pMem->flags; if( f&MEM_Blob ){ int i; char c; if( f & MEM_Dyn ){ c = 'z'; assert( (f & (MEM_Static|MEM_Ephem))==0 ); }else if( f & MEM_Static ){ c = 't'; assert( (f & (MEM_Dyn|MEM_Ephem))==0 ); }else if( f & MEM_Ephem ){ c = 'e'; assert( (f & (MEM_Static|MEM_Dyn))==0 ); }else{ c = 's'; } zCsr += sprintf(zCsr, "%c[", c); for(i=0; i<16 && i<pMem->n; i++){ zCsr += sprintf(zCsr, "%02X ", ((int)pMem->z[i] & 0xFF)); } for(i=0; i<16 && i<pMem->n; i++){ char z = pMem->z[i]; if( z<32 || z>126 ) *zCsr++ = '.'; else *zCsr++ = z; } zCsr += sprintf(zCsr, "]"); } *zCsr = '\0'; } #endif /* ** Move data out of a btree key or data field and into a Mem structure. ** The data or key is taken from the entry that pCur is currently pointing ** to. offset and amt determine what portion of the data or key to retrieve. ** key is true to get the key or false to get data. The result is written ** into the pMem element. */ |
︙ | ︙ | |||
5270 5271 5272 5273 5274 5275 5276 | fprintf(p->trace, " NULL"); }else if( (pTos[i].flags & (MEM_Int|MEM_Str))==(MEM_Int|MEM_Str) ){ fprintf(p->trace, " si:%lld", pTos[i].i); }else if( pTos[i].flags & MEM_Int ){ fprintf(p->trace, " i:%lld", pTos[i].i); }else if( pTos[i].flags & MEM_Real ){ fprintf(p->trace, " r:%g", pTos[i].r); | | | 5312 5313 5314 5315 5316 5317 5318 5319 5320 5321 5322 5323 5324 5325 5326 | fprintf(p->trace, " NULL"); }else if( (pTos[i].flags & (MEM_Int|MEM_Str))==(MEM_Int|MEM_Str) ){ fprintf(p->trace, " si:%lld", pTos[i].i); }else if( pTos[i].flags & MEM_Int ){ fprintf(p->trace, " i:%lld", pTos[i].i); }else if( pTos[i].flags & MEM_Real ){ fprintf(p->trace, " r:%g", pTos[i].r); }else if( pTos[i].flags & MEM_Str ){ int j, k; char zBuf[100]; zBuf[0] = ' '; if( pTos[i].flags & MEM_Dyn ){ zBuf[1] = 'z'; assert( (pTos[i].flags & (MEM_Static|MEM_Ephem))==0 ); }else if( pTos[i].flags & MEM_Static ){ |
︙ | ︙ | |||
5303 5304 5305 5306 5307 5308 5309 | zBuf[k++] = '.'; } } zBuf[k++] = ']'; zBuf[k++] = 0; fprintf(p->trace, "%s", zBuf); }else{ | > > | > | 5345 5346 5347 5348 5349 5350 5351 5352 5353 5354 5355 5356 5357 5358 5359 5360 5361 5362 | zBuf[k++] = '.'; } } zBuf[k++] = ']'; zBuf[k++] = 0; fprintf(p->trace, "%s", zBuf); }else{ char zBuf[100]; prettyPrintMem(pTos, zBuf, 100); fprintf(p->trace, " "); fprintf(p->trace, zBuf); } } if( rc!=0 ) fprintf(p->trace," rc=%d",rc); fprintf(p->trace,"\n"); } #endif } /* The end of the for(;;) loop the loops through opcodes */ |
︙ | ︙ |
Changes to src/vdbeaux.c.
︙ | ︙ | |||
1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 | #endif } for(i=0; i<p->nVar; i++){ if( p->apVar[i].flags&MEM_Dyn ){ sqliteFree(p->apVar[i].z); } } sqliteFree(p->aOp); sqliteFree(p->aLabel); sqliteFree(p->aStack); p->magic = VDBE_MAGIC_DEAD; sqliteFree(p); } | > > > > > > | 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 | #endif } for(i=0; i<p->nVar; i++){ if( p->apVar[i].flags&MEM_Dyn ){ sqliteFree(p->apVar[i].z); } } if( p->azColName16 ){ for(i=0; i<p->nResColumn; i++){ if( p->azColName16[i] ) sqliteFree(p->azColName16[i]); } sqliteFree(p->azColName16); } sqliteFree(p->aOp); sqliteFree(p->aLabel); sqliteFree(p->aStack); p->magic = VDBE_MAGIC_DEAD; sqliteFree(p); } |
︙ | ︙ |