persistentstorage/sql/SRC/Server/SqlSrvStatementUtil.cpp
branchRCL_3
changeset 23 26645d81f48d
parent 15 fcc16690f446
child 24 cc28652e0254
--- 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 <sqldb.h>
 #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 <const TUint8*> (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 <const TText16*> (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 <const TUint8*> (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 <const TText16*> (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 <const TUint16*> (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 <const char*> (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<KMaxFileName> dbName;
 	if(!UTF16ToUTF8(aDbName, dbName))
 		{
+		SQL_TRACE_INTERNALS(OstTrace1(TRACE_INTERNALS, PRERETRIEVEPRAGMAVALUE_EXIT1, "Exit;0x%X;PreRetrievePragmaValue;err=KErrGeneral", (TUint)aDbHandle));
 		return KErrGeneral;
 		}
 	TBuf8<KMaxFileName + 64> 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<KMaxFileName> dbName;
 	if(!UTF16ToUTF8(aDbName, dbName))
 		{
+		SQL_TRACE_INTERNALS(OstTrace1(TRACE_INTERNALS, DBCOMPACT_EXIT1, "Exit;0x%X;DbCompact;err=KErrGeneral", (TUint)aDbHandle));
 		return KErrGeneral;
 		}
 	TBuf8<KMaxFileName + sizeof(KIncrementalVacuumPragma) + 1> 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;
 	}