Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Add testcase() macros beside each sqlite3_log() call to make sure it is tested with both logging enable and disabled. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
1168763d2cd96acfa0488198e8bc82f0 |
User & Date: | drh 2010-02-24 21:44:07.000 |
References
2010-02-25
| ||
02:32 | Merge in all of the logging enhancements. This is a cherrypick merge of the following check-ins: [103321e37a], [a8076aede3], [6d910245ad], [7c4cca6d1a], [edea3bb740], [1a6d4bb130], [a8c984c1d6], [69a493182f], and [1168763d2c]. (check-in: 46f406b202 user: drh tags: branch-3.6.22) | |
Context
2010-02-25
| ||
04:15 | Make sure the ON clause of a LEFT JOIN does not cause an index to be used to speed access to a table to the left of the join. Ticket [ebdbadade5] (check-in: f0ae251abb user: drh tags: trunk) | |
2010-02-24
| ||
21:44 | Add testcase() macros beside each sqlite3_log() call to make sure it is tested with both logging enable and disabled. (check-in: 1168763d2c user: drh tags: trunk) | |
19:36 | Changes to compile time option diags to report values for some defines. Added test cases to TCL test suite (ctime.test). (check-in: dd480f62af user: shaneh tags: trunk) | |
Changes
Changes to src/main.c.
︙ | ︙ | |||
1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 | ** 1. Serve as a convenient place to set a breakpoint in a debugger ** to detect when version error conditions occurs. ** ** 2. Invoke sqlite3_log() to provide the source code location where ** a low-level error is first detected. */ int sqlite3CorruptError(int lineno){ sqlite3_log(SQLITE_CORRUPT, "database corruption found by source line %d", lineno); return SQLITE_CORRUPT; } int sqlite3MisuseError(int lineno){ sqlite3_log(SQLITE_MISUSE, "misuse detected by source line %d", lineno); return SQLITE_MISUSE; } int sqlite3CantopenError(int lineno){ sqlite3_log(SQLITE_CANTOPEN, "cannot open file at source line %d", lineno); return SQLITE_CANTOPEN; } #ifndef SQLITE_OMIT_DEPRECATED /* | > > > | 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 | ** 1. Serve as a convenient place to set a breakpoint in a debugger ** to detect when version error conditions occurs. ** ** 2. Invoke sqlite3_log() to provide the source code location where ** a low-level error is first detected. */ int sqlite3CorruptError(int lineno){ testcase( sqlite3GlobalConfig.xLog!=0 ); sqlite3_log(SQLITE_CORRUPT, "database corruption found by source line %d", lineno); return SQLITE_CORRUPT; } int sqlite3MisuseError(int lineno){ testcase( sqlite3GlobalConfig.xLog!=0 ); sqlite3_log(SQLITE_MISUSE, "misuse detected by source line %d", lineno); return SQLITE_MISUSE; } int sqlite3CantopenError(int lineno){ testcase( sqlite3GlobalConfig.xLog!=0 ); sqlite3_log(SQLITE_CANTOPEN, "cannot open file at source line %d", lineno); return SQLITE_CANTOPEN; } #ifndef SQLITE_OMIT_DEPRECATED /* |
︙ | ︙ |
Changes to src/mem1.c.
︙ | ︙ | |||
39 40 41 42 43 44 45 46 47 48 49 50 51 52 | assert( nByte>0 ); nByte = ROUND8(nByte); p = malloc( nByte+8 ); if( p ){ p[0] = nByte; p++; }else{ sqlite3_log(SQLITE_NOMEM, "failed to allocate %u bytes of memory", nByte); } return (void *)p; } /* ** Like free() but works for allocations obtained from sqlite3MemMalloc() | > | 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | assert( nByte>0 ); nByte = ROUND8(nByte); p = malloc( nByte+8 ); if( p ){ p[0] = nByte; p++; }else{ testcase( sqlite3GlobalConfig.xLog!=0 ); sqlite3_log(SQLITE_NOMEM, "failed to allocate %u bytes of memory", nByte); } return (void *)p; } /* ** Like free() but works for allocations obtained from sqlite3MemMalloc() |
︙ | ︙ | |||
91 92 93 94 95 96 97 98 99 100 101 102 103 104 | nByte = ROUND8(nByte); p--; p = realloc(p, nByte+8 ); if( p ){ p[0] = nByte; p++; }else{ sqlite3_log(SQLITE_NOMEM, "failed memory resize %u to %u bytes", sqlite3MemSize(pPrior), nByte); } return (void*)p; } | > | 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 | nByte = ROUND8(nByte); p--; p = realloc(p, nByte+8 ); if( p ){ p[0] = nByte; p++; }else{ testcase( sqlite3GlobalConfig.xLog!=0 ); sqlite3_log(SQLITE_NOMEM, "failed memory resize %u to %u bytes", sqlite3MemSize(pPrior), nByte); } return (void*)p; } |
︙ | ︙ |
Changes to src/mem5.c.
︙ | ︙ | |||
265 266 267 268 269 270 271 272 273 274 275 276 277 278 | /* Make sure mem5.aiFreelist[iLogsize] contains at least one free ** block. If not, then split a block of the next larger power of ** two in order to create a new free block of size iLogsize. */ for(iBin=iLogsize; mem5.aiFreelist[iBin]<0 && iBin<=LOGMAX; iBin++){} if( iBin>LOGMAX ){ sqlite3_log(SQLITE_NOMEM, "failed to allocate %u bytes", nByte); return 0; } i = memsys5UnlinkFirst(iBin); while( iBin>iLogsize ){ int newSize; | > | 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 | /* Make sure mem5.aiFreelist[iLogsize] contains at least one free ** block. If not, then split a block of the next larger power of ** two in order to create a new free block of size iLogsize. */ for(iBin=iLogsize; mem5.aiFreelist[iBin]<0 && iBin<=LOGMAX; iBin++){} if( iBin>LOGMAX ){ testcase( sqlite3GlobalConfig.xLog!=0 ); sqlite3_log(SQLITE_NOMEM, "failed to allocate %u bytes", nByte); return 0; } i = memsys5UnlinkFirst(iBin); while( iBin>iLogsize ){ int newSize; |
︙ | ︙ |
Changes to src/util.c.
︙ | ︙ | |||
1053 1054 1055 1056 1057 1058 1059 | } int sqlite3SafetyCheckSickOrOk(sqlite3 *db){ u32 magic; magic = db->magic; if( magic!=SQLITE_MAGIC_SICK && magic!=SQLITE_MAGIC_OPEN && magic!=SQLITE_MAGIC_BUSY ){ | | | 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 | } int sqlite3SafetyCheckSickOrOk(sqlite3 *db){ u32 magic; magic = db->magic; if( magic!=SQLITE_MAGIC_SICK && magic!=SQLITE_MAGIC_OPEN && magic!=SQLITE_MAGIC_BUSY ){ logBadConnection("invalid"); return 0; }else{ return 1; } } |
Changes to src/vdbe.c.
︙ | ︙ | |||
845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 | p->rc = pOp->p1; p->errorAction = (u8)pOp->p2; p->pc = pc; if( pOp->p4.z ){ assert( p->rc!=SQLITE_OK ); sqlite3SetString(&p->zErrMsg, db, "%s", pOp->p4.z); sqlite3_log(pOp->p1, "abort at %d in [%s]: %s", pc, p->zSql, pOp->p4.z); }else if( p->rc ){ sqlite3_log(pOp->p1, "constraint failed at %d in [%s]", pc, p->zSql); } rc = sqlite3VdbeHalt(p); assert( rc==SQLITE_BUSY || rc==SQLITE_OK || rc==SQLITE_ERROR ); if( rc==SQLITE_BUSY ){ p->rc = rc = SQLITE_BUSY; }else{ | > > | 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 | p->rc = pOp->p1; p->errorAction = (u8)pOp->p2; p->pc = pc; if( pOp->p4.z ){ assert( p->rc!=SQLITE_OK ); sqlite3SetString(&p->zErrMsg, db, "%s", pOp->p4.z); testcase( sqlite3GlobalConfig.xLog!=0 ); sqlite3_log(pOp->p1, "abort at %d in [%s]: %s", pc, p->zSql, pOp->p4.z); }else if( p->rc ){ testcase( sqlite3GlobalConfig.xLog!=0 ); sqlite3_log(pOp->p1, "constraint failed at %d in [%s]", pc, p->zSql); } rc = sqlite3VdbeHalt(p); assert( rc==SQLITE_BUSY || rc==SQLITE_OK || rc==SQLITE_ERROR ); if( rc==SQLITE_BUSY ){ p->rc = rc = SQLITE_BUSY; }else{ |
︙ | ︙ |