diff -r 28839de615b4 -r 26645d81f48d persistentstorage/sql/SRC/Server/SqlSrvStatementUtil.cpp --- a/persistentstorage/sql/SRC/Server/SqlSrvStatementUtil.cpp Thu Aug 19 11:36:21 2010 +0300 +++ b/persistentstorage/sql/SRC/Server/SqlSrvStatementUtil.cpp Tue Aug 31 16:57:14 2010 +0300 @@ -18,11 +18,16 @@ #include #include "sqlite3.h" #include "SqlSrvStatementUtil.h" -#include "SqlPanic.h" +#include "SqlAssert.h" #include "SqlSrvUtil.h" #include "SqlUtil.h" #include "SqliteSymbian.h" //sqlite3SymbianLastOsError() +#include "OstTraceDefinitions.h" #include "SqlSrvResourceProfiler.h" +#ifdef OST_TRACE_COMPILER_IN_USE +#include "SqlSrvStatementUtilTraces.h" +#endif +#include "SqlTraceDef.h" //The database names in all statements are quoted to avoid the "sql injection" threat. _LIT8(KPageCountPragma, "PRAGMA \"%S\".page_count\x0"); @@ -35,109 +40,6 @@ /////////////////////////////////////////////////////////////////////////////////////////////////////////////// -#ifdef _NOTIFY -static void PrintErrMsg8(TBool aCondition, sqlite3* aDbHandle, const char* aFuncNameZ, const TDesC8& aStmt) - { - if(!aCondition) - { - return; - } - TPtrC8 funcName8(reinterpret_cast (aFuncNameZ)); - TBuf<32> funcName; - funcName.Copy(funcName8); - RDebug::Print(_L("###%S\r\n"), &funcName); - TInt stmtLen = aStmt.Length(); - if(stmtLen > 0) - { - if(aStmt[stmtLen - 1] == 0) - { - --stmtLen; - } - HBufC* buf = HBufC::New(stmtLen); - if(buf) - { - TPtr sqlStmt = buf->Des(); - sqlStmt.Copy(aStmt.Left(stmtLen)); - if(sqlStmt.Length() > 250) - { - sqlStmt.SetLength(250); - } - RDebug::Print(_L("###\"%S\"\r\n"), &sqlStmt); - delete buf; - } - } - TBuf<16> tbuf; - Util::GetTimeStr(tbuf); - const void* errMsg = sqlite3_errmsg16(aDbHandle);//"errMsg" - zero terminated string - if(errMsg) - { - TPtrC msg(reinterpret_cast (errMsg));//terminating zero character excluded. - if(msg.Length() > 230) - { - msg.Set(msg.Left(230)); - } - RDebug::Print(_L("##%S#ErrMsg=%S\r\n"), &tbuf, &msg); - } - else - { - RDebug::Print(_L("##%S#ErrMsg=null\r\n"), &tbuf); - } - } - -static void PrintErrMsg16(TBool aCondition, sqlite3* aDbHandle, const char* aFuncNameZ, const TDesC16& aStmt) - { - if(!aCondition) - { - return; - } - TPtrC8 funcName8(reinterpret_cast (aFuncNameZ)); - TBuf<32> funcName; - funcName.Copy(funcName8); - RDebug::Print(_L("###%S\r\n"), &funcName); - TInt stmtLen = aStmt.Length(); - if(stmtLen > 0) - { - if(aStmt[stmtLen - 1] == 0) - { - --stmtLen; - } - TPtrC sqlStmt(aStmt.Ptr(), stmtLen); - if(sqlStmt.Length() > 250) - { - sqlStmt.Set(sqlStmt.Left(250)); - } - RDebug::Print(_L("###\"%S\"\r\n"), &sqlStmt); - } - TBuf<16> tbuf; - Util::GetTimeStr(tbuf); - const void* errMsg = sqlite3_errmsg16(aDbHandle);//"errMsg" - zero terminated string - if(errMsg) - { - TPtrC msg(reinterpret_cast (errMsg));//terminating zero character excluded. - if(msg.Length() > 230) - { - msg.Set(msg.Left(230)); - } - RDebug::Print(_L("##%S#ErrMsg=%S\r\n"), &tbuf, &msg); - } - else - { - RDebug::Print(_L("##%S#ErrMsg=null\r\n"), &tbuf); - } - } - -#define PRINT_ERRMSG8(Condition, DbHandle, FuncNameZ, Stmt) PrintErrMsg8(Condition, DbHandle, FuncNameZ, Stmt) -#define PRINT_ERRMSG16(Condition, DbHandle, FuncNameZ, Stmt) PrintErrMsg16(Condition, DbHandle, FuncNameZ, Stmt) - -#else //_NOTIFY - -#define PRINT_ERRMSG8(Condition, DbHandle, FuncNameZ, Stmt) -#define PRINT_ERRMSG16(Condition, DbHandle, FuncNameZ, Stmt) - -#endif //_NOTIFY - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //Calls sqlite3_open16() to create or open database file with aFileNameZ. //aFileNameZ is UTF16 encoded, zero-terminated. //The function returns system-wide errors or database specific errors. @@ -146,7 +48,7 @@ { (void)sqlite3SymbianLastOsError();//clear last OS error TInt err = sqlite3_open16(aFileNameZ.Ptr(), &aDbHandle); - __SQLASSERT(err == SQLITE_OK ? aDbHandle != NULL : ETrue, ESqlPanicInternalError); + __ASSERT_DEBUG(err == SQLITE_OK ? aDbHandle != NULL : ETrue, __SQLPANIC2(ESqlPanicInternalError)); if(err == SQLITE_OK) { (void)sqlite3_extended_result_codes(aDbHandle, 0); @@ -169,7 +71,7 @@ { (void)sqlite3SymbianLastOsError();//clear last OS error TInt err = sqlite3_open((const char *) aFileNameZ.Ptr(), &aDbHandle); - __SQLASSERT(err == SQLITE_OK ? aDbHandle != NULL : ETrue, ESqlPanicInternalError); + __ASSERT_DEBUG(err == SQLITE_OK ? aDbHandle != NULL : ETrue, __SQLPANIC2(ESqlPanicInternalError)); if(err == SQLITE_OK) { (void)sqlite3_extended_result_codes(aDbHandle, 0); @@ -202,15 +104,15 @@ //If the function fails then it returns one of the SQLITE error codes. static TInt DoSingleStmtExec16(sqlite3 *aDbHandle, const TDesC16& aSql) { - __SQLASSERT(aDbHandle != NULL, ESqlPanicInvalidObj); - __SQLASSERT(aSql.Length() > 0 ? (TInt)aSql[aSql.Length() - 1] == 0 : ETrue, ESqlPanicBadArgument); + __ASSERT_DEBUG(aDbHandle != NULL, __SQLPANIC2(ESqlPanicInvalidObj)); + __ASSERT_DEBUG(aSql.Length() > 0 ? (TInt)aSql[aSql.Length() - 1] == 0 : ETrue, __SQLPANIC2(ESqlPanicBadArgument)); sqlite3_stmt* stmtHandle = NULL; const void* stmtTail = NULL; //sqlite3_prepare16_v2() expects parameter #3 to be one of the following: // - byte length of the sql statement (parameter #2), excluding terminating zero; // - negative value - the sql statement (parameter #2) is zero-terminated; TInt err = sqlite3_prepare16_v2(aDbHandle, aSql.Ptr(), aSql.Length() * sizeof(TUint16) - sizeof(TUint16), &stmtHandle, &stmtTail); - __SQLASSERT(err == SQLITE_OK ? !stmtTail || User::StringLength((const TUint16*)stmtTail) == 0 : !stmtHandle, ESqlPanicInternalError); + __ASSERT_DEBUG(err == SQLITE_OK ? !stmtTail || User::StringLength((const TUint16*)stmtTail) == 0 : !stmtHandle, __SQLPANIC2(ESqlPanicInternalError)); if(stmtHandle) //stmtHandle can be NULL for statements like this: ";". { if(err == SQLITE_OK) @@ -221,7 +123,7 @@ if(err == SQLITE_ERROR) //It may be "out of memory" problem { err = sqlite3_reset(stmtHandle); - __SQLASSERT(err != SQLITE_OK, ESqlPanicInternalError); + __ASSERT_DEBUG(err != SQLITE_OK, __SQLPANIC2(ESqlPanicInternalError)); } } (void)sqlite3_finalize(stmtHandle);//sqlite3_finalize() fails only if an invalid statement handle is passed. @@ -300,10 +202,13 @@ @internalComponent */ -TInt DbExecStmt16(sqlite3 *aDbHandle, TDes16& aSqlStmt) +TInt DbExecStmt16(sqlite3* aDbHandle, TDes16& aSqlStmt) { - __SQLASSERT(aDbHandle != NULL, ESqlPanicInternalError); - __SQLASSERT(aSqlStmt.Length() > 0 ? (TInt)aSqlStmt[aSqlStmt.Length() - 1] == 0: ETrue, ESqlPanicBadArgument); + __SQLTRACE_INTERNALSEXPR(TPtrC sqlprnptr(aSqlStmt.Left(aSqlStmt.Length() - 1))); + SQL_TRACE_INTERNALS(OstTraceExt2(TRACE_INTERNALS, DBEXECSTMT16_ENTRY, "Entry;0x%X;DbExecStmt16;sql=%S", (TUint)aDbHandle, __SQLPRNSTR(sqlprnptr))); + + __ASSERT_DEBUG(aDbHandle != NULL, __SQLPANIC2(ESqlPanicInternalError)); + __ASSERT_DEBUG(aSqlStmt.Length() > 0 ? (TInt)aSqlStmt[aSqlStmt.Length() - 1] == 0: ETrue, __SQLPANIC2(ESqlPanicBadArgument)); (void)sqlite3SymbianLastOsError();//clear last OS error @@ -325,7 +230,7 @@ { err = KErrNone; } - PRINT_ERRMSG16(err <= KSqlErrGeneral, aDbHandle, "DbExecStmt16()", aSqlStmt); + SQL_TRACE_INTERNALS(OstTraceExt2(TRACE_INTERNALS, DBEXECSTMT16_EXIT, "Exit;0x%X;DbExecStmt16;err=%d", (TUint)aDbHandle, err)); return err; } @@ -349,10 +254,14 @@ @internalComponent */ -TInt DbExecStmt8(sqlite3 *aDbHandle, const TDesC8& aSqlStmt) +TInt DbExecStmt8(sqlite3* aDbHandle, const TDesC8& aSqlStmt) { - __SQLASSERT(aDbHandle != NULL, ESqlPanicInternalError); - __SQLASSERT(aSqlStmt.Length() > 0 ? (TInt)aSqlStmt[aSqlStmt.Length() - 1] == 0: ETrue, ESqlPanicBadArgument); + __SQLTRACE_INTERNALSEXPR(TPtrC8 sqlprnptr(aSqlStmt.Left(aSqlStmt.Length() - 1))); + __SQLTRACE_INTERNALSVAR(TBuf<100> des16prnbuf); + SQL_TRACE_INTERNALS(OstTraceExt2(TRACE_INTERNALS, DBEXECSTMT8_ENTRY, "Entry;0x%X;DbExecStmt8;sql=%s", (TUint)aDbHandle, __SQLPRNSTR8(sqlprnptr, des16prnbuf))); + + __ASSERT_DEBUG(aDbHandle != NULL, __SQLPANIC2(ESqlPanicInternalError)); + __ASSERT_DEBUG(aSqlStmt.Length() > 0 ? (TInt)aSqlStmt[aSqlStmt.Length() - 1] == 0: ETrue, __SQLPANIC2(ESqlPanicBadArgument)); SQLPROFILER_SQL8_PRINT((TUint)aDbHandle, aSqlStmt.Left(aSqlStmt.Length() - 1), EFalse); @@ -365,7 +274,7 @@ { err = KErrNone; } - PRINT_ERRMSG8(err <= KSqlErrGeneral, aDbHandle, "DbExecStmt8()", aSqlStmt); + SQL_TRACE_INTERNALS(OstTraceExt2(TRACE_INTERNALS, DBEXECSTMT8_EXIT, "Exit;0x%X;DbExecStmt8;err=%d", (TUint)aDbHandle, err)); return err; } @@ -385,8 +294,7 @@ // - negative value - the sql statement (parameter #2) is zero-terminated; TInt err = sqlite3_prepare16_v2(aDbHandle, aStmt.Ptr(), aStmt.Length() * sizeof(TUint16) - sizeof(TUint16), aStmtHandle, &stmtTail); aHasTail = stmtTail && static_cast (stmtTail)[0] != 0; - PRINT_ERRMSG16(err != SQLITE_OK, aDbHandle, "DoPrepareStmt16()", aStmt); - __SQLASSERT(err != SQLITE_OK ? !(*aStmtHandle) : ETrue, ESqlPanicInternalError); + __ASSERT_DEBUG(err != SQLITE_OK ? !(*aStmtHandle) : ETrue, __SQLPANIC2(ESqlPanicInternalError)); //(*aStmtHandle) is NULL for ";" statements, when err == SQLITE_OK. Since the server should not panic //that situation is handled later (not inside the assert above) return err; @@ -404,8 +312,7 @@ // - negative value - the sql statement (parameter #2) is zero-terminated; TInt err = sqlite3_prepare_v2(aDbHandle, reinterpret_cast (aStmt), -1, aStmtHandle, &stmtTail); aHasTail = stmtTail && stmtTail[0] != 0; - PRINT_ERRMSG8(err != SQLITE_OK, aDbHandle, "DoPrepareStmt8()", TPtrC8(aStmt, aStmt ? User::StringLength(aStmt) : 0)); - __SQLASSERT(err != SQLITE_OK ? !(*aStmtHandle) : ETrue, ESqlPanicInternalError); + __ASSERT_DEBUG(err != SQLITE_OK ? !(*aStmtHandle) : ETrue, __SQLPANIC2(ESqlPanicInternalError)); //(*aStmtHandle) is NULL for ";" statements, when err == SQLITE_OK. Since the server should not panic //that situation is handled later (not inside the assert above) return err; @@ -451,7 +358,7 @@ // static void LeaveIfPrepareErrorL(TInt aSqliteError, TBool aHasTail, sqlite3_stmt* aStmtHandle) { - __SQLLEAVE_IF_ERROR(ProcessPrepareError(aSqliteError, aHasTail, aStmtHandle)); + __SQLLEAVE_IF_ERROR2(ProcessPrepareError(aSqliteError, aHasTail, aStmtHandle)); } /** @@ -469,13 +376,14 @@ */ sqlite3_stmt* StmtPrepare16L(sqlite3* aDbHandle, const TDesC16& aSqlStmt) { - SQLPROFILER_SQL16_PRINT((TUint)aDbHandle, aSqlStmt.Left(aSqlStmt.Length() - 1), ETrue); - + __SQLTRACE_INTERNALSEXPR(TPtrC sqlprnptr(aSqlStmt.Left(aSqlStmt.Length() - 1))); + SQL_TRACE_INTERNALS(OstTraceExt2(TRACE_INTERNALS, STMTPREPARE16L_ENTRY, "Entry;0x%X;StmtPrepare16L;sql=%S", (TUint)aDbHandle, __SQLPRNSTR(sqlprnptr))); (void)sqlite3SymbianLastOsError();//clear last OS error TBool hasTail = EFalse; sqlite3_stmt* stmtHandle = NULL; TInt err = DoPrepareStmt16(aDbHandle, aSqlStmt, &stmtHandle, hasTail); LeaveIfPrepareErrorL(err, hasTail, stmtHandle); + SQL_TRACE_INTERNALS(OstTraceExt2(TRACE_INTERNALS, STMTPREPARE16L_EXIT, "Exit;0x%X;StmtPrepare16L;stmtHandle=0x%X", (TUint)aDbHandle, (TUint)stmtHandle)); return stmtHandle; } @@ -494,12 +402,15 @@ */ TInt StmtPrepare8(sqlite3* aDbHandle, const TDesC8& aSqlStmt, sqlite3_stmt*& aStmtHandle) { - SQLPROFILER_SQL8_PRINT((TUint)aDbHandle, aSqlStmt.Left(aSqlStmt.Length() - 1), ETrue); - + __SQLTRACE_INTERNALSEXPR(TPtrC8 sqlprnptr(aSqlStmt.Left(aSqlStmt.Length() - 1))); + __SQLTRACE_INTERNALSVAR(TBuf<100> des16prnbuf); + SQL_TRACE_INTERNALS(OstTraceExt2(TRACE_INTERNALS, STMTPREPARE8_ENTRY, "Entry;0x%X;StmtPrepare8;sql=%s", (TUint)aDbHandle, __SQLPRNSTR8(sqlprnptr, des16prnbuf))); (void)sqlite3SymbianLastOsError();//clear last OS error TBool hasTail = EFalse; TInt err = DoPrepareStmt8(aDbHandle, aSqlStmt.Ptr(), &aStmtHandle, hasTail); - return ProcessPrepareError(err, hasTail, aStmtHandle); + err = ProcessPrepareError(err, hasTail, aStmtHandle); + SQL_TRACE_INTERNALS(OstTraceExt3(TRACE_INTERNALS, STMTPREPARE8_EXIT, "Exit;0x%X;StmtPrepare8;aStmtHandle=0x%X;err=%d", (TUint)aDbHandle, (TUint)aStmtHandle, err)); + return err; } /** @@ -517,13 +428,15 @@ */ sqlite3_stmt* StmtPrepare8L(sqlite3* aDbHandle, const TDesC8& aSqlStmt) { - SQLPROFILER_SQL8_PRINT((TUint)aDbHandle, aSqlStmt.Left(aSqlStmt.Length() - 1), ETrue); - + __SQLTRACE_INTERNALSEXPR(TPtrC8 sqlprnptr(aSqlStmt.Left(aSqlStmt.Length() - 1))); + __SQLTRACE_INTERNALSVAR(TBuf<100> des16prnbuf); + SQL_TRACE_INTERNALS(OstTraceExt2(TRACE_INTERNALS, STMTPREPARE8L_ENTRY, "Entry;0x%X;StmtPrepare8L;sql=%s", (TUint)aDbHandle, __SQLPRNSTR8(sqlprnptr, des16prnbuf))); (void)sqlite3SymbianLastOsError();//clear last OS error TBool hasTail = EFalse; sqlite3_stmt* stmtHandle = NULL; TInt err = DoPrepareStmt8(aDbHandle, aSqlStmt.Ptr(), &stmtHandle, hasTail); LeaveIfPrepareErrorL(err, hasTail, stmtHandle); + SQL_TRACE_INTERNALS(OstTraceExt2(TRACE_INTERNALS, STMTPREPARE8L_EXIT, "Exit;0x%X;StmtPrepare8L;stmtHandle=0x%X", (TUint)aDbHandle, (TUint)stmtHandle)); return stmtHandle; } @@ -544,10 +457,11 @@ */ TInt StmtExec(sqlite3_stmt* aStmtHandle) { - __SQLASSERT(aStmtHandle != NULL, ESqlPanicInvalidObj); + SQL_TRACE_INTERNALS(OstTraceExt2(TRACE_INTERNALS, STMTEXEC_ENTRY, "Entry;0x%X;StmtExec;aStmtHandle=0x%X", (TUint)sqlite3_db_handle(aStmtHandle), (TUint)aStmtHandle)); + __ASSERT_DEBUG(aStmtHandle != NULL, __SQLPANIC2(ESqlPanicInvalidObj)); (void)sqlite3SymbianLastOsError();//clear last OS error - + TInt err; while((err = sqlite3_step(aStmtHandle)) == SQLITE_ROW) { @@ -556,7 +470,7 @@ if(err == SQLITE_ERROR) //It may be "out of memory" problem { err = sqlite3_reset(aStmtHandle); - __SQLASSERT(err != SQLITE_OK, ESqlPanicInternalError); + __ASSERT_DEBUG(err != SQLITE_OK, __SQLPANIC2(ESqlPanicInternalError)); } err = ::Sql2OsErrCode(err, sqlite3SymbianLastOsError()); @@ -565,7 +479,7 @@ err = KErrNone; } - PRINT_ERRMSG16(err <= KSqlErrGeneral, sqlite3_db_handle(aStmtHandle), "StmtExec()", _L(" ")); + SQL_TRACE_INTERNALS(OstTraceExt3(TRACE_INTERNALS, STMTEXEC_EXIT, "Exit;0x%X;StmtExec;aStmtHandle=0x%X;err=%d", (TUint)sqlite3_db_handle(aStmtHandle), (TUint)aStmtHandle, err)); return err; } @@ -588,7 +502,8 @@ */ TInt StmtNext(sqlite3_stmt* aStmtHandle) { - __SQLASSERT(aStmtHandle != NULL, ESqlPanicInvalidObj); + SQL_TRACE_INTERNALS(OstTraceExt2(TRACE_INTERNALS, STMTNEXT_ENTRY, "Entry;0x%X;StmtNext;aStmtHandle=0x%X", (TUint)sqlite3_db_handle(aStmtHandle), (TUint)aStmtHandle)); + __ASSERT_DEBUG(aStmtHandle != NULL, __SQLPANIC2(ESqlPanicInvalidObj)); (void)sqlite3SymbianLastOsError();//clear last OS error @@ -596,10 +511,10 @@ if(err == SQLITE_ERROR) //It may be "out of memory" problem { err = sqlite3_reset(aStmtHandle); - __SQLASSERT(err != SQLITE_OK, ESqlPanicInternalError); + __ASSERT_DEBUG(err != SQLITE_OK, __SQLPANIC2(ESqlPanicInternalError)); } err = ::Sql2OsErrCode(err, sqlite3SymbianLastOsError()); - PRINT_ERRMSG16(err <= KSqlErrGeneral, sqlite3_db_handle(aStmtHandle), "StmtNext()", _L(" ")); + SQL_TRACE_INTERNALS(OstTraceExt3(TRACE_INTERNALS, STMTNEXT_EXIT, "Exit;0x%X;StmtNext;aStmtHandle=0x%X;err=%d", (TUint)sqlite3_db_handle(aStmtHandle), (TUint)aStmtHandle, err)); return err; } @@ -617,12 +532,15 @@ */ TInt StmtReset(sqlite3_stmt* aStmtHandle) { - __SQLASSERT(aStmtHandle != NULL, ESqlPanicInvalidObj); + SQL_TRACE_INTERNALS(OstTraceExt2(TRACE_INTERNALS, STMTRESET_ENTRY, "Entry;0x%X;StmtReset;aStmtHandle=0x%X", (TUint)sqlite3_db_handle(aStmtHandle), (TUint)aStmtHandle)); + __ASSERT_DEBUG(aStmtHandle != NULL, __SQLPANIC2(ESqlPanicInvalidObj)); (void)sqlite3SymbianLastOsError();//clear last OS error TInt err = sqlite3_reset(aStmtHandle); - return ::Sql2OsErrCode(err, sqlite3SymbianLastOsError()); + err = ::Sql2OsErrCode(err, sqlite3SymbianLastOsError()); + SQL_TRACE_INTERNALS(OstTraceExt3(TRACE_INTERNALS, STMTRESET_EXIT, "Exit;0x%X;StmtReset;aStmtHandle=0x%X;err=%d", (TUint)sqlite3_db_handle(aStmtHandle), (TUint)aStmtHandle, err)); + return err; } /** @@ -644,12 +562,16 @@ */ static TInt PreRetrievePragmaValue(sqlite3* aDbHandle, const TDesC& aDbName, const TDesC8& aPragmaSql, sqlite3_stmt*& aStmtHandle) { - __SQLASSERT(aDbHandle != NULL, ESqlPanicInternalError); - __SQLASSERT(aPragmaSql.Length() > 0, ESqlPanicBadArgument); - __SQLASSERT(aPragmaSql[aPragmaSql.Length() - 1] == 0, ESqlPanicBadArgument); + __SQLTRACE_INTERNALSEXPR(TPtrC8 sqlprnptr(aPragmaSql.Left(aPragmaSql.Length() - 1))); + __SQLTRACE_INTERNALSVAR(TBuf<100> des16prnbuf); + SQL_TRACE_INTERNALS(OstTraceExt3(TRACE_INTERNALS, PRERETRIEVEPRAGMAVALUE_ENTRY, "Entry;0x%X;PreRetrievePragmaValue;aDbName=%S;aPragmaSql=%s", (TUint)aDbHandle, __SQLPRNSTR(aDbName), __SQLPRNSTR8(sqlprnptr, des16prnbuf))); + __ASSERT_DEBUG(aDbHandle != NULL, __SQLPANIC2(ESqlPanicInternalError)); + __ASSERT_DEBUG(aPragmaSql.Length() > 0, __SQLPANIC2(ESqlPanicBadArgument)); + __ASSERT_DEBUG(aPragmaSql[aPragmaSql.Length() - 1] == 0, __SQLPANIC2(ESqlPanicBadArgument)); TBuf8 dbName; if(!UTF16ToUTF8(aDbName, dbName)) { + SQL_TRACE_INTERNALS(OstTrace1(TRACE_INTERNALS, PRERETRIEVEPRAGMAVALUE_EXIT1, "Exit;0x%X;PreRetrievePragmaValue;err=KErrGeneral", (TUint)aDbHandle)); return KErrGeneral; } TBuf8 sql;//64 characters is enough for the longest PRAGMA statement @@ -665,10 +587,10 @@ TInt err = ::StmtPrepare8(aDbHandle, sql, aStmtHandle); if(err == KErrNone) { - __SQLASSERT(aStmtHandle != NULL, ESqlPanicInvalidObj); + __ASSERT_DEBUG(aStmtHandle != NULL, __SQLPANIC2(ESqlPanicInvalidObj)); err = ::StmtNext(aStmtHandle); } - PRINT_ERRMSG8(err <= KSqlErrGeneral, aDbHandle, "PreRetrievePragmaValue()", sql); + SQL_TRACE_INTERNALS(OstTraceExt3(TRACE_INTERNALS, PRERETRIEVEPRAGMAVALUE_EXIT2, "Exit;0x%X;PreRetrievePragmaValue;aStmtHandle=0x%X;err=%d", (TUint)aDbHandle, (TUint)aStmtHandle, err)); return err; } @@ -691,9 +613,9 @@ */ static TInt RetrievePragmaValue(sqlite3* aDbHandle, const TDesC& aDbName, const TDesC8& aPragmaSql, TInt& aPragmaValue) { - __SQLASSERT(aDbHandle != NULL, ESqlPanicInternalError); - __SQLASSERT(aPragmaSql.Length() > 0, ESqlPanicBadArgument); - __SQLASSERT(aPragmaSql[aPragmaSql.Length() - 1] == 0, ESqlPanicBadArgument); + __ASSERT_DEBUG(aDbHandle != NULL, __SQLPANIC2(ESqlPanicInternalError)); + __ASSERT_DEBUG(aPragmaSql.Length() > 0, __SQLPANIC2(ESqlPanicBadArgument)); + __ASSERT_DEBUG(aPragmaSql[aPragmaSql.Length() - 1] == 0, __SQLPANIC2(ESqlPanicBadArgument)); sqlite3_stmt* stmtHandle = NULL; TInt err = PreRetrievePragmaValue(aDbHandle, aDbName, aPragmaSql, stmtHandle); if(err == KSqlAtRow) @@ -724,9 +646,9 @@ */ static TInt RetrievePragmaValue(sqlite3* aDbHandle, const TDesC& aDbName, const TDesC8& aPragmaSql, TDes8& aPragmaValue) { - __SQLASSERT(aDbHandle != NULL, ESqlPanicInternalError); - __SQLASSERT(aPragmaSql.Length() > 0, ESqlPanicBadArgument); - __SQLASSERT(aPragmaSql[aPragmaSql.Length() - 1] == 0, ESqlPanicBadArgument); + __ASSERT_DEBUG(aDbHandle != NULL, __SQLPANIC2(ESqlPanicInternalError)); + __ASSERT_DEBUG(aPragmaSql.Length() > 0, __SQLPANIC2(ESqlPanicBadArgument)); + __ASSERT_DEBUG(aPragmaSql[aPragmaSql.Length() - 1] == 0, __SQLPANIC2(ESqlPanicBadArgument)); sqlite3_stmt* stmtHandle = NULL; TInt err = PreRetrievePragmaValue(aDbHandle, aDbName, aPragmaSql, stmtHandle); if(err == KSqlAtRow) @@ -756,7 +678,7 @@ */ TInt DbPageCount(sqlite3* aDbHandle, const TDesC& aDbName, TInt& aPageCount) { - __SQLASSERT(aDbHandle != NULL, ESqlPanicInternalError); + __ASSERT_DEBUG(aDbHandle != NULL, __SQLPANIC2(ESqlPanicInternalError)); return RetrievePragmaValue(aDbHandle, aDbName, KPageCountPragma, aPageCount); } @@ -777,7 +699,7 @@ */ TInt DbPageSize(sqlite3* aDbHandle, const TDesC& aDbName, TInt& aPageSize) { - __SQLASSERT(aDbHandle != NULL, ESqlPanicInternalError); + __ASSERT_DEBUG(aDbHandle != NULL, __SQLPANIC2(ESqlPanicInternalError)); return RetrievePragmaValue(aDbHandle, aDbName, KPageSizePragma, aPageSize); } @@ -798,7 +720,7 @@ */ TInt DbCacheSize(sqlite3* aDbHandle, const TDesC& aDbName, TInt& aCacheSize) { - __SQLASSERT(aDbHandle != NULL, ESqlPanicInternalError); + __ASSERT_DEBUG(aDbHandle != NULL, __SQLPANIC2(ESqlPanicInternalError)); return RetrievePragmaValue(aDbHandle, aDbName, KCacheSizePragma, aCacheSize); } @@ -819,7 +741,7 @@ */ TInt DbEncoding(sqlite3* aDbHandle, const TDesC& aDbName, TDes8& aEncoding) { - __SQLASSERT(aDbHandle != NULL, ESqlPanicInternalError); + __ASSERT_DEBUG(aDbHandle != NULL, __SQLPANIC2(ESqlPanicInternalError)); return RetrievePragmaValue(aDbHandle, aDbName, KEncodingPragma, aEncoding); } @@ -840,7 +762,7 @@ */ TInt DbFreePageCount(sqlite3* aDbHandle, const TDesC& aDbName, TInt& aPageCount) { - __SQLASSERT(aDbHandle != NULL, ESqlPanicInternalError); + __ASSERT_DEBUG(aDbHandle != NULL, __SQLPANIC2(ESqlPanicInternalError)); return RetrievePragmaValue(aDbHandle, aDbName, KFreePageCountPragma, aPageCount); } @@ -861,13 +783,13 @@ */ TInt DbVacuumMode(sqlite3* aDbHandle, const TDesC& aDbName, TInt& aVacuumMode) { - __SQLASSERT(aDbHandle != NULL, ESqlPanicInternalError); + __ASSERT_DEBUG(aDbHandle != NULL, __SQLPANIC2(ESqlPanicInternalError)); return RetrievePragmaValue(aDbHandle, aDbName, KVacuumModePragma, aVacuumMode); } static TBool IsCompactTimeLimitReached(TUint32 aStartTicks, TUint32 aCurrTicks, TInt aMaxTime) { - __SQLASSERT(aMaxTime > 0, ESqlPanicBadArgument); + __ASSERT_DEBUG(aMaxTime > 0, __SQLPANIC2(ESqlPanicBadArgument)); TInt64 tickDiff64 = (TInt64)aCurrTicks - (TInt64)aStartTicks; if(tickDiff64 < 0) { @@ -878,6 +800,7 @@ if(freq == 0) { err = HAL::Get(HAL::EFastCounterFrequency, freq); + SQL_TRACE_INTERNALS(OstTraceExt2(TRACE_INTERNALS, ISCOMPACTTIMELIMITREACHED, "0;IsCompactTimeLimitReached;fast counter frequency=%d;err=%d", freq, err)); } if(err == KErrNone && freq > 0) { @@ -912,12 +835,14 @@ */ TInt DbCompact(sqlite3* aDbHandle, const TDesC& aDbName, TInt aPageCount, TInt& aProcessedPageCount, TInt aMaxTime) { - __SQLASSERT(aPageCount >= 0, ESqlPanicBadArgument); - __SQLASSERT(aMaxTime >= 0, ESqlPanicBadArgument); - __SQLASSERT(aDbHandle != NULL, ESqlPanicInternalError); + SQL_TRACE_INTERNALS(OstTraceExt4(TRACE_INTERNALS, DBCOMPACT_ENTRY, "Entry;0x%X;DbCompact;aDbName=%S;aPageCount=%d;aMaxTime=%d", (TUint)aDbHandle, __SQLPRNSTR(aDbName), aPageCount, aMaxTime)); + __ASSERT_DEBUG(aPageCount >= 0, __SQLPANIC2(ESqlPanicBadArgument)); + __ASSERT_DEBUG(aMaxTime >= 0, __SQLPANIC2(ESqlPanicBadArgument)); + __ASSERT_DEBUG(aDbHandle != NULL, __SQLPANIC2(ESqlPanicInternalError)); TBuf8 dbName; if(!UTF16ToUTF8(aDbName, dbName)) { + SQL_TRACE_INTERNALS(OstTrace1(TRACE_INTERNALS, DBCOMPACT_EXIT1, "Exit;0x%X;DbCompact;err=KErrGeneral", (TUint)aDbHandle)); return KErrGeneral; } TBuf8 sql; @@ -941,7 +866,7 @@ // - byte length of the sql statement (parameter #2), excluding terminating zero; // - negative value - the sql statement (parameter #2) is zero-terminated; TInt err = sqlite3_prepare_v2(aDbHandle, (const char*)sql.Ptr(), sql.Length() - sizeof(TUint8), &stmtHandle, &stmtTail); - __SQLASSERT(err == SQLITE_OK ? !stmtTail || User::StringLength((const TUint8*)stmtTail) == 0 : !stmtHandle, ESqlPanicInternalError); + __ASSERT_DEBUG(err == SQLITE_OK ? !stmtTail || User::StringLength((const TUint8*)stmtTail) == 0 : !stmtHandle, __SQLPANIC2(ESqlPanicInternalError)); if(stmtHandle) //stmtHandle can be NULL for statements like this: ";". { if(err == SQLITE_OK) @@ -963,7 +888,7 @@ if(err == SQLITE_ERROR) //It may be "out of memory" problem { err = sqlite3_reset(stmtHandle); - __SQLASSERT(err != SQLITE_OK, ESqlPanicInternalError); + __ASSERT_DEBUG(err != SQLITE_OK, __SQLPANIC2(ESqlPanicInternalError)); } } (void)sqlite3_finalize(stmtHandle);//sqlite3_finalize() fails only if an invalid statement handle is passed. @@ -973,7 +898,7 @@ { err = KErrNone; } - PRINT_ERRMSG8(err <= KSqlErrGeneral, aDbHandle, "DbCompact()", sql); + SQL_TRACE_INTERNALS(OstTraceExt3(TRACE_INTERNALS, DBCOMPACT_EXIT2, "Exit;0x%X;DbCompact;aProcessedPageCount=%d;err=%d", (TUint)aDbHandle, aProcessedPageCount, err)); return err; } @@ -989,6 +914,7 @@ */ TInt FinalizeStmtHandle(sqlite3_stmt* aStmtHandle) { + SQL_TRACE_INTERNALS(OstTraceExt2(TRACE_INTERNALS, FINALIZESTMTHANDLE_ENTRY, "Entry;0x%X;FinalizeStmtHandle;aStmtHandle=0x%X", (TUint)sqlite3_db_handle(aStmtHandle), (TUint)aStmtHandle)); TInt err = KErrNone; if(aStmtHandle) { @@ -996,5 +922,6 @@ err = sqlite3_finalize(aStmtHandle); err = ::Sql2OsErrCode(err, sqlite3SymbianLastOsError()); } + SQL_TRACE_INTERNALS(OstTrace1(TRACE_INTERNALS, FINALIZESTMTHANDLE_EXIT, "Exit;0;FinalizeStmtHandle;err=%d", err)); return err; }