# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1274787319 -10800 # Node ID fcc16690f446445cfc03747efbcea28fe1f1d26e # Parent 04ec7606545c67dc981324711a141e89ce3b350e Revision: 201021 Kit: 2010121 diff -r 04ec7606545c -r fcc16690f446 loggingservices/eventlogger/Rom/logengtest.iby --- a/loggingservices/eventlogger/Rom/logengtest.iby Tue May 11 17:49:39 2010 +0300 +++ b/loggingservices/eventlogger/Rom/logengtest.iby Tue May 25 14:35:19 2010 +0300 @@ -61,11 +61,13 @@ file=ABI_DIR\BUILD_DIR\t_logcompat.exe Test\t_logcompat.exe file=ABI_DIR\BUILD_DIR\t_logsimid.exe Test\t_logsimid.exe -data=ZSYSTEM\test\logengtests.bat Test\logengtests.bat -data=ZSYSTEM\data\oldLogdbu.dat system\data\oldLogdbu.dat -data=ZSYSTEM\data\corruptLogdbu.dat system\data\corruptLogdbu.dat -data=ZSYSTEM\data\corruptDamagedLogdbu.dat system\data\corruptDamagedLogdbu.dat -data=ZSYSTEM\data\101f401d.txt system\data\101f401d.txt +data=DATAZ_\test\logengtests.bat Test\logengtests.bat + +data=DATAZ_\test\oldLogdbu.dat Test\oldLogdbu.dat +data=DATAZ_\test\corruptLogdbu.dat Test\corruptLogdbu.dat +data=DATAZ_\test\corruptDamagedLogdbu.dat Test\corruptDamagedLogdbu.dat +data=DATAZ_\test\101f401d.txt Test\101f401d.txt + //The next line to be uncommented if the testing is performed locally. Otherwise t_logview2 fails - //the following file is missing and needed by the time zone server. //data=ZPRIVATE\10202BE9\1020383e.txt private\10202be9\1020383e.txt diff -r 04ec7606545c -r fcc16690f446 loggingservices/eventlogger/group/BLD.INF --- a/loggingservices/eventlogger/group/BLD.INF Tue May 11 17:49:39 2010 +0300 +++ b/loggingservices/eventlogger/group/BLD.INF Tue May 25 14:35:19 2010 +0300 @@ -20,6 +20,7 @@ */ PRJ_EXPORTS + ../LogWrap/inc/LOGWRAP.H SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(logwrap.h) ../LogWrap/inc/LOGWRAPCONST.H SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(logwrapconst.h) ../LogWrap/inc/LOGWRAPLIMITS.H SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(logwraplimits.h) @@ -51,6 +52,7 @@ ../conf/eventlogger_101f401d.crml OS_LAYER_EXPORTS_CRML(eventlogger_101f401d.crml) PRJ_MMPFILES + LOGWRAP.MMP logstub.mmp logserv.mmp @@ -58,14 +60,17 @@ logcntmodel.mmp PRJ_TESTEXPORTS -../Rom/logengtest.iby /epoc32/rom/include/logengtest.iby -../group/logengtests.bat /epoc32/data/z/system/test/logengtests.bat -../test/contacttestmanualpost.bat /epoc32/data/z/system/test/contacttestmanualpost.bat -../test/contacttestmanualpre.bat /epoc32/data/z/system/test/contacttestmanualpre.bat -../test/logservcntmatch.rsc /epoc32/data/z/system/test/logservcntmatch.rsc + +../Rom/logengtest.iby /epoc32/rom/include/logengtest.iby +../group/logengtests.bat z:/test/logengtests.bat +../test/src/oldLogdbu.dat z:/test/oldLogdbu.dat +../test/src/corruptLogdbu.dat z:/test/corruptLogdbu.dat +../test/src/corruptDamagedLogdbu.dat z:/test/corruptDamagedLogdbu.dat +../test/101f401d.txt z:/test/101f401d.txt PRJ_TESTMMPFILES + ../test/t_logtype.mmp ../test/t_logapi.mmp ../test/t_logapi2.mmp @@ -96,13 +101,9 @@ ../test/t_logsecureview_hicap.mmp ../test/T_LogSecurity.mmp ../test/t_logservIPC.mmp -../test/t_logapi_helper.mmp support +../test/t_logapi_helper.mmp support ../test/t_logcompat.mmp ../test/t_logsimid.mmp ../test/t_logcntmatchplugin.mmp support -PRJ_TESTEXTENSIONS -start extension syslibs/test/logeng_copytestfiles -end - #include "../test/tef/group/bld.inf" diff -r 04ec7606545c -r fcc16690f446 loggingservices/eventlogger/test/contacttestmanualpost.bat --- a/loggingservices/eventlogger/test/contacttestmanualpost.bat Tue May 11 17:49:39 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ -@echo off -rem -rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -rem All rights reserved. -rem This component and the accompanying materials are made available -rem under the terms of "Eclipse Public License v1.0" -rem which accompanies this distribution, and is available -rem at the URL "http://www.eclipse.org/legal/epl-v10.html". -rem -rem Initial Contributors: -rem Nokia Corporation - initial contribution. -rem -rem Contributors: -rem -rem Description: -rem - -if not exist %EPOCROOT%EPOC32\RELEASE\WINSCW\UDEB\Z\private\101f401d\LOGSERV.RSC.TMP goto noTmpFiles - -rem Delete new ( matching disabled ) rsc files -del /f %EPOCROOT%EPOC32\RELEASE\WINSCW\UDEB\Z\private\101f401d\LOGSERV.RSC -del /f %EPOCROOT%EPOC32\RELEASE\WINSCW\UREL\Z\private\101f401d\LOGSERV.RSC -del /f %EPOCROOT%EPOC32\data\Z\Private\101f401d\logserv.rsc - -rem Restore original ( matching disabled ) rsc files -rename %EPOCROOT%EPOC32\RELEASE\WINSCW\UDEB\Z\private\101f401d\LOGSERV.RSC.TMP LOGSERV.RSC -rename %EPOCROOT%EPOC32\RELEASE\WINSCW\UREL\Z\private\101f401d\LOGSERV.RSC.TMP LOGSERV.RSC -rename %EPOCROOT%EPOC32\data\Z\Private\101f401d\logserv.rsc.tmp logserv.rsc -goto :EOF - -:noTmpFiles -@echo No temp files exist, pre bat file hasn't been run or %0 already called diff -r 04ec7606545c -r fcc16690f446 loggingservices/eventlogger/test/contacttestmanualpre.bat --- a/loggingservices/eventlogger/test/contacttestmanualpre.bat Tue May 11 17:49:39 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,40 +0,0 @@ -@echo off -rem -rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -rem All rights reserved. -rem This component and the accompanying materials are made available -rem under the terms of "Eclipse Public License v1.0" -rem which accompanies this distribution, and is available -rem at the URL "http://www.eclipse.org/legal/epl-v10.html". -rem -rem Initial Contributors: -rem Nokia Corporation - initial contribution. -rem -rem Contributors: -rem -rem Description: -rem - -@rem This call is so that the batch file can be used unaltered by the ONB -@if exist \textshell.bat call \textshell.bat - -@if not exist %EPOCROOT%EPOC32\DATA\Z\SYSTEM\TEST\LOGSERVCNTMATCH.RSC goto notBuilt -@if exist %EPOCROOT%EPOC32\RELEASE\WINSCW\UDEB\Z\private\101f401d\LOGSERV.RSC.TMP goto TmpFilesExist - -@rem Save original ( matching disabled ) rsc files -@rename %EPOCROOT%EPOC32\RELEASE\WINSCW\UDEB\Z\private\101f401d\LOGSERV.RSC LOGSERV.RSC.TMP -@rename %EPOCROOT%EPOC32\RELEASE\WINSCW\UREL\Z\private\101f401d\LOGSERV.RSC LOGSERV.RSC.TMP -@rename %EPOCROOT%EPOC32\data\Z\Private\101f401d\logserv.rsc logserv.rsc.tmp - -@rem Copy over new ( matching enabled ) rsc file -@copy /y %EPOCROOT%EPOC32\DATA\Z\SYSTEM\TEST\LOGSERVCNTMATCH.RSC %EPOCROOT%EPOC32\RELEASE\WINSCW\UDEB\Z\private\101f401d\LOGSERV.RSC -@copy /y %EPOCROOT%EPOC32\DATA\Z\SYSTEM\TEST\LOGSERVCNTMATCH.RSC %EPOCROOT%EPOC32\RELEASE\WINSCW\UREL\Z\private\101f401d\LOGSERV.RSC -@copy /y %EPOCROOT%EPOC32\DATA\Z\SYSTEM\TEST\LOGSERVCNTMATCH.RSC %EPOCROOT%EPOC32\data\Z\Private\101f401d\logserv.rsc -@goto :EOF - -:TmpFilesExist -@echo Tmp files exist %0 already called -@goto :EOF - -:notBuilt -@echo %EPOCROOT%EPOC32\DATA\Z\SYSTEM\TEST\LOGSERVCNTMATCH.RSC doesn't exist, test files not exported. diff -r 04ec7606545c -r fcc16690f446 loggingservices/eventlogger/test/logservcntmatch.rsc Binary file loggingservices/eventlogger/test/logservcntmatch.rsc has changed diff -r 04ec7606545c -r fcc16690f446 loggingservices/eventlogger/test/src/CntModel.ini Binary file loggingservices/eventlogger/test/src/CntModel.ini has changed diff -r 04ec7606545c -r fcc16690f446 loggingservices/eventlogger/test/src/SQLite__Contacts.cdb Binary file loggingservices/eventlogger/test/src/SQLite__Contacts.cdb has changed diff -r 04ec7606545c -r fcc16690f446 loggingservices/eventlogger/test/src/t_logapi.cpp --- a/loggingservices/eventlogger/test/src/t_logapi.cpp Tue May 11 17:49:39 2010 +0300 +++ b/loggingservices/eventlogger/test/src/t_logapi.cpp Tue May 25 14:35:19 2010 +0300 @@ -786,7 +786,7 @@ User::After(1000); //copy the repository file to the folder 10202be9 - _LIT(KCommandParameters1, "z:\\system\\data\\101f401d.txt;c:\\private\\10202be9\\101f401d.txt;0"); + _LIT(KCommandParameters1, "z:\\test\\101f401d.txt;c:\\private\\10202be9\\101f401d.txt;0"); r = process.Create(KExecutableFileName, KCommandParameters1); process.Resume(); process.Close(); diff -r 04ec7606545c -r fcc16690f446 loggingservices/eventlogger/test/src/t_loghicaphelper.cpp --- a/loggingservices/eventlogger/test/src/t_loghicaphelper.cpp Tue May 11 17:49:39 2010 +0300 +++ b/loggingservices/eventlogger/test/src/t_loghicaphelper.cpp Tue May 25 14:35:19 2010 +0300 @@ -69,9 +69,9 @@ EIsMatchingEnabled } ; -_LIT(KOldCorruptDatabase,"z:\\system\\data\\corruptLogdbu.dat"); -_LIT(KOldCorruptDamagedDatabase,"z:\\system\\data\\corruptDamagedLogdbu.dat"); -_LIT(KOldFormatDatabase,"z:\\system\\data\\oldLogdbu.dat"); +_LIT(KOldCorruptDatabase,"z:\\test\\corruptLogdbu.dat"); +_LIT(KOldCorruptDamagedDatabase,"z:\\test\\corruptDamagedLogdbu.dat"); +_LIT(KOldFormatDatabase,"z:\\test\\oldLogdbu.dat"); CTestActive::CTestActive(TInt aPriority) diff -r 04ec7606545c -r fcc16690f446 loggingservices/filelogger/SCLI/FLOGCLI.CPP --- a/loggingservices/filelogger/SCLI/FLOGCLI.CPP Tue May 11 17:49:39 2010 +0300 +++ b/loggingservices/filelogger/SCLI/FLOGCLI.CPP Tue May 25 14:35:19 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -423,11 +423,26 @@ TBuf8<1600> buf; //Want at least an mtu sized buffer //PG 14/08/2002 - If mode is set to *Raw, Don't change format of client buffer if(aMode == EFileLoggingModeAppendRaw || aMode == EFileLoggingModeOverwriteRaw) - buf.Copy(aText); + { + TPtrC8 ptr8; + if (logger.LogSTI()) + { + ptr8.Set(aText.Left(KLogBufferSize)); //in LogSTI mode, truncate to KLogBufferSize + } + else + { + ptr8.Set(aText.Left(1600)); // truncate to 1600 + } + buf.Copy(ptr8); + } else + { ret=logger.iFormatter.FormatTextToWritableBuffer(buf,aText); + } if (ret==KErrNone) + { logger.DoStaticWrite(buf); + } } logger.Close(); } @@ -597,11 +612,12 @@ n.Copy(aBuf); TFileName logFileName = iLogFile.Name(); RDebug::Print(_L("FLG %S %S"),&logFileName,&n); - } else - { - TPckg logFilePckg(iLogFile); - iLastError=SendReceive(EWriteLog,TIpcArgs (&logFilePckg, &aBuf)); - } + } + else + { + TPckg logFilePckg(iLogFile); + iLastError=SendReceive(EWriteLog,TIpcArgs (&logFilePckg, &aBuf)); + } } void RFileLogger::DoStaticWrite(const TDesC8& aBuf) @@ -624,10 +640,11 @@ n.Copy(aBuf); TFileName logFileName = iLogFile.Name(); RDebug::Print(_L("FLG %S %S"),&logFileName,&n); - } else - { - SendReceive(ECreateWriteAndCloseLog, TIpcArgs( &logFilePckg, &aBuf)); // ignore error - } + } + else + { + SendReceive(ECreateWriteAndCloseLog, TIpcArgs( &logFilePckg, &aBuf)); // ignore error + } } void RFileLogger::DoWriteFormat(TRefByValue aFmt, VA_LIST& aList) diff -r 04ec7606545c -r fcc16690f446 persistentstorage/dbms/group/BLD.INF --- a/persistentstorage/dbms/group/BLD.INF Tue May 11 17:49:39 2010 +0300 +++ b/persistentstorage/dbms/group/BLD.INF Tue May 25 14:35:19 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 1999-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -40,6 +40,7 @@ ../bmake/EDBSRV.MMP PRJ_TESTMMPFILES + ../tdbms/t_dbenvcreate.mmp ../tdbms/t_dbalter.mmp ../tdbms/t_dbbench.mmp @@ -77,11 +78,28 @@ ../tdbms/t_dbperf3.mmp ../tdbms/t_dbenvdestroy.mmp -PRJ_TESTEXTENSIONS -start extension syslibs/test/dbms_copytestdbscfiles -end - PRJ_TESTEXPORTS -DBMSTests.iby /epoc32/rom/include/dbmstests.iby -DbmsTests.bat /epoc32/data/z/system/test/dbmstests.bat +DBMSTests.iby /epoc32/rom/include/dbmstests.iby +DbmsTests.bat z:/test/dbmstests.bat + +../tdbms/11335577.spd z:/private/100012a5/policy/11335577.spd +../tdbms/11335578.spd z:/private/100012a5/policy/11335578.spd +../tdbms/11335579.spd z:/private/100012a5/policy/11335579.spd +../tdbms/1133557A.spd z:/private/100012a5/policy/1133557a.spd +../tdbms/12344321.spd z:/private/100012a5/policy/12344321.spd +../tdbms/dbs_11335578_A.DB z:/private/100012a5/dbs_11335578_a.db +../tdbms/dbs_11335578_B.DB z:/private/100012a5/dbs_11335578_b.db +../tdbms/dbs_11335578_Z.DB z:/private/100012a5/dbs_11335578_z.db +../tdbms/dbs_11335579_TESTDB.DB z:/private/100012a5/dbs_11335579_testdb.db +../tdbms/dbs_1133557A_ZZZ.DB z:/private/100012a5/dbs_1133557a_zzz.db +../tdbms/dbs_12344321_1234567890123456789012345678901234567890123456789012345678901234567890.DB z:/private/100012a5/dbs_12344321_1234567890123456789012345678901234567890123456789012345678901234567890.db +../tdbms/11335577.txt z:/test/11335577.txt +../tdbms/11335578.txt z:/test/11335578.txt +../tdbms/11335579.txt z:/test/11335579.txt +../tdbms/1133557A.txt z:/test/1133557A.txt +../tdbms/t_dbperf1.sql z:/test/t_dbperf1.sql +../tdbms/t_script.txt z:/test/t_script.txt +../tdbms/typetextktests44.dat z:/test/typetextktests44.dat +../tdbms/typetextktests46.dat z:/test/typetextktests46.dat +../tdbms/typetextktests47.dat z:/test/typetextktests47.dat diff -r 04ec7606545c -r fcc16690f446 persistentstorage/dbms/group/DBMSTests.iby --- a/persistentstorage/dbms/group/DBMSTests.iby Tue May 11 17:49:39 2010 +0300 +++ b/persistentstorage/dbms/group/DBMSTests.iby Tue May 25 14:35:19 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -20,30 +20,31 @@ REM DBMS Tests #include -data=ZSYSTEM\TEST\T_SCRIPT.TXT \TEST\T_SCRIPT.TXT -data=ZSYSTEM\TEST\11335577.TXT \TEST\11335577.TXT -data=ZSYSTEM\TEST\11335578.TXT \TEST\11335578.TXT -data=ZSYSTEM\TEST\11335579.TXT \TEST\11335579.TXT -data=ZSYSTEM\TEST\1133557A.TXT \TEST\1133557A.TXT -data=ZSYSTEM\test\DBMStests.bat \TEST\DBMStests.bat -data=ZSYSTEM\TEST\t_dbperf1.sql \TEST\t_dbperf1.sql +data=DATAZ_\test\DBMStests.bat \TEST\DBMStests.bat + +data=DATAZ_\TEST\T_SCRIPT.TXT \TEST\T_SCRIPT.TXT +data=DATAZ_\TEST\11335577.TXT \TEST\11335577.TXT +data=DATAZ_\TEST\11335578.TXT \TEST\11335578.TXT +data=DATAZ_\TEST\11335579.TXT \TEST\11335579.TXT +data=DATAZ_\TEST\1133557A.TXT \TEST\1133557A.TXT +data=DATAZ_\TEST\t_dbperf1.sql \TEST\t_dbperf1.sql // Work around for DEF063276 -data=ZSYSTEM\test\TypeTextKTests44.dat \TEST\TypeTextKTests44.dat -data=ZSYSTEM\test\TypeTextKTests46.dat \TEST\TypeTextKTests46.dat -data=ZSYSTEM\test\TypeTextKTests47.dat \TEST\TypeTextKTests47.dat +data=DATAZ_\test\TypeTextKTests44.dat \TEST\TypeTextKTests44.dat +data=DATAZ_\test\TypeTextKTests46.dat \TEST\TypeTextKTests46.dat +data=DATAZ_\test\TypeTextKTests47.dat \TEST\TypeTextKTests47.dat -data=ZPRIVATE\100012A5\POLICY\11335577.SPD \PRIVATE\100012A5\POLICY\11335577.SPD -data=ZPRIVATE\100012A5\POLICY\11335578.SPD \PRIVATE\100012A5\POLICY\11335578.SPD -data=ZPRIVATE\100012A5\POLICY\11335579.SPD \PRIVATE\100012A5\POLICY\11335579.SPD -data=ZPRIVATE\100012A5\POLICY\1133557A.SPD \PRIVATE\100012A5\POLICY\1133557A.SPD -data=ZPRIVATE\100012A5\POLICY\12344321.SPD \PRIVATE\100012A5\POLICY\12344321.SPD -data=ZPRIVATE\100012A5\DBS_11335578_A.DB \PRIVATE\100012A5\Dbs_11335578_a.dB -data=ZPRIVATE\100012A5\DBS_11335578_B.DB \PRIVATE\100012A5\dbs_11335578_b.DB -data=ZPRIVATE\100012A5\DBS_11335578_Z.DB \PRIVATE\100012A5\dBS_11335578_z.db -data=ZPRIVATE\100012A5\DBS_11335579_TESTDB.DB \PRIVATE\100012A5\DbS_11335579_TEStdB.DB +data=ZPRIVATE\100012A5\POLICY\11335577.SPD \PRIVATE\100012A5\POLICY\11335577.SPD +data=ZPRIVATE\100012A5\POLICY\11335578.SPD \PRIVATE\100012A5\POLICY\11335578.SPD +data=ZPRIVATE\100012A5\POLICY\11335579.SPD \PRIVATE\100012A5\POLICY\11335579.SPD +data=ZPRIVATE\100012A5\POLICY\1133557A.SPD \PRIVATE\100012A5\POLICY\1133557A.SPD +data=ZPRIVATE\100012A5\POLICY\12344321.SPD \PRIVATE\100012A5\POLICY\12344321.SPD +data=ZPRIVATE\100012A5\DBS_11335578_A.DB \PRIVATE\100012A5\Dbs_11335578_a.dB +data=ZPRIVATE\100012A5\DBS_11335578_B.DB \PRIVATE\100012A5\dbs_11335578_b.DB +data=ZPRIVATE\100012A5\DBS_11335578_Z.DB \PRIVATE\100012A5\dBS_11335578_z.db +data=ZPRIVATE\100012A5\DBS_11335579_TESTDB.DB \PRIVATE\100012A5\DbS_11335579_TEStdB.DB data=ZPRIVATE\100012A5\DBS_12344321_1234567890123456789012345678901234567890123456789012345678901234567890.DB \PRIVATE\100012A5\DBS_12344321_1234567890123456789012345678901234567890123456789012345678901234567890.DB -data=ZPRIVATE\100012A5\DBS_1133557A_ZZZ.DB \PRIVATE\100012A5\DBS_1133557A_ZZZ.db +data=ZPRIVATE\100012A5\DBS_1133557A_ZZZ.DB \PRIVATE\100012A5\DBS_1133557A_ZZZ.db file=ABI_DIR\BUILD_DIR\TEST.DBX \SYSTEM\LIBS\TEST.DBX file=ABI_DIR\BUILD_DIR\T_DBENVCREATE.EXE \TEST\T_DBENVCREATE.EXE diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sql/GROUP/BLD.INF --- a/persistentstorage/sql/GROUP/BLD.INF Tue May 11 17:49:39 2010 +0300 +++ b/persistentstorage/sql/GROUP/BLD.INF Tue May 25 14:35:19 2010 +0300 @@ -43,8 +43,34 @@ PRJ_TESTEXPORTS -sqltests.iby /epoc32/rom/include/sqltests.iby -sqltests.bat /epoc32/data/z/system/test/sqltests.bat +sqltests.iby /epoc32/rom/include/sqltests.iby +sqltests.bat z:/test/sqltests.bat + +../TEST/TestDb1.db z:/test/testdb1.db +../TEST/CorruptDb.db z:/test/corruptdb.db +../TEST/contacts_schema_to_vendors.sql z:/test/contacts_schema_to_vendors.sql +../TEST/add_simple_contacts.sql z:/test/add_simple_contacts.sql +../TEST/t_SqlShortNonDb.db z:/test/t_sqlshortnondb.db +../TEST/contacts_startup_time.sql z:/test/contacts_startup_time.sql +../TEST/t_inc095412.db z:/test/t_inc095412.db +../TEST/default_avacon.dbSQL z:/test/default_avacon.dbSQL +../TEST/t_sqlbur_backup_ver0.bak z:/test/t_sqlbur_backup_ver0.bak +../TEST/t_sqlperformance4.sql z:/test/t_sqlperformance4.sql +../TEST/{21212122}AADb2.db z:/private/10281e17/[21212122]aadb2.db +../TEST/{21212122}BBDb2.db z:/private/10281e17/[21212122]bbdb2.db +../TEST/{21212125}T_AB.db z:/private/10281e17/[21212125]t_ab.db +../TEST/{1111CCCC}T_AB.db z:/private/10281e17/[1111CCCC]t_ab.db +../TEST/{21212125}T_OneDefPolicy.db z:/private/10281e17/[21212125]t_onedefpolicy.db +//../TEST/SqlServer.cfg z:/private/10281e17/sqlserver.cfg +../TEST/t_sqldb1.db z:/private/21212124/t_sqldb1.db +../TEST/{98765432}t_2defaultpolicies.db z:/private/10281e17/[98765432]t_2defaultpolicies.db +../TEST/{98765432}t_emptysettings.db z:/private/10281e17/[98765432]t_emptysettings.db +../TEST/{98765432}t_invobject.db z:/private/10281e17/[98765432]t_invobject.db +../TEST/{98765432}t_invversion.db z:/private/10281e17/[98765432]t_invversion.db +../TEST/{98765432}t_longcollation.db z:/private/10281e17/[98765432]t_longcollation.db +../TEST/{98765432}t_nocollation.db z:/private/10281e17/[98765432]t_nocollation.db +../TEST/{98765432}t_nodefaultpolicy.db z:/private/10281e17/[98765432]t_nodefaultpolicy.db +../TEST/{98765432}t_nosettings.db z:/private/10281e17/[98765432]t_nosettings.db PRJ_TESTMMPFILES @@ -85,6 +111,7 @@ t_sqlperformance2.mmp t_sqlperformance3.mmp t_sqlperformance4.mmp +t_sqlperformance5.mmp t_sqlood.mmp t_sqloslayer.mmp t_sqldefect.mmp @@ -110,12 +137,8 @@ t_sqlfilesrvcrash1.mmp manual t_sqlfilesrvcrash2.mmp manual #endif +t_sqlcorrupt.mmp t_sqlenvdestroy.mmp - -PRJ_TESTEXTENSIONS -start extension syslibs/test/sql_copysqltestfiles -end - #include "../TEST/testexecute/group/bld.inf" diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sql/GROUP/sqltests.bat --- a/persistentstorage/sql/GROUP/sqltests.bat Tue May 11 17:49:39 2010 +0300 +++ b/persistentstorage/sql/GROUP/sqltests.bat Tue May 25 14:35:19 2010 +0300 @@ -42,6 +42,7 @@ T_SQLPERFORMANCE2.EXE T_SQLPERFORMANCE3.EXE T_SQLPERFORMANCE4.EXE +T_SQLPERFORMANCE5.EXE T_SQLOOD.EXE T_SQLOSLAYER.EXE T_SQLDEFECT.EXE @@ -62,4 +63,5 @@ T_SQLFILEBUF64.EXE T_SQLAUTHORIZER.EXE T_SQLSTARTUP.EXE +T_SQLCORRUPT.EXE T_SQLENVDESTROY.EXE diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sql/GROUP/sqltests.iby --- a/persistentstorage/sql/GROUP/sqltests.iby Tue May 11 17:49:39 2010 +0300 +++ b/persistentstorage/sql/GROUP/sqltests.iby Tue May 25 14:35:19 2010 +0300 @@ -22,8 +22,6 @@ #include #include #include -#include - //Include the following to enable the ulogger server and the client tool. //This is used to perform tracing using the UTF2 @@ -31,32 +29,32 @@ //#include //#include -data=ZSYSTEM\test\sqlTests.bat \TEST\sqlTests.bat -data=ZSYSTEM\test\contacts_schema_to_vendors.sql \TEST\contacts_schema_to_vendors.sql -data=ZSYSTEM\test\add_simple_contacts.sql \TEST\add_simple_contacts.sql -data=ZSYSTEM\test\contacts_startup_time.sql \TEST\contacts_startup_time.sql -data=ZSYSTEM\test\TestDb1.DB \TEST\TestDb1.dB -data=ZSYSTEM\test\CorruptDb.DB \TEST\CorruptDb.dB -data=ZSYSTEM\test\t_SqlShortNonDb.db \TEST\t_SqlShortNonDb.db -data=ZPRIVATE\10281e17\[21212122]AADb2.db \PRIVATE\10281e17\[21212122]AADb2.db -data=ZPRIVATE\10281e17\[21212122]BBDb2.db \PRIVATE\10281e17\[21212122]BBDb2.db -data=ZPRIVATE\10281e17\[21212125]T_AB.db \PRIVATE\10281e17\[21212125]T_AB.db -data=ZPRIVATE\10281e17\[1111CCCC]T_AB.db \PRIVATE\10281e17\[1111CCCC]T_AB.db -data=ZPRIVATE\21212124\t_sqldb1.db \PRIVATE\21212124\t_sqldb1.db -data=ZSYSTEM\test\t_inc095412.db \TEST\t_inc095412.db -data=ZPRIVATE\10281e17\[21212125]T_OneDefPolicy.db \PRIVATE\10281e17\[21212125]T_OneDefPolicy.db -data=ZSYSTEM\test\default_avacon.dbSQL \TEST\default_avacon.dbSQL -data=ZPRIVATE\10281e17\[98765432]t_2defaultpolicies.db \PRIVATE\10281e17\[98765432]t_2defaultpolicies.db -data=ZPRIVATE\10281e17\[98765432]t_emptysettings.db \PRIVATE\10281e17\[98765432]t_emptysettings.db -data=ZPRIVATE\10281e17\[98765432]t_invobject.db \PRIVATE\10281e17\[98765432]t_invobject.db -data=ZPRIVATE\10281e17\[98765432]t_invversion.db \PRIVATE\10281e17\[98765432]t_invversion.db -data=ZPRIVATE\10281e17\[98765432]t_longcollation.db \PRIVATE\10281e17\[98765432]t_longcollation.db -data=ZPRIVATE\10281e17\[98765432]t_nocollation.db \PRIVATE\10281e17\[98765432]t_nocollation.db +data=DATAZ_\test\sqlTests.bat \TEST\sqlTests.bat + +data=DATAZ_\test\contacts_schema_to_vendors.sql \TEST\contacts_schema_to_vendors.sql +data=DATAZ_\test\add_simple_contacts.sql \TEST\add_simple_contacts.sql +data=DATAZ_\test\contacts_startup_time.sql \TEST\contacts_startup_time.sql +data=DATAZ_\test\TestDb1.DB \TEST\TestDb1.dB +data=DATAZ_\test\CorruptDb.DB \TEST\CorruptDb.dB +data=DATAZ_\test\t_SqlShortNonDb.db \TEST\t_SqlShortNonDb.db +data=DATAZ_\test\t_inc095412.db \TEST\t_inc095412.db +data=DATAZ_\test\default_avacon.dbSQL \TEST\default_avacon.dbSQL +data=DATAZ_\test\t_sqlbur_backup_ver0.bak \TEST\t_sqlbur_backup_ver0.bak +data=DATAZ_\test\t_sqlperformance4.sql \TEST\t_sqlperformance4.sql +data=ZPRIVATE\10281e17\[21212122]AADb2.db \PRIVATE\10281e17\[21212122]AADb2.db +data=ZPRIVATE\10281e17\[21212122]BBDb2.db \PRIVATE\10281e17\[21212122]BBDb2.db +data=ZPRIVATE\10281e17\[21212125]T_AB.db \PRIVATE\10281e17\[21212125]T_AB.db +data=ZPRIVATE\10281e17\[1111CCCC]T_AB.db \PRIVATE\10281e17\[1111CCCC]T_AB.db +data=ZPRIVATE\21212124\t_sqldb1.db \PRIVATE\21212124\t_sqldb1.db +data=ZPRIVATE\10281e17\[21212125]T_OneDefPolicy.db \PRIVATE\10281e17\[21212125]T_OneDefPolicy.db +data=ZPRIVATE\10281e17\[98765432]t_2defaultpolicies.db \PRIVATE\10281e17\[98765432]t_2defaultpolicies.db +data=ZPRIVATE\10281e17\[98765432]t_emptysettings.db \PRIVATE\10281e17\[98765432]t_emptysettings.db +data=ZPRIVATE\10281e17\[98765432]t_invobject.db \PRIVATE\10281e17\[98765432]t_invobject.db +data=ZPRIVATE\10281e17\[98765432]t_invversion.db \PRIVATE\10281e17\[98765432]t_invversion.db +data=ZPRIVATE\10281e17\[98765432]t_longcollation.db \PRIVATE\10281e17\[98765432]t_longcollation.db +data=ZPRIVATE\10281e17\[98765432]t_nocollation.db \PRIVATE\10281e17\[98765432]t_nocollation.db data=ZPRIVATE\10281e17\[98765432]t_nodefaultpolicy.db \PRIVATE\10281e17\[98765432]t_nodefaultpolicy.db -data=ZPRIVATE\10281e17\[98765432]t_nosettings.db \PRIVATE\10281e17\[98765432]t_nosettings.db -data=ZSYSTEM\test\t_sqlbur_backup_ver0.bak \TEST\t_sqlbur_backup_ver0.bak -data=ZSYSTEM\test\t_sqlperformance4.sql \TEST\t_sqlperformance4.sql - +data=ZPRIVATE\10281e17\[98765432]t_nosettings.db \PRIVATE\10281e17\[98765432]t_nosettings.db file=ABI_DIR\BUILD_DIR\T_SQLENVCREATE.EXE \TEST\T_SQLENVCREATE.EXE file=ABI_DIR\BUILD_DIR\T_SQLITE.EXE \TEST\T_SQLITE.EXE @@ -87,6 +85,7 @@ file=ABI_DIR\BUILD_DIR\T_SQLPERFORMANCE2.EXE \TEST\T_SQLPERFORMANCE2.EXE file=ABI_DIR\BUILD_DIR\T_SQLPERFORMANCE3.EXE \TEST\T_SQLPERFORMANCE3.EXE file=ABI_DIR\BUILD_DIR\T_SQLPERFORMANCE4.EXE \TEST\T_SQLPERFORMANCE4.EXE +file=ABI_DIR\BUILD_DIR\T_SQLPERFORMANCE5.EXE \TEST\T_SQLPERFORMANCE5.EXE file=ABI_DIR\BUILD_DIR\T_SQLOOD.EXE \TEST\T_SQLOOD.EXE file=ABI_DIR\BUILD_DIR\T_SQLOSLAYER.EXE \TEST\T_SQLOSLAYER.EXE file=ABI_DIR\BUILD_DIR\T_SQLDEFECT.EXE \TEST\T_SQLDEFECT.EXE @@ -110,6 +109,7 @@ file=ABI_DIR\BUILD_DIR\T_SQLDB64.EXE \TEST\T_SQLDB64.EXE file=ABI_DIR\BUILD_DIR\T_SQLFILESRVCRASH1.EXE \TEST\T_SQLFILESRVCRASH1.EXE file=ABI_DIR\BUILD_DIR\T_SQLFILESRVCRASH2.EXE \TEST\T_SQLFILESRVCRASH2.EXE +file=ABI_DIR\BUILD_DIR\T_SQLCORRUPT.EXE \TEST\T_SQLCORRUPT.EXE file=ABI_DIR\BUILD_DIR\T_SQLENVDESTROY.EXE \TEST\T_SQLENVDESTROY.EXE #endif diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sql/GROUP/t_sqlcompact.mmp --- a/persistentstorage/sql/GROUP/t_sqlcompact.mmp Tue May 11 17:49:39 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - -TARGET t_sqlcompact.exe -TARGETTYPE EXE -CAPABILITY None - -OS_LAYER_SYSTEMINCLUDE_SYMBIAN -OS_LAYER_ESTLIB_SYSTEMINCLUDE -USERINCLUDE . -USERINCLUDE ../SRC/Common -USERINCLUDE ../SRC/Server/Compact -USERINCLUDE ../SRC/Server -#ifdef SYMBIAN_USE_SQLITE_VERSION_3_6_4 -USERINCLUDE ../SQLite364 -#else -USERINCLUDE ../SQLite -#endif - -SOURCEPATH ../SRC/Common -SOURCE SqlUtil.cpp - -SOURCEPATH ../SRC/Server/Compact -SOURCE SqlCompact.cpp SqlCompactEntry.cpp SqlCompactTimer.cpp - -SOURCEPATH ../SRC/Server -SOURCE SqlSrvStatementUtil.cpp SqlSrvStrings.cpp SqlSrvUtil.cpp - -SOURCEPATH ../TEST -SOURCE t_sqlcompact.cpp - -LIBRARY euser.lib -LIBRARY estlib.lib -LIBRARY efsrv.lib -LIBRARY charconv.lib -LIBRARY estor.lib -LIBRARY hal.lib -STATICLIBRARY sqlite.lib - -VENDORID 0x70000001 - -SMPSAFE \ No newline at end of file diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sql/GROUP/t_sqlcorrupt.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/persistentstorage/sql/GROUP/t_sqlcorrupt.mmp Tue May 25 14:35:19 2010 +0300 @@ -0,0 +1,36 @@ +// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// +#include + +TARGET t_sqlcorrupt.exe +TARGETTYPE EXE +CAPABILITY ProtServ AllFiles + +USERINCLUDE . +OS_LAYER_SYSTEMINCLUDE_SYMBIAN + +SOURCEPATH ../TEST +SOURCE t_sqlcorrupt.cpp + +LIBRARY euser.lib +LIBRARY efsrv.lib +LIBRARY sqldb.lib +LIBRARY bafl.lib +LIBRARY estor.lib + +UID 0 0x08770000 +VENDORID 0x70000001 + +SMPSAFE \ No newline at end of file diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sql/GROUP/t_sqlperformance.mmp --- a/persistentstorage/sql/GROUP/t_sqlperformance.mmp Tue May 11 17:49:39 2010 +0300 +++ b/persistentstorage/sql/GROUP/t_sqlperformance.mmp Tue May 25 14:35:19 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -40,7 +40,7 @@ #endif SOURCEPATH ../TEST -SOURCE t_sqlperformance.cpp +SOURCE t_sqlperformance.cpp t_sqlcmdlineutil.cpp SOURCEPATH ../SRC/Common SOURCE SqlUtil.cpp diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sql/GROUP/t_sqlperformance2.mmp --- a/persistentstorage/sql/GROUP/t_sqlperformance2.mmp Tue May 11 17:49:39 2010 +0300 +++ b/persistentstorage/sql/GROUP/t_sqlperformance2.mmp Tue May 25 14:35:19 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -22,7 +22,7 @@ EPOCHEAPSIZE 0x00200000 0x02000000 //2Mb initial heap size SOURCEPATH ../TEST -SOURCE t_sqlperformance2.cpp +SOURCE t_sqlperformance2.cpp t_sqlcmdlineutil.cpp LIBRARY euser.lib LIBRARY efsrv.lib diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sql/GROUP/t_sqlperformance3.mmp --- a/persistentstorage/sql/GROUP/t_sqlperformance3.mmp Tue May 11 17:49:39 2010 +0300 +++ b/persistentstorage/sql/GROUP/t_sqlperformance3.mmp Tue May 25 14:35:19 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -21,7 +21,7 @@ OS_LAYER_SYSTEMINCLUDE_SYMBIAN SOURCEPATH ../TEST -SOURCE t_sqlperformance3.cpp +SOURCE t_sqlperformance3.cpp t_sqlcmdlineutil.cpp LIBRARY euser.lib LIBRARY efsrv.lib diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sql/GROUP/t_sqlperformance4.mmp --- a/persistentstorage/sql/GROUP/t_sqlperformance4.mmp Tue May 11 17:49:39 2010 +0300 +++ b/persistentstorage/sql/GROUP/t_sqlperformance4.mmp Tue May 25 14:35:19 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -23,7 +23,7 @@ EPOCHEAPSIZE 0x00200000 0x02000000 //2Mb initial heap size SOURCEPATH ../TEST -SOURCE t_sqlperformance4.cpp +SOURCE t_sqlperformance4.cpp t_sqlcmdlineutil.cpp LIBRARY euser.lib LIBRARY efsrv.lib diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sql/GROUP/t_sqlperformance5.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/persistentstorage/sql/GROUP/t_sqlperformance5.mmp Tue May 25 14:35:19 2010 +0300 @@ -0,0 +1,36 @@ +// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: MDS harvesting performance test +// + +TARGET t_sqlperformance5.exe +TARGETTYPE EXE +CAPABILITY All -Tcb + +USERINCLUDE . +OS_LAYER_SYSTEMINCLUDE_SYMBIAN + +SOURCEPATH ../TEST +SOURCE t_sqlperformance5.cpp t_sqlcmdlineutil.cpp + +LIBRARY euser.lib +LIBRARY efsrv.lib +LIBRARY sqldb.lib +LIBRARY bafl.lib +LIBRARY hal.lib +LIBRARY estor.lib + +UID 0 0x2121228F +VENDORID 0x70000001 + +SMPSAFE diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sql/OsLayer/FileBuf64.cpp --- a/persistentstorage/sql/OsLayer/FileBuf64.cpp Tue May 11 17:49:39 2010 +0300 +++ b/persistentstorage/sql/OsLayer/FileBuf64.cpp Tue May 25 14:35:19 2010 +0300 @@ -28,7 +28,7 @@ if(TheOsCallTimeDetailedProfileEnabled) \ { \ ++iFileReadCount; iFileReadAmount += (amount); \ - RDebug::Print(_L("[SQL-FBUF]¬RD¬%X¬%d¬%ld¬%d¬%ld¬%d\r\n"), (TUint32)this, iFileReadCount, pos, amount, iFileReadAmount, err); \ + RDebug::Print(_L("[SQL-FBUF]¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬\"%X\"¬Read¬%d¬%ld¬%d¬%ld¬%d\r\n"), (TUint32)this, iFileReadCount, pos, amount, iFileReadAmount, err); \ } \ } while(0) @@ -38,7 +38,7 @@ if(TheOsCallTimeDetailedProfileEnabled) \ { \ ++iFileWriteCount; iFileWriteAmount += (amount); \ - RDebug::Print(_L("[SQL-FBUF]¬WR¬%X¬%d¬%ld¬%d¬%ld¬%d\r\n"), (TUint32)this, iFileWriteCount, pos, amount, iFileWriteAmount, err); \ + RDebug::Print(_L("[SQL-FBUF]¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬\"%X\"¬Write¬%d¬%ld¬%d¬%ld¬%d\r\n"), (TUint32)this, iFileWriteCount, pos, amount, iFileWriteAmount, err); \ } \ } while(0) @@ -48,7 +48,7 @@ if(TheOsCallTimeDetailedProfileEnabled) \ { \ ++iFileSizeCount; \ - RDebug::Print(_L("[SQL-FBUF]¬SZ¬%X¬%d¬%ld¬%d¬%ld¬%d\r\n"), (TUint32)this, iFileSizeCount, size, 0, 0LL, err); \ + RDebug::Print(_L("[SQL-FBUF]¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬\"%X\"¬Size¬%d¬%ld¬¬¬%d\r\n"), (TUint32)this, iFileSizeCount, size, err); \ } \ } while(0) @@ -58,7 +58,7 @@ if(TheOsCallTimeDetailedProfileEnabled) \ { \ ++iFileSetSizeCount; \ - RDebug::Print(_L("[SQL-FBUF]¬SS¬%X¬%d¬%ld¬%d¬%ld¬%d\r\n"), (TUint32)this, iFileSetSizeCount, size, 0, 0LL, err); \ + RDebug::Print(_L("[SQL-FBUF]¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬\"%X\"¬SetSize¬%d¬%ld¬¬¬%d\r\n"), (TUint32)this, iFileSetSizeCount, size, err); \ } \ } while(0) @@ -68,7 +68,7 @@ if(TheOsCallTimeDetailedProfileEnabled) \ { \ ++iFileFlushCount; \ - RDebug::Print(_L("[SQL-FBUF]¬SY¬%X¬%d¬%ld¬%d¬%ld¬%d\r\n"), (TUint32)this, iFileFlushCount, 0LL, 0, 0LL, err); \ + RDebug::Print(_L("[SQL-FBUF]¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬\"%X\"¬Flush¬%d¬¬¬¬%d\r\n"), (TUint32)this, iFileFlushCount, err); \ } \ } while(0) @@ -77,7 +77,7 @@ { \ if(TheOsCallTimeDetailedProfileEnabled) \ { \ - RDebug::Print(_L("[SQL-FBUF]¬CR¬%X¬%S¬%d\r\n"), (TUint32)this, &fname, err); \ + RDebug::Print(_L("[SQL-FBUF]¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬\"%X\"¬Create¬¬¬¬¬%d¬%S\r\n"), (TUint32)this, err, &fname); \ } \ } while(0) @@ -86,7 +86,7 @@ { \ if(TheOsCallTimeDetailedProfileEnabled) \ { \ - RDebug::Print(_L("[SQL-FBUF]¬OP¬%X¬%S¬%d\r\n"), (TUint32)this, &fname, err); \ + RDebug::Print(_L("[SQL-FBUF]¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬\"%X\"¬Open¬¬¬¬¬%d¬%S\r\n"), (TUint32)this, err, &fname); \ } \ } while(0) @@ -95,7 +95,7 @@ { \ if(TheOsCallTimeDetailedProfileEnabled) \ { \ - RDebug::Print(_L("[SQL-FBUF]¬TP¬%X¬%S¬%d\r\n"), (TUint32)this, &fname, err); \ + RDebug::Print(_L("[SQL-FBUF]¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬\"%X\"¬Temp¬¬¬¬¬%d¬%S\r\n"), (TUint32)this, err, &fname); \ } \ } while(0) @@ -104,7 +104,7 @@ { \ if(TheOsCallTimeDetailedProfileEnabled) \ { \ - RDebug::Print(_L("[SQL-FBUF]¬AT¬%X¬%S¬%d\r\n"), (TUint32)this, &fname, err); \ + RDebug::Print(_L("[SQL-FBUF]¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬\"%X\"¬Adopt¬¬¬¬¬%d¬%S\r\n"), (TUint32)this, err, &fname); \ } \ } while(0) @@ -113,7 +113,7 @@ { \ if(TheOsCallTimeDetailedProfileEnabled) \ { \ - RDebug::Print(_L("[SQL-FBUF]¬CL¬%X\r\n"), (TUint32)this); \ + RDebug::Print(_L("[SQL-FBUF]¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬\"%X\"¬Close¬¬¬¬¬¬\r\n"), (TUint32)this); \ } \ } while(0) @@ -195,6 +195,7 @@ EFBufPanicNextReadFilePos, EFBufPanicNextReadFilePosHits, EFBufPanicFileBlockSize, //15 + EFBufPanicRwDataLength, }; /** @@ -249,15 +250,16 @@ /** Initializes RFileBuf64 data members with their default values. -@param aSize Max file buffer size (capacity) in bytes. +@param aMinCapacity Minimal file buffer size (capacity) in bytes. -@panic FBuf64 1 In _DEBUG mode - aSize is 0 or negative. +@panic FBuf64 1 In _DEBUG mode - aMinCapacity is 0 or negative. */ -RFileBuf64::RFileBuf64(TInt aSize) : - iCapacity(aSize), - iReadAheadSize(RFileBuf64::KDefaultReadAheadSize) +RFileBuf64::RFileBuf64(TInt aMinCapacity) : + iCapacity(aMinCapacity), + iReadAheadSize(RFileBuf64::KDefaultReadAheadSize), + iOptimized(EFalse) { - __FBUF64_ASSERT(aSize > 0, EFBufPanicCapacity); + __FBUF64_ASSERT(aMinCapacity > 0, EFBufPanicCapacity); } /** @@ -473,21 +475,26 @@ __FBUF64_ASSERT(aFilePos >= 0, EFBufPanicFilePos); __FILEBUF64_INVARIANT(); aDes.SetLength(0); - //1. The output buffer max len is 0 + //0. The output buffer max len is 0 if(aDes.MaxLength() == 0) { __FILEBUF64_INVARIANT(); return KErrNone; } - //2. Initialize the "iFileSize" if it is not initialized yet + //1. Initialize the "iFileSize" if it is not initialized yet TInt err = DoFileSize(); if(err != KErrNone) { __FILEBUF64_INVARIANT(); return err; } + //2. Optimize the buffer capacity + TInt len = aDes.MaxLength(); + if((err = DoSetCapacity(len)) != KErrNone) + { + return err; + } //3. Too big "read" request - read directly from the file - TInt len = aDes.MaxLength(); if(len > iCapacity) { if((aFilePos + len) > iFilePos && aFilePos < (iFilePos + iLength)) @@ -537,7 +544,7 @@ break; } //The guessed from the previous "file read" operation file pos is correct. Start reading-ahead. - const TInt KMaxReadFilePosHits = 8;//The max read-ahead buffer size can be up to 2^8 times the iReadAheadSize + const TInt KMaxReadFilePosHits = 4;//The max read-ahead buffer size can be up to 2^4 times the iReadAheadSize if(iNextReadFilePosHits < KMaxReadFilePosHits) { ++iNextReadFilePosHits; @@ -608,6 +615,10 @@ __FILEBUF64_INVARIANT(); return err; } + if((err = DoSetCapacity(aData.Length())) != KErrNone) + { + return err; + } DoDiscardBufferedReadData(); const TUint8* data = aData.Ptr(); for(TInt len = aData.Length(); len > 0 && err == KErrNone;) @@ -1078,6 +1089,64 @@ __FILEBUF64_INVARIANT(); } +/** +Sets the most appropriate buffer capacity based on the database page size. +The function does a lazy evaluation. The first time the function is called and +aRwDataLength parameter is recognized to be a database or journal page size, the new (optimal) +buffer capacity is calculated and set. All next DoSetCapacity() calls will detect that the new +capacity is already set and will return KErrNone. + +@param aRwDataLength The length of the data being read or written. +@return KErrNone The new capacity was set successfully, + KErrNoMemory Out of memory. +*/ +TInt RFileBuf64::DoSetCapacity(TInt aRwDataLength) + { + const TInt KMinPageCount = 4;//the buffer capacity should be at least (KMinPageCount * page size) + //but not less than the original capacity. + const TInt KDefaultPageSize = 1024;//The journal header size is equal to 512 bytes, so it is not easy + //to detect the 512 bytes page size. + + __FBUF64_ASSERT(aRwDataLength >= 0, EFBufPanicRwDataLength); + __FILEBUF64_INVARIANT(); + if(iOptimized || aRwDataLength == 0) + { + __FILEBUF64_INVARIANT(); + return KErrNone; + } + if((aRwDataLength & (aRwDataLength - 1)) != 0 || aRwDataLength < KDefaultPageSize) + { + __FILEBUF64_INVARIANT(); + return KErrNone; + } + //Here: aRwDataLength is power of 2 and is bigger than the default db page size. + //aRwDataLength is the size of the db page. + const TInt pageSize = aRwDataLength; + TInt cnt = iCapacity / pageSize;//how many pages can fit in the buffer now + TInt pageCount = Max(cnt, KMinPageCount);//the number of pages that should fit in the new buffer + TInt newBufCapacity = pageCount * pageSize; + if(newBufCapacity != iCapacity) + { + TUint8* newBase = static_cast (User::ReAlloc(iBase, newBufCapacity)); + if(!newBase) + { + __FILEBUF64_INVARIANT(); + return KErrNoMemory; + } + iBase = newBase; + iCapacity = newBufCapacity; + //Adjust the initial read-ahead size to be multiple of the page size. + if((iReadAheadSize % pageSize) != 0) + { + TInt q = iReadAheadSize / pageSize; + iReadAheadSize = q != 0 ? pageSize * q : pageSize; + } + } + iOptimized = ETrue; + __FILEBUF64_INVARIANT(); + return KErrNone; + } + #ifdef _DEBUG /** @@ -1093,7 +1162,7 @@ @panic FBuf64 6 In _DEBUG mode - null file handle (the RFile64 object is not created or already destroyed). @panic FBuf64 13 In _DEBUG mode - set but negative iNextReadFilePos value. @panic FBuf64 14 In _DEBUG mode - negative iNextReadFilePosHits value. -@panic FBuf64 15 In _DEBUG mode - iReadAheadSize is negative or is not power of two. +@panic FBuf64 15 In _DEBUG mode - iReadAheadSize is negative or is bigger than iCapacity. */ void RFileBuf64::Invariant() const { @@ -1106,7 +1175,7 @@ __FBUF64_ASSERT(iFile.SubSessionHandle() != 0, EFBufPanicFileHandle); __FBUF64_ASSERT(iNextReadFilePos == KNextReadFilePosNotSet || iNextReadFilePos >= 0, EFBufPanicNextReadFilePos); __FBUF64_ASSERT(iNextReadFilePosHits >= 0, EFBufPanicNextReadFilePosHits); - __FBUF64_ASSERT(iReadAheadSize > 0 && (iReadAheadSize & (iReadAheadSize - 1)) == 0, EFBufPanicFileBlockSize); + __FBUF64_ASSERT(iReadAheadSize > 0, EFBufPanicFileBlockSize); } #endif diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sql/OsLayer/FileBuf64.h --- a/persistentstorage/sql/OsLayer/FileBuf64.h Tue May 11 17:49:39 2010 +0300 +++ b/persistentstorage/sql/OsLayer/FileBuf64.h Tue May 25 14:35:19 2010 +0300 @@ -36,7 +36,7 @@ - an object of RFileBuf64 type must be defined first, specifying the max size (capacity) of the buffer as a parameter of the constructor: - RFileBuf64 fbuf();// is the buffer capacity in bytes + RFileBuf64 fbuf();// is the minimal buffer capacity in bytes - the second step is to initialize the just defined RFileBuf64 object by calling one of the "resource acquisition" methods: RFileBuf64::Create(), RFileBuf64::Open(), RFileBuf64::Temp() or RFileBuf64::AdoptFromClient(). @@ -141,7 +141,7 @@ enum {KDefaultReadAheadSize = 1024};//Default size in bytes of the read-ahead buffer public: - RFileBuf64(TInt aSize); + RFileBuf64(TInt aMinCapacity); TInt Create(RFs& aFs, const TDesC& aFileName, TUint aFileMode); TInt Open(RFs& aFs, const TDesC& aFileName, TUint aFileMode); @@ -171,10 +171,11 @@ TInt DoFileWrite1(TInt64 aNewFilePos); TInt DoFileWrite2(TInt64 aNewFilePos = 0LL); void DoDiscardBufferedReadData(); + TInt DoSetCapacity(TInt aRwDataLength); private: //Buffer related - const TInt iCapacity; //The buffer size. Indicates how much data can be put in. + TInt iCapacity; //The buffer size. Indicates how much data can be put in. TUint8* iBase; //Pointer to the beginning of the buffer. TInt iLength; //The length of the data currently held in the buffer. //File related @@ -186,6 +187,8 @@ TInt64 iNextReadFilePos; //The guessed file position of the next "file read" operation TInt iNextReadFilePosHits; //How many times the guessed file position of the "file read" operation was correct TInt iReadAheadSize; + // + TBool iOptimized; //True if the file buffer capacity has been optimized already //Profiler related #ifdef _SQLPROFILER diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sql/OsLayer/os_symbian.cpp --- a/persistentstorage/sql/OsLayer/os_symbian.cpp Tue May 11 17:49:39 2010 +0300 +++ b/persistentstorage/sql/OsLayer/os_symbian.cpp Tue May 25 14:35:19 2010 +0300 @@ -332,14 +332,13 @@ // - iBytesTotal - the total amount of bytes passed to the monitored OS porting layer function (if it is read or write); struct TOsCallProfile { - TOsCallProfile(char aType, char aIdentifier[]) : + TOsCallProfile(char aType, const TDesC& aIdentifier) : iType(aType), + iIdentifier(aIdentifier), iCallCounter(0), iTicksTotal(0), iBytesTotal(0) { - iIdentifier[0] = aIdentifier[0]; - iIdentifier[1] = aIdentifier[1]; } void Zero() { @@ -348,7 +347,7 @@ iBytesTotal = 0; } char iType; - char iIdentifier[2]; + TBuf<32> iIdentifier; TInt iCallCounter; TInt64 iTicksTotal; TInt64 iBytesTotal; @@ -358,22 +357,22 @@ //the function was used on the main database file TOsCallProfile TheOsCallMProfile[EOsOpLast] = { - TOsCallProfile('M', "CL"), TOsCallProfile('M', "RD"), TOsCallProfile('M', "WR"), TOsCallProfile('M', "TR"), - TOsCallProfile('M', "SY"), TOsCallProfile('M', "FS"), TOsCallProfile('M', "LK"), TOsCallProfile('M', "UL"), - TOsCallProfile('M', "RL"), TOsCallProfile('M', "FC"), TOsCallProfile('M', "SS"), TOsCallProfile('M', "DC"), - TOsCallProfile('M', "OP"), TOsCallProfile('M', "DE"), TOsCallProfile('M', "AC"), TOsCallProfile('M', "FN"), - TOsCallProfile('M', "RN"), TOsCallProfile('M', "SL"), TOsCallProfile('M', "CT"), TOsCallProfile('M', "LE") + TOsCallProfile('M', _L("Close")), TOsCallProfile('M', _L("Read")), TOsCallProfile('M', _L("Write")), TOsCallProfile('M', _L("Truncate")), + TOsCallProfile('M', _L("Sync")), TOsCallProfile('M', _L("Size")), TOsCallProfile('M', _L("Lock")), TOsCallProfile('M', _L("Unlock")), + TOsCallProfile('M', _L("CheckReservedLock")), TOsCallProfile('M', _L("FileControl")), TOsCallProfile('M', _L("SetSize")), TOsCallProfile('M', _L("DeviceCharacteristics")), + TOsCallProfile('M', _L("Open")), TOsCallProfile('M', _L("Delete")), TOsCallProfile('M', _L("Access")), TOsCallProfile('M', _L("FullPath")), + TOsCallProfile('M', _L("Randomness")), TOsCallProfile('M', _L("Sleep")), TOsCallProfile('M', _L("CurrentTime")), TOsCallProfile('M', _L("GetLastError")) }; //An array of TOsCallProfile entries, each entry keeps the profile of a specifc OS porting layer function, when //the function was used on the journal file TOsCallProfile TheOsCallJProfile[EOsOpLast] = { - TOsCallProfile('J', "CL"), TOsCallProfile('J', "RD"), TOsCallProfile('J', "WR"), TOsCallProfile('J', "TR"), - TOsCallProfile('J', "SY"), TOsCallProfile('J', "FS"), TOsCallProfile('J', "LK"), TOsCallProfile('J', "UL"), - TOsCallProfile('J', "RL"), TOsCallProfile('J', "FC"), TOsCallProfile('J', "SS"), TOsCallProfile('J', "DC"), - TOsCallProfile('J', "OP"), TOsCallProfile('J', "DE"), TOsCallProfile('J', "AC"), TOsCallProfile('J', "FN"), - TOsCallProfile('J', "RN"), TOsCallProfile('J', "SL"), TOsCallProfile('J', "CT"), TOsCallProfile('J', "LE") + TOsCallProfile('J', _L("Close")), TOsCallProfile('J', _L("Read")), TOsCallProfile('J', _L("Write")), TOsCallProfile('J', _L("Truncate")), + TOsCallProfile('J', _L("Sync")), TOsCallProfile('J', _L("Size")), TOsCallProfile('J', _L("Lock")), TOsCallProfile('J', _L("Unlock")), + TOsCallProfile('J', _L("CheckReservedLock")), TOsCallProfile('J', _L("FileControl")), TOsCallProfile('J', _L("SetSize")), TOsCallProfile('J', _L("DeviceCharacteristics")), + TOsCallProfile('J', _L("Open")), TOsCallProfile('J', _L("Delete")), TOsCallProfile('J', _L("Access")), TOsCallProfile('J', _L("FullPath")), + TOsCallProfile('J', _L("Randomness")), TOsCallProfile('J', _L("Sleep")), TOsCallProfile('J', _L("CurrentTime")), TOsCallProfile('J', _L("GetLastError")) }; //The main class for the OS porting layer call profiles. @@ -421,20 +420,25 @@ TPtrC8 fn8(iOptional); fname.Copy(fn8); } - // 0 1 2 3 4 5 6 7 8 9 10 11 - RDebug::Print(_L("[SQL-OS]¬%X¬%c¬%c%c¬%d¬%d¬%ld¬%d¬%ld¬%ld¬%ld¬%S\n"), - iHandle, //0 - iOsCallProfileRef.iType, //1 - iOsCallProfileRef.iIdentifier[0], //2 - iOsCallProfileRef.iIdentifier[1], //3 - TheOpCounter, //4 - iOsCallProfileRef.iCallCounter, //5 - iOffset, //6 - iBytes, //7 - diffTicks, //8 - iOsCallProfileRef.iBytesTotal, //9 - iOsCallProfileRef.iTicksTotal, //10 - &fname); //11 + // 0 1 2 3 4 5 6 7 8 9 10 + RDebug::Print(_L("[SQL-OS]¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬\"%X\"¬%c¬%S¬%d¬%d¬%ld¬%d¬%ld¬%ld¬%ld¬%S\n"), + //[SQL-OS] + //Handle + //Time from start, microseconds + //Subtype + //IPC sequence counter + //IPC call name + iHandle, //sqlite3_file* + iOsCallProfileRef.iType, //1 - main or journal file + &iOsCallProfileRef.iIdentifier, //2 - operation type + TheOpCounter, //3 - Operation counter + iOsCallProfileRef.iCallCounter, //4 - This call type counter + iOffset, //5 - File offset + iBytes, //6 - Data, bytes + diffTicks, //7 - Ticks + iOsCallProfileRef.iBytesTotal, //8 - Data total, bytes + iOsCallProfileRef.iTicksTotal, //9 - Ticks total + &fname); //10- File name } } } diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sql/SQLite/callback.c --- a/persistentstorage/sql/SQLite/callback.c Tue May 11 17:49:39 2010 +0300 +++ b/persistentstorage/sql/SQLite/callback.c Tue May 25 14:35:19 2010 +0300 @@ -217,7 +217,7 @@ pColl = db->pDfltColl; } assert( SQLITE_UTF8==1 && SQLITE_UTF16LE==2 && SQLITE_UTF16BE==3 ); - assert( enc>=SQLITE_UTF8 && enc<=SQLITE_UTF16BE ); + /*assert( enc>=SQLITE_UTF8 && enc<=SQLITE_UTF16BE );*/ if( pColl ) pColl += enc-1; return pColl; } diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sql/SRC/Common/SqlBufIterator.cpp --- a/persistentstorage/sql/SRC/Common/SqlBufIterator.cpp Tue May 11 17:49:39 2010 +0300 +++ b/persistentstorage/sql/SRC/Common/SqlBufIterator.cpp Tue May 25 14:35:19 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -214,11 +214,15 @@ /** @return Represents the content of a text or a binary field as a stream of bytes. -@leave KErrNoMemory, out of memory condition has occured; +@leave KErrNoMemory, out of memory condition has occured, + KErrArgument, the column type is not text, blob or null; */ MStreamBuf* TSqlBufRIterator::StreamL() const { __SQLASSERT(iCurrent >= iBegin && iCurrent < iEnd, ESqlPanicInternalError); - __SQLASSERT(::IsSequenceSqlType(Type()), ESqlPanicInternalError); + if(!::IsSequenceSqlType(Type())) + { + __SQLLEAVE(KErrArgument); + } return HReadOnlyBuf::NewL(reinterpret_cast (iBegin) + iCurrent->iPos, iCurrent->Size()); } diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sql/SRC/Security/SqlSecurity.cpp --- a/persistentstorage/sql/SRC/Security/SqlSecurity.cpp Tue May 11 17:49:39 2010 +0300 +++ b/persistentstorage/sql/SRC/Security/SqlSecurity.cpp Tue May 25 14:35:19 2010 +0300 @@ -105,7 +105,8 @@ { SQLUTRACE_PROFILER(this); __SQLASSERT_ALWAYS(aPolicyType >= ESchemaPolicy && aPolicyType <= EWritePolicy, ESqlPanicBadArgument); - return Impl().SetDbPolicy(aPolicyType, aPolicy); + Impl().SetDbPolicy(aPolicyType, aPolicy); + return KErrNone; } /** diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sql/SRC/Security/SqlSecurityImpl.cpp --- a/persistentstorage/sql/SRC/Security/SqlSecurityImpl.cpp Tue May 11 17:49:39 2010 +0300 +++ b/persistentstorage/sql/SRC/Security/SqlSecurityImpl.cpp Tue May 25 14:35:19 2010 +0300 @@ -179,11 +179,9 @@ RSqlSecurityPolicy::EReadPolicy, RSqlSecurityPolicy::EWritePolicy. @param aPolicy Security policy data used for setting the related database security policy. -@return KErrNone - @panic SqlDb 4 In _DEBUG mode. Invalid policy type. */ -TInt CSqlSecurityPolicy::SetDbPolicy(RSqlSecurityPolicy::TPolicyType aPolicyType, const TSecurityPolicy& aPolicy) +void CSqlSecurityPolicy::SetDbPolicy(RSqlSecurityPolicy::TPolicyType aPolicyType, const TSecurityPolicy& aPolicy) { const TInt KPolicyIndex = CSqlSecurityPolicy::PolicyType2Index(aPolicyType); __SQLASSERT((TUint)KPolicyIndex < EPolicyTypeCount, ESqlPanicBadArgument); @@ -194,7 +192,6 @@ //KPolicyIndex value is tested at the beginning of the function //coverity[overrun-local] item->iPolicy[KPolicyIndex] = aPolicy; - return KErrNone; } /** diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sql/SRC/Security/SqlSecurityImpl.h --- a/persistentstorage/sql/SRC/Security/SqlSecurityImpl.h Tue May 11 17:49:39 2010 +0300 +++ b/persistentstorage/sql/SRC/Security/SqlSecurityImpl.h Tue May 25 14:35:19 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -73,7 +73,7 @@ static CSqlSecurityPolicy* NewLC(const TSecurityPolicy& aDefaultPolicy); virtual ~CSqlSecurityPolicy(); void SetDefaultPolicy(const TSecurityPolicy& aPolicy); - TInt SetDbPolicy(RSqlSecurityPolicy::TPolicyType aPolicyType, const TSecurityPolicy& aPolicy); + void SetDbPolicy(RSqlSecurityPolicy::TPolicyType aPolicyType, const TSecurityPolicy& aPolicy); TInt SetPolicy(RSqlSecurityPolicy::TObjectType aObjectType, const TDesC& aObjectName, RSqlSecurityPolicy::TPolicyType aPolicyType, const TSecurityPolicy& aPolicy); TSecurityPolicy DefaultPolicy() const; TSecurityPolicy DbPolicy(RSqlSecurityPolicy::TPolicyType aPolicyType) const; diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sql/SRC/Server/SqlSrvConfig.h --- a/persistentstorage/sql/SRC/Server/SqlSrvConfig.h Tue May 11 17:49:39 2010 +0300 +++ b/persistentstorage/sql/SRC/Server/SqlSrvConfig.h Tue May 25 14:35:19 2010 +0300 @@ -50,7 +50,12 @@ enum TDbEncoding {EEncNotSet, EEncUtf8, EEncUtf16};//Database encoding: the default value for iDbEncoding is EEncNotSet enum { - KDefaultSoftHeapLimitKb = 1024, +#ifdef __WINSCW__ + KDefaultSoftHeapLimitKb = 1024, +#else + KDefaultSoftHeapLimitKb = 8192, +#endif + #ifdef SYSLIBS_TEST KMinSoftHeapLimitKb = 8, #else diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sql/SRC/Server/SqlSrvDatabase.cpp --- a/persistentstorage/sql/SRC/Server/SqlSrvDatabase.cpp Tue May 11 17:49:39 2010 +0300 +++ b/persistentstorage/sql/SRC/Server/SqlSrvDatabase.cpp Tue May 25 14:35:19 2010 +0300 @@ -963,12 +963,8 @@ err = StmtExec(stmtHandle); } } - TInt err2 = ::FinalizeStmtHandle(stmtHandle); + (void)::FinalizeStmtHandle(stmtHandle);//sqlite3_finalize() fails only if an invalid statement handle is passed. CleanupStack::PopAndDestroy();//TCleanupItem(&EnableAuthorizer, &iAuthorizerDisabled) - if(err == KErrNone && err2 != KErrNone) - {//::FinalizeStmtHandle() has failed - err = err2; - } __SQLLEAVE_IF_ERROR(err); TAttachCleanup attachCleanup(*this, aDbName); @@ -1013,11 +1009,7 @@ err = StmtExec(stmtHandle); } } - TInt err2 = ::FinalizeStmtHandle(stmtHandle); - if(err == KErrNone && err2 != KErrNone) - {//::FinalizeStmtHandle() has failed - err = err2; - } + (void)::FinalizeStmtHandle(stmtHandle);//sqlite3_finalize() fails only if an invalid statement handle is passed. iAuthorizerDisabled = EFalse; return err; } diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sql/SRC/Server/SqlSrvDbSysSettings.cpp --- a/persistentstorage/sql/SRC/Server/SqlSrvDbSysSettings.cpp Tue May 11 17:49:39 2010 +0300 +++ b/persistentstorage/sql/SRC/Server/SqlSrvDbSysSettings.cpp Tue May 25 14:35:19 2010 +0300 @@ -244,7 +244,7 @@ { __SQLLEAVE(KErrGeneral);//two "default policy" records in the table } - StoreDefaultSecurityPolicyL(aSecurityPolicyCon, policy, dbPolicySetFlag); + StoreDefaultSecurityPolicy(aSecurityPolicyCon, policy, dbPolicySetFlag); defaultPolicySet = ETrue; break; case KDbObjType: @@ -891,24 +891,23 @@ @param aPolicy Default security policy object @param aDbPolicySetFlag Bit flag. Keeps information which database security policies are set and which aren't. -@leave See CSqlSecurityPolicy::SetDbPolicy() return values. @see CSqlSecurityPolicy::SetDbPolicy() */ -void TSqlDbSysSettings::StoreDefaultSecurityPolicyL(CSqlSecurityPolicy& aSecurityPolicyCon, - const TSecurityPolicy& aPolicy, TInt aDbPolicySetFlag) +void TSqlDbSysSettings::StoreDefaultSecurityPolicy(CSqlSecurityPolicy& aSecurityPolicyCon, + const TSecurityPolicy& aPolicy, TInt aDbPolicySetFlag) { aSecurityPolicyCon.SetDefaultPolicy(aPolicy); if(!(aDbPolicySetFlag & (1 << RSqlSecurityPolicy::ESchemaPolicy))) { - __SQLLEAVE_IF_ERROR(aSecurityPolicyCon.SetDbPolicy(RSqlSecurityPolicy::ESchemaPolicy, aPolicy)); + aSecurityPolicyCon.SetDbPolicy(RSqlSecurityPolicy::ESchemaPolicy, aPolicy); } if(!(aDbPolicySetFlag & (1 << RSqlSecurityPolicy::EReadPolicy))) { - __SQLLEAVE_IF_ERROR(aSecurityPolicyCon.SetDbPolicy(RSqlSecurityPolicy::EReadPolicy, aPolicy)); + aSecurityPolicyCon.SetDbPolicy(RSqlSecurityPolicy::EReadPolicy, aPolicy); } if(!(aDbPolicySetFlag & (1 << RSqlSecurityPolicy::EWritePolicy))) { - __SQLLEAVE_IF_ERROR(aSecurityPolicyCon.SetDbPolicy(RSqlSecurityPolicy::EWritePolicy, aPolicy)); + aSecurityPolicyCon.SetDbPolicy(RSqlSecurityPolicy::EWritePolicy, aPolicy); } } @@ -936,7 +935,7 @@ { __SQLLEAVE(KErrGeneral); } - __SQLLEAVE_IF_ERROR(aSecurityPolicyCon.SetDbPolicy(static_cast (aPolicyType), aPolicy)); + aSecurityPolicyCon.SetDbPolicy(static_cast (aPolicyType), aPolicy); aDbPolicySetFlag |= (1 << aPolicyType); } diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sql/SRC/Server/SqlSrvDbSysSettings.h --- a/persistentstorage/sql/SRC/Server/SqlSrvDbSysSettings.h Tue May 11 17:49:39 2010 +0300 +++ b/persistentstorage/sql/SRC/Server/SqlSrvDbSysSettings.h Tue May 25 14:35:19 2010 +0300 @@ -67,7 +67,7 @@ TInt BindSecurityPolicyPrm(sqlite3_stmt* aStmtHandle, TInt aObjType, const TDesC& aObjName, TInt aPolicyType, const TSecurityPolicy& aPolicy); TSecurityPolicy ReadCurrSecurityPolicyL(sqlite3_stmt* aStmtHandle, TInt& aObjType, TPtrC& aObjName, TInt& aPolicyType); - void StoreDefaultSecurityPolicyL(CSqlSecurityPolicy& aSecurityPolicyCon, const TSecurityPolicy& aPolicy, TInt aDbPolicySetFlag); + void StoreDefaultSecurityPolicy(CSqlSecurityPolicy& aSecurityPolicyCon, const TSecurityPolicy& aPolicy, TInt aDbPolicySetFlag); void StoreDbSecurityPolicyL(CSqlSecurityPolicy& aSecurityPolicyCon, TInt aPolicyType, const TSecurityPolicy& aPolicy, TInt& aDbPolicySetFlag); void StoreDbObjSecurityPolicyL(CSqlSecurityPolicy& aSecurityPolicyCon, TInt aObjType, const TDesC& aObjName, diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sql/SRC/Server/SqlSrvResourceProfiler.cpp --- a/persistentstorage/sql/SRC/Server/SqlSrvResourceProfiler.cpp Tue May 11 17:49:39 2010 +0300 +++ b/persistentstorage/sql/SRC/Server/SqlSrvResourceProfiler.cpp Tue May 25 14:35:19 2010 +0300 @@ -662,8 +662,8 @@ TTime time; time.UniversalTime(); TDateTime dt = time.DateTime(); - TheSqlSrvProfileTraceBuf8.Format(_L8("[SQL]¬%X¬%ld¬TME¬%02d:%02d:%02d:%06d¬Prep8¬%d¬Prep16¬%d¬Ex8¬%d¬Ex16¬%d"), - 0, timeDiff, dt.Hour(), dt.Minute(), dt.Second(), dt.MicroSecond(), + TheSqlSrvProfileTraceBuf8.Format(_L8("[SQL]¬\"%X\"¬¬TME¬¬¬¬¬¬¬¬¬¬¬¬%02d:%02d:%02d:%06d¬Prep8¬%d¬Prep16¬%d¬Ex8¬%d¬Ex16¬%d"), + timeDiff, dt.Hour(), dt.Minute(), dt.Second(), dt.MicroSecond(), TheSqlSrvProfilerPreparedCnt8, TheSqlSrvProfilerPreparedCnt16, TheSqlSrvProfilerExecutedCnt8, TheSqlSrvProfilerExecutedCnt16); if(TheSqlSrvProfilerTraceToFile) @@ -758,19 +758,21 @@ } if(ipcCallIdx >= 0 || (ipcCallIdx == KErrNotFound && TheSqlSrvProfilerTraceLevel == 2)) { - TheSqlSrvProfileTraceBuf.Format(_L("[SQL]¬%X¬%ld¬IPC¬%u¬%S¬%ld¬%d¬%d¬%d¬%d¬%d¬%d¬rc¬%d"), - aDbHandle, - timeFromStart, - aIpcCounter, - &ipcCallName, - ttlExecTime, - executionTime, - count, - TheSqlSrvProfilerFileRead, - TheSqlSrvProfilerFileWrite, - TheSqlSrvProfilerFileSync, - TheSqlSrvProfilerFileSetSize, - aRetCode); + TheSqlSrvProfileTraceBuf.Format(_L("[SQL]¬\"%X\"¬%ld¬IPC¬%u¬%S¬%ld¬%d¬%d¬%d¬%d¬%d¬%d¬rc¬%d"), + //[SQL] + aDbHandle, //Database handle + timeFromStart, //Time from start, microseconds + //IPC + aIpcCounter, //IPC sequence counter for this database (connection) + &ipcCallName, //IPC call name + ttlExecTime, //All time spent in this IPC call type for this database (connection) + executionTime, //This IPC call execution time + count, //This IPC call sequence counter for this database (connection) + TheSqlSrvProfilerFileRead, //File read count, performed during this IPC + TheSqlSrvProfilerFileWrite, //File write count, performed during this IPC + TheSqlSrvProfilerFileSync, //File flush count, performed during this IPC + TheSqlSrvProfilerFileSetSize, //File set size count, performed during this IPC + aRetCode); //IPC call - return code SqlSrvProfilePrintf(ESqlSrvProfilerNonSqlTrace); } } @@ -788,12 +790,14 @@ TPtrC ipcCallName; (void)SqlIpcTraceIdxAndName(aFuncCode, ipcCallName); TInt64 timeFromStart = SqlTimeFromStartUs(); - TheSqlSrvProfileTraceBuf.Format(_L("[SQL]¬%X¬%ld¬ERR¬%u¬%S¬err¬%d"), - aDbHandle, - timeFromStart, - aIpcCounter, - &ipcCallName, - aError); + TheSqlSrvProfileTraceBuf.Format(_L("[SQL]¬\"%X\"¬%ld¬ERR¬%u¬%S¬¬¬¬¬¬¬¬err¬%d"), + //[SQL] + aDbHandle, //Database (connection) handle + timeFromStart, //Time from start, microseconds + //ERR + aIpcCounter, //IPC sequence counter for this database (connection) + &ipcCallName, //IPC call name + aError); //IPC call - return code SqlSrvProfilePrintf(ESqlSrvProfilerNonSqlTrace); } } @@ -823,13 +827,13 @@ _LIT(KEmptyStr, ""); if(pos == 0) { - line.Format(_L("[SQL]¬%X¬%ld¬SQL¬%S¬"), aDbHandle, timeFromStart, aPrepare ? &KPrepare : &KExec); + line.Format(_L("[SQL]¬\"%X\"¬%ld¬SQL¬¬%S¬¬¬¬¬¬¬¬¬¬"), aDbHandle, timeFromStart, aPrepare ? &KPrepare : &KExec); } else { if(!TheSqlSrvProfilerTraceToFile) { - line.Format(_L("[SQL]¬%X¬%ld¬SQL¬%S¬"), aDbHandle, timeFromStart, &KEmptyStr); + line.Format(_L("[SQL]¬\"%X\"¬%ld¬SQL¬¬%S¬¬¬¬¬¬¬¬¬¬"), aDbHandle, timeFromStart, &KEmptyStr); } } TInt l = Min(len, (line.MaxLength() - line.Length())); @@ -868,13 +872,13 @@ _LIT(KEmptyStr, ""); if(pos == 0) { - line.Format(_L("[SQL]¬%X¬%ld¬SQL¬%S¬"), aDbHandle, timeFromStart, aPrepare ? &KPrepare : &KExec); + line.Format(_L("[SQL]¬\"%X\"¬%ld¬SQL¬¬%S¬¬¬¬¬¬¬¬¬¬"), aDbHandle, timeFromStart, aPrepare ? &KPrepare : &KExec); } else { if(!TheSqlSrvProfilerTraceToFile) { - line.Format(_L("[SQL]¬%X¬%ld¬SQL¬%S¬"), aDbHandle, timeFromStart, &KEmptyStr); + line.Format(_L("[SQL]¬\"%X\"¬%ld¬SQL¬¬%S¬¬¬¬¬¬¬¬¬¬"), aDbHandle, timeFromStart, &KEmptyStr); } } TInt l = Min(len, (line.MaxLength() - line.Length())); @@ -904,7 +908,7 @@ return; } TInt64 timeFromStart = SqlTimeFromStartUs(); - TheSqlSrvProfileTraceBuf.Format(_L("[SQL]¬%X¬%ld¬CRE¬%S"), + TheSqlSrvProfileTraceBuf.Format(_L("[SQL]¬\"%X\"¬%ld¬CRE¬¬¬¬¬¬¬¬¬¬¬¬%S"), aDbHandle, timeFromStart, &aDbName); @@ -926,7 +930,7 @@ return; } TInt64 timeFromStart = SqlTimeFromStartUs(); - TheSqlSrvProfileTraceBuf.Format(_L("[SQL]¬%X¬%ld¬OPN¬%S"), + TheSqlSrvProfileTraceBuf.Format(_L("[SQL]¬\"%X\"¬%ld¬OPN¬¬¬¬¬¬¬¬¬¬¬¬%S"), aDbHandle, timeFromStart, &aDbName); @@ -944,7 +948,7 @@ return; } TInt64 timeFromStart = SqlTimeFromStartUs(); - TheSqlSrvProfileTraceBuf.Format(_L("[SQL]¬%X¬%ld¬CSE"), + TheSqlSrvProfileTraceBuf.Format(_L("[SQL]¬\"%X\"¬%ld¬CSE"), aDbHandle, timeFromStart); SqlSrvProfilePrintf(ESqlSrvProfilerNonSqlTrace); @@ -986,7 +990,7 @@ RDebug::Print(_L("SQL trace file creation failed with err=%d"), err); } } - TheSqlSrvProfileTraceBuf.Format(_L("[SQL]¬%X¬%ld¬SRV¬START"), 0, timeFromStart); + TheSqlSrvProfileTraceBuf.Format(_L("[SQL]¬¬%ld¬SRV¬¬Start"), timeFromStart); SqlSrvProfilePrintf(ESqlSrvProfilerNonSqlTrace); } @@ -994,7 +998,7 @@ void SqlPrintServerStop() { TInt64 timeFromStart = SqlTimeFromStartUs(); - TheSqlSrvProfileTraceBuf.Format(_L("[SQL]¬%X¬%ld¬SRV¬STOP"), 0, timeFromStart); + TheSqlSrvProfileTraceBuf.Format(_L("[SQL]¬¬%ld¬SRV¬¬Stop"), timeFromStart); SqlSrvProfilePrintf(ESqlSrvProfilerNonSqlTrace); if(TheSqlSrvProfilerTraceToFile) { diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sql/SRC/Server/SqlSrvStatement.cpp --- a/persistentstorage/sql/SRC/Server/SqlSrvStatement.cpp Tue May 11 17:49:39 2010 +0300 +++ b/persistentstorage/sql/SRC/Server/SqlSrvStatement.cpp Tue May 25 14:35:19 2010 +0300 @@ -217,10 +217,6 @@ __SQLASSERT(iStmtHandle != NULL, ESqlPanicInvalidObj); (void)sqlite3SymbianLastOsError();//clear last OS error - if(sqlite3_expired(iStmtHandle)) - { - __SQLLEAVE_IF_ERROR(KSqlErrStmtExpired); - } TSqlBufRIterator it; it.Set(aParamBuf); @@ -516,10 +512,6 @@ __SQLASSERT(aParamIndex < iParamBufArray.Count(), ESqlPanicBadArgument); __SQLASSERT(iParamBufArray[aParamIndex] != NULL, ESqlPanicBadArgument); (void)sqlite3SymbianLastOsError();//clear last OS error - if(sqlite3_expired(iStmtHandle)) - { - __SQLLEAVE_IF_ERROR(KSqlErrStmtExpired); - } //Bind the parameter value. //SQLITE_STATIC is used as an argument, because the text/blob data will be kept and can be used by the next bind call HSqlSrvStmtParamBuf& paramBuf = *iParamBufArray[aParamIndex]; diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sql/SRC/Server/SqlSrvStatementUtil.cpp --- a/persistentstorage/sql/SRC/Server/SqlSrvStatementUtil.cpp Tue May 11 17:49:39 2010 +0300 +++ b/persistentstorage/sql/SRC/Server/SqlSrvStatementUtil.cpp Tue May 25 14:35:19 2010 +0300 @@ -203,6 +203,7 @@ static TInt DoSingleStmtExec16(sqlite3 *aDbHandle, const TDesC16& aSql) { __SQLASSERT(aDbHandle != NULL, ESqlPanicInvalidObj); + __SQLASSERT(aSql.Length() > 0 ? (TInt)aSql[aSql.Length() - 1] == 0 : ETrue, ESqlPanicBadArgument); sqlite3_stmt* stmtHandle = NULL; const void* stmtTail = NULL; //sqlite3_prepare16_v2() expects parameter #3 to be one of the following: @@ -223,11 +224,7 @@ __SQLASSERT(err != SQLITE_OK, ESqlPanicInternalError); } } - TInt err2 = sqlite3_finalize(stmtHandle); - if(err == SQLITE_DONE && err2 != SQLITE_OK) - {//return the "sqlite3_finalize" error - err = err2; - } + (void)sqlite3_finalize(stmtHandle);//sqlite3_finalize() fails only if an invalid statement handle is passed. } return err; } @@ -550,11 +547,6 @@ __SQLASSERT(aStmtHandle != NULL, ESqlPanicInvalidObj); (void)sqlite3SymbianLastOsError();//clear last OS error - - if(sqlite3_expired(aStmtHandle)) - { - return KSqlErrStmtExpired; - } TInt err; while((err = sqlite3_step(aStmtHandle)) == SQLITE_ROW) @@ -600,11 +592,6 @@ (void)sqlite3SymbianLastOsError();//clear last OS error - if(sqlite3_expired(aStmtHandle)) - { - return KSqlErrStmtExpired; - } - TInt err = sqlite3_step(aStmtHandle); if(err == SQLITE_ERROR) //It may be "out of memory" problem { @@ -634,11 +621,6 @@ (void)sqlite3SymbianLastOsError();//clear last OS error - if(sqlite3_expired(aStmtHandle)) - { - return KSqlErrStmtExpired; - } - TInt err = sqlite3_reset(aStmtHandle); return ::Sql2OsErrCode(err, sqlite3SymbianLastOsError()); } @@ -717,14 +699,9 @@ if(err == KSqlAtRow) { aPragmaValue = sqlite3_column_int(stmtHandle, 0); - __SQLASSERT(aPragmaValue >= 0, ESqlPanicInternalError); - err = KErrNone; + err = aPragmaValue >= 0 ? KErrNone : KErrCorrupt; } - TInt err2 = FinalizeStmtHandle(stmtHandle); - if(err == KErrNone && err2 != KErrNone) - {//FinalizeStmtHandle() has failed - err = err2; - } + (void)FinalizeStmtHandle(stmtHandle);//sqlite3_finalize() fails only if an invalid statement handle is passed. return err; } @@ -758,11 +735,7 @@ aPragmaValue.Copy(ptr); err = KErrNone; } - TInt err2 = FinalizeStmtHandle(stmtHandle); - if(err == KErrNone && err2 != KErrNone) - {//::FinalizeStmtHandle() has failed - err = err2; - } + (void)FinalizeStmtHandle(stmtHandle);//sqlite3_finalize() fails only if an invalid statement handle is passed. return err; } @@ -993,11 +966,7 @@ __SQLASSERT(err != SQLITE_OK, ESqlPanicInternalError); } } - TInt err2 = sqlite3_finalize(stmtHandle); - if(err == SQLITE_DONE && err2 != SQLITE_OK) - {//use the "sqlite3_finalize" error - err = err2; - } + (void)sqlite3_finalize(stmtHandle);//sqlite3_finalize() fails only if an invalid statement handle is passed. } err = ::Sql2OsErrCode(err, sqlite3SymbianLastOsError()); if(err == KSqlAtEnd) @@ -1010,6 +979,11 @@ /** Finalizes the statement handle. +Although the function can return an error, it is ok not to check the returned error, +because sqlite3_finalize() fails only if invalid statement handle is passed as an argument. + +@return KErrNone, Operation completed successfully; + Other system-wide error codes or SQL errors of ESqlDbError type. @internalComponent */ diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sql/SRC/Server/SqlSrvStrings.h --- a/persistentstorage/sql/SRC/Server/SqlSrvStrings.h Tue May 11 17:49:39 2010 +0300 +++ b/persistentstorage/sql/SRC/Server/SqlSrvStrings.h Tue May 25 14:35:19 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -55,7 +55,7 @@ CONST_LIT16(KSettingsTable16, "symbian_settings"); // config consts -#ifdef SYSLIBS_TEST +#if defined SYSLIBS_TEST || defined SQL_SOFT_HEAP_LIMIT_TEST CONST_LIT16(KSqlSrvDefaultConfigFile, "c:\\test\\t_sqlserver.cfg"); CONST_LIT16(KSqlSrvDbConfigFileFormat, "c:cfg*"); #else diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sql/TEST/t_sqlapi.cpp --- a/persistentstorage/sql/TEST/t_sqlapi.cpp Tue May 11 17:49:39 2010 +0300 +++ b/persistentstorage/sql/TEST/t_sqlapi.cpp Tue May 25 14:35:19 2010 +0300 @@ -280,31 +280,41 @@ TEST2(fs.Connect(), KErrNone); TFileName privatePath; TEST2(fs.PrivatePath(privatePath), KErrNone); - fs.Close(); //Private shared database file on an existing drive (C:). //Very long database file name. - const TInt KMaxFileName2 = KMaxFileName - 40;//"-40" because the SQLITE engine creates a journal file if begins - //a transaction. The name of the journal file is - //"-journal.". It is obvious that if the - //database file name is too long but still valid and its creation - //succeeds, the journal file creation may fail because the journal - //file name becomes too long - TBuf dbPath; + TBuf<50>filesysname; + fs.FileSystemName(filesysname,(TInt) EDriveC); + fs.Close(); + + RDebug::Print(_L("file system name = %S"), &filesysname); + TInt maxFileName = KMaxFileName -40;//"-40" because the SQLITE engine creates a journal file if begins + //a transaction. The name of the journal file is + //"-journal.". It is obvious that if the + //database file name is too long but still valid and its creation + //succeeds, the journal file creation may fail because the journal + //file name becomes too long + + if(filesysname.CompareF(_L("HVFS")) == 0) + { + maxFileName = KMaxFileName -150;//The test will panic in PlatSim when the file name is too long. This line should be removed when platsim team fixes the file system defect. + } + HBufC* dbPath = HBufC::NewLC(maxFileName); _LIT(KExt, ".DB"); - dbPath.Copy(_L("C:")); - dbPath.Append(KSecureUid.Name()); - TInt len = KMaxFileName2 + 1 - (dbPath.Length() + KExt().Length() + privatePath.Length()); + dbPath->Des().Copy(_L("C:")); + dbPath->Des().Append(KSecureUid.Name()); + TInt len = maxFileName + 1 - (dbPath->Length() + KExt().Length() + privatePath.Length()); + while(--len) { - dbPath.Append(TChar('A')); + dbPath->Des().Append(TChar('A')); } - dbPath.Append(KExt); - TEST(dbPath.Length() == (KMaxFileName2 - privatePath.Length())); - rc = db.Create(dbPath, securityPolicy); + dbPath->Des().Append(KExt); + TEST(dbPath->Length() == (maxFileName - privatePath.Length())); + rc = db.Create(dbPath->Des(), securityPolicy); + TEST2(rc, KErrNone); db.Close(); - rc2 = RSqlDatabase::Delete(dbPath); - TEST2(rc, KErrNone); + rc2 = RSqlDatabase::Delete(dbPath->Des()); TEST2(rc2, KErrNone); // Private database with config @@ -320,17 +330,19 @@ //Public shared database file on an existing drive (C:). //Very long database file name. - dbPath.Copy(_L("C:\\TEST\\D")); - len = KMaxFileName2 + 1 - (dbPath.Length() + KExt().Length()); + dbPath->Des().Copy(_L("C:\\TEST\\D")); + len = maxFileName + 1 - (dbPath->Length() + KExt().Length()); while(--len) { - dbPath.Append(TChar('A')); + dbPath->Des().Append(TChar('A')); } - dbPath.Append(KExt); - TEST(dbPath.Length() == KMaxFileName2); - rc = db.Create(dbPath); + dbPath->Des().Append(KExt); + TEST(dbPath->Length() == maxFileName); + rc = db.Create(dbPath->Des()); db.Close(); - rc2 = RSqlDatabase::Delete(dbPath); + rc2 = RSqlDatabase::Delete(dbPath->Des()); + + CleanupStack::PopAndDestroy(dbPath); TEST2(rc, KErrNone); TEST2(rc2, KErrNone); @@ -398,6 +410,19 @@ TEST(rc==KSqlErrNotDb || rc==KErrNone); db.Close(); + //An attempt to open database with name containing non-convertible characters. + TBuf<6> invName; + invName.SetLength(6); + invName[0] = TChar('c'); + invName[1] = TChar(':'); + invName[2] = TChar('\\'); + invName[3] = TChar(0xD800); + invName[4] = TChar(0xFC00); + invName[5] = TChar(0x0000); + rc = db.Open(invName); + db.Close(); + TEST(rc != KErrNone); + //Copy the corrupted database file on drive C: TEST2(fs.Connect(), KErrNone); rc = BaflUtils::CopyFile(fs, KDbPath10, KTestDbName3); @@ -1081,6 +1106,17 @@ rc = stmt.Next(); TEST2(rc, KSqlAtRow); + //An attempt to read integer column using binary stream + RSqlColumnReadStream strm2; + rc = strm2.ColumnBinary(stmt, 0); + strm2.Close(); + TEST2(rc, KErrArgument); + + //An attempt to read integer column using text stream + rc = strm2.ColumnText(stmt, 0); + strm2.Close(); + TEST2(rc, KErrArgument); + //Read the long text column using a stream RSqlColumnReadStream columnStream; rc = columnStream.ColumnText(stmt, 1); @@ -2351,6 +2387,48 @@ (void)RSqlDatabase::Delete(KTestDbName1); } +/** +@SYMTestCaseID PDS-SQL-CT-4205 +@SYMTestCaseDesc "PRAGMA count_changes" test. + When "count_changes" pragma is ON, sqlite3_step() is called two times by the + SQL server, before getting the SQLITE_DONE return code. + Everything else is the same (statement processing, etc.). +@SYMTestPriority High +@SYMTestActions "PRAGMA count_changes" test. +@SYMTestExpectedResults Test must not fail +*/ +void CountChangesTest() + { + (void)RSqlDatabase::Delete(KTestDbName1); + RSqlDatabase db; + TInt err = db.Create(KTestDbName1); + TEST2(err, KErrNone); + err = db.Exec(_L("CREATE TABLE A(I INTEGER)")); + TEST(err >= 0); + + err = db.Exec(_L("PRAGMA count_changes=ON")); + TEST(err >= 0); + + err = db.Exec(_L("INSERT INTO A VALUES(1)")); + TEST2(err, 1); + + err = db.Exec(_L8("INSERT INTO A VALUES(2)")); + TEST2(err, 1); + + RSqlStatement stmt; + err = stmt.Prepare(db, _L("DELETE FROM A WHERE I>=1 AND I<=2")); + TEST2(err, KErrNone); + err = stmt.Exec(); + TEST2(err, 2); + stmt.Close(); + + err = db.Exec(_L("PRAGMA count_changes=OFF")); + TEST(err >= 0); + + db.Close(); + (void)RSqlDatabase::Delete(KTestDbName1); + } + void DoTestsL() { TheTest.Start(_L(" @SYMTestCaseID:SYSLIB-SQL-CT-1601 Create/Open/Close database tests ")); @@ -2420,6 +2498,9 @@ TheTest.Next(_L(" @SYMTestCaseID:SYSLIB-SQL-UT-4041 RSqlDatabase::Size(RSqlDatabase::TSize&) - different compaction modes tests")); DiffCompactModeSize2Test(); + + TheTest.Next(_L(" @SYMTestCaseID:PDS-SQL-CT-4205 PRAGMA \"count_changes\" test")); + CountChangesTest(); } TInt E32Main() diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sql/TEST/t_sqlapi2.cpp --- a/persistentstorage/sql/TEST/t_sqlapi2.cpp Tue May 11 17:49:39 2010 +0300 +++ b/persistentstorage/sql/TEST/t_sqlapi2.cpp Tue May 25 14:35:19 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -978,6 +978,23 @@ RSqlBlobReadStream strm6; TRAP(err, strm6.OpenL(TheDb, KNullDesC, KNullDesC, 1, KNullDesC)); TEST(err != KErrNone); + //Attempt to open a read blob stream, where the blob column name is invalid and contains non-convertible characters. + TBuf<3> invName; + invName.SetLength(3); + invName[0] = TChar(0xD800); + invName[1] = TChar(0xFC00); + invName[2] = TChar(0x0000); + RSqlBlobReadStream strm7; + TRAP(err, strm7.OpenL(TheDb, _L("A"), invName, 1, KNullDesC)); + TEST(err != KErrNone); + //Attempt to open a read blob stream, where the table name is invalid and contains non-convertible characters. + RSqlBlobReadStream strm8; + TRAP(err, strm8.OpenL(TheDb, invName, _L("Data"), 1, KNullDesC)); + TEST(err != KErrNone); + //Attempt to open a read blob stream, where the attached db name is invalid and contains non-convertible characters. + RSqlBlobReadStream strm9; + TRAP(err, strm9.OpenL(TheDb, _L("A"), _L("Data"), 1, invName)); + TEST(err != KErrNone); // err = TheDb.Detach(KAttachDb); TEST2(err, KErrNone); @@ -1704,8 +1721,7 @@ Connection 2 prepares couple of SELECT and INSERT statements (8-bit and 16-bit). Then connection 1 renames the table used in the already prepared statements. Connection 2 attempts to execute the prepared statements. The execution should fail - because the statements are expired, the database schema has changed after they - were prepared. + because the database schema has changed after they were prepared. @SYMTestActions Expired SQL statements test. @SYMTestExpectedResults Test must not fail @SYMTestPriority High @@ -1747,13 +1763,13 @@ err = stmt1.Next(); TEST2(err, KSqlErrSchema); err = stmt1.Next(); - TEST2(err, KSqlErrStmtExpired); + TEST(err != KSqlAtRow); err = stmt2.Next(); - TEST2(err, KSqlErrStmtExpired); + TEST(err != KSqlAtRow); err = stmt3.Exec(); - TEST2(err, KSqlErrStmtExpired); + TEST(err < 0); err = stmt4.Exec(); - TEST2(err, KSqlErrStmtExpired); + TEST(err < 0); // stmt4.Close(); stmt3.Close(); diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sql/TEST/t_sqlcmdlineutil.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/persistentstorage/sql/TEST/t_sqlcmdlineutil.cpp Tue May 25 14:35:19 2010 +0300 @@ -0,0 +1,313 @@ +// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// +#include +#include "t_sqlcmdlineutil.h" + +static void GetCmdLine(RTest& aTest, const TDesC& aTestName, TDes& aCmdLine) + { + User::CommandLine(aCmdLine); + aCmdLine.TrimAll(); + if(aCmdLine.Length() == 0) + { + aTest.Printf(_L("Usage: %S [ [/enc=<16/8>] /drv=:] [/page=<512/1024/2048/4096/8192/16384/32768>] ] [/cache=] [/hlimit=]\r\n"), &aTestName); + return; + } + aCmdLine.Append(TChar('/')); + } + +static void ExtractCmdLineParams(TDes& aCmdLine, RArray& aPrmNames, RArray& aPrmValues) + { + aPrmNames.Reset(); + aPrmValues.Reset(); + + enum TState{EWaitPrmStart, EReadPrmName, EReadPrmValue}; + TState state = EWaitPrmStart; + TInt startPos = -1; + TPtr prmName(0, 0); + TPtr prmValue(0, 0); + + aCmdLine.Append(TChar('/')); + + for(TInt i=0;i& aPrmNames, const RArray& aPrmValues, TCmdLineParams& aCmdLineParams) + { + __ASSERT_ALWAYS(aPrmNames.Count() == aPrmValues.Count(), User::Invariant()); + + aCmdLineParams.SetDefaults(); + + for(TInt i=0;i= TChar('a') && ch <= TChar('z')) + aCmdLineParams.iDriveName.Copy(aPrmValues[i]); + } + } + else if(aPrmNames[i].CompareF(_L("page")) == 0) + { + TLex lex(aPrmValues[i]); + TInt pageSize = 0; + TInt err = lex.Val(pageSize); + if(err == KErrNone && (pageSize == 512 || pageSize == 1024 || pageSize == 2048 || + pageSize == 4096 || pageSize == 8192 || pageSize == 16384 || pageSize == 32768)) + { + aCmdLineParams.iPageSize = pageSize; + } + } + else if(aPrmNames[i].CompareF(_L("cache")) == 0) + { + TLex lex(aPrmValues[i]); + TInt cacheSize = 0; + TInt err = lex.Val(cacheSize); + if(err == KErrNone && (cacheSize > 0 && cacheSize < 1000000000)) + { + aCmdLineParams.iCacheSize = cacheSize; + } + } + else if(aPrmNames[i].CompareF(_L("hlimit")) == 0) + { + TLex lex(aPrmValues[i]); + TInt softHeapLimit = 0; + TInt err = lex.Val(softHeapLimit); + if(err == KErrNone && (softHeapLimit >= 0 && softHeapLimit < 1000000000)) + { + aCmdLineParams.iSoftHeapLimitKb = softHeapLimit; + } + } + } + } + +static void PrepareSqlConfigString(RTest& aTest, const TCmdLineParams& aCmdLineParams, TDes8& aConfigStr) + { + aConfigStr.Zero(); + + if(aCmdLineParams.iDbEncoding == TCmdLineParams::EDbUtf8) + { + aTest.Printf(_L("--PRM--Database Encoding: UTF8\r\n")); + aConfigStr.Append(_L8("encoding=\"UTF-8\";")); + } + else + { + aTest.Printf(_L("--PRM--Database Encoding: UTF16\r\n")); + aConfigStr.Append(_L8("encoding=\"UTF-16\";")); + } + + aTest.Printf(_L("--PRM--Database page size: %d\r\n"), aCmdLineParams.iPageSize); + TBuf8<20> pageSizeBuf; + pageSizeBuf.Format(_L8("page_size=%d;"), aCmdLineParams.iPageSize); + aConfigStr.Append(pageSizeBuf); + + aTest.Printf(_L("--PRM--Database cache size: %d\r\n"), aCmdLineParams.iCacheSize); + TBuf8<20> cacheSizeBuf; + cacheSizeBuf.Format(_L8("cache_size=%d;"), aCmdLineParams.iCacheSize); + aConfigStr.Append(cacheSizeBuf); + + aTest.Printf(_L("--PRM--Database drive: %S\r\n"), &aCmdLineParams.iDriveName); + + if(aCmdLineParams.iSoftHeapLimitKb > 0) + { + aTest.Printf(_L("--PRM--Soft heap limit: %d Kb\r\n"), aCmdLineParams.iSoftHeapLimitKb); + } + else + { + aTest.Printf(_L("--PRM--Soft heap limit: default\r\n")); + } + } + +#ifdef SQL_SOFT_HEAP_LIMIT_TEST + +static TInt KillProcess(const TDesC& aProcessName) + { + TFullName name; + TBuf<64> pattern(aProcessName); + TInt length = pattern.Length(); + pattern += _L("*"); + TFindProcess procFinder(pattern); + + while (procFinder.Next(name) == KErrNone) + { + if (name.Length() > length) + {//If found name is a string containing aProcessName string. + TChar c(name[length]); + if (c.IsAlphaDigit() || + c == TChar('_') || + c == TChar('-')) + { + // If the found name is other valid application name + // starting with aProcessName string. + continue; + } + } + RProcess proc; + if (proc.Open(name) == KErrNone) + { + proc.Kill(0); + } + proc.Close(); + } + return KErrNone; + } + +_LIT(KSqlSrvName, "sqlsrv.exe"); +_LIT(KSqlSrvConfigFile, "c:\\test\\t_sqlserver.cfg"); + +static void ReplaceConfigFile(const TDesC16& aConfig) + { + RFs fs; + TInt err = fs.Connect(); + __ASSERT_ALWAYS(err == KErrNone, User::Invariant()); + + (void)KillProcess(KSqlSrvName); + + (void)fs.MkDirAll(KSqlSrvConfigFile); + (void)fs.Delete(KSqlSrvConfigFile); + + RFile file; + err = file.Create(fs, KSqlSrvConfigFile, EFileRead | EFileWrite); + __ASSERT_ALWAYS(err == KErrNone, User::Invariant()); + + TPtrC8 p((const TUint8*)aConfig.Ptr(), aConfig.Length() * sizeof(TUint16)); + err = file.Write(p); + file.Close(); + __ASSERT_ALWAYS(err == KErrNone, User::Invariant()); + + fs.Close(); + } + +static void DeleteConfigFile() + { + RFs fs; + TInt err = fs.Connect(); + __ASSERT_ALWAYS(err == KErrNone, User::Invariant()); + + (void)KillProcess(KSqlSrvName); + + (void)fs.MkDirAll(KSqlSrvConfigFile); + (void)fs.Delete(KSqlSrvConfigFile); + + fs.Close(); + } + +#endif //SQL_SOFT_HEAP_LIMIT_TEST + +void GetCmdLineParamsAndSqlConfigString(RTest& aTest, const TDesC& aTestName, TCmdLineParams& aCmdLineParams, TDes8& aConfigStr) + { + TBuf<200> cmdLine; + GetCmdLine(aTest, aTestName, cmdLine); + RArray prmNames; + RArray prmValues; + ExtractCmdLineParams(cmdLine, prmNames, prmValues); + ExtractParamNamesAndValues(prmNames, prmValues, aCmdLineParams); + prmValues.Close(); + prmNames.Close(); + PrepareSqlConfigString(aTest, aCmdLineParams, aConfigStr); + } + +void PrepareDbName(const TDesC& aDeafultDbName, const TDriveName& aDriveName, TDes& aDbName) + { + TParse parse; + parse.Set(aDriveName, &aDeafultDbName, 0); + const TDesC& dbFilePath = parse.FullName(); + aDbName.Copy(dbFilePath); + } + +void SetSoftHeapLimit(TInt aSoftHeapLimit) + { + if(aSoftHeapLimit > 0) + { +#ifdef SQL_SOFT_HEAP_LIMIT_TEST + TBuf<50> configBuf; + configBuf.Format(_L("soft_heap_limit_kb=%d"), aSoftHeapLimit); + ReplaceConfigFile(configBuf); +#else + RDebug::Print(_L("The soft heap limit cannot be set if \"SQL_SOFT_HEAP_LIMIT_TEST\" macro is not defined!\r\n")); +#endif + } + else if(aSoftHeapLimit < 0) + { + RDebug::Print(_L("Soft heap limit of %d Kb cannot be set!\r\n"), aSoftHeapLimit); + } + } + +void ResetSoftHeapLimit() + { +#ifdef SQL_SOFT_HEAP_LIMIT_TEST + DeleteConfigFile(); +#endif + } + diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sql/TEST/t_sqlcmdlineutil.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/persistentstorage/sql/TEST/t_sqlcmdlineutil.h Tue May 25 14:35:19 2010 +0300 @@ -0,0 +1,66 @@ +// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#ifndef T_SQLCMDLINEUTIL_H +#define T_SQLCMDLINEUTIL_H + +#include + +class RTest; + +struct TCmdLineParams + { + enum TDbEncoding + { + EDbUtf8, + EDbUtf16 + }; + + inline TCmdLineParams(TDbEncoding aDefaultEncoding = EDbUtf16, + TInt aDefaultPageSize = 1024, + TInt aDefaultCacheSize = 1000) : + iDefaultEncoding(aDefaultEncoding), + iDefaultPageSize(aDefaultPageSize), + iDefaultCacheSize(aDefaultCacheSize) + { + SetDefaults(); + } + + inline void SetDefaults() + { + iDbEncoding = iDefaultEncoding; + iPageSize = iDefaultPageSize; + iCacheSize = iDefaultCacheSize; + iDriveName.Copy(_L("c:")); + iSoftHeapLimitKb = 0; + } + + const TDbEncoding iDefaultEncoding; + const TInt iDefaultPageSize; + const TInt iDefaultCacheSize; + + TDbEncoding iDbEncoding; + TInt iPageSize; + TInt iCacheSize; + TDriveName iDriveName; + TInt iSoftHeapLimitKb; + }; + +void GetCmdLineParamsAndSqlConfigString(RTest& aTest, const TDesC& aTestName, TCmdLineParams& aCmdLineParams, TDes8& aConfigStr); +void PrepareDbName(const TDesC& aDeafultDbName, const TDriveName& aDriveName, TDes& aDbName); +void SetSoftHeapLimit(TInt aSoftHeapLimit); +void ResetSoftHeapLimit(); + +#endif//T_SQLCMDLINEUTIL_H diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sql/TEST/t_sqlcompact1.cpp --- a/persistentstorage/sql/TEST/t_sqlcompact1.cpp Tue May 11 17:49:39 2010 +0300 +++ b/persistentstorage/sql/TEST/t_sqlcompact1.cpp Tue May 25 14:35:19 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -77,6 +77,39 @@ /////////////////////////////////////////////////////////////////////////////////////// +//t_sqlcompact1 timeouts in WDP builds. +//This function is used to check whether the time limit is reaqched or not. +TBool IsTimeLimitReached() + { + struct TStartTime + { + TStartTime() + { + iTime.HomeTime(); + } + TTime iTime; + }; + + static TStartTime startTime; + const TInt KTestTimeLimit = 100;//seconds + + TTime currTime; + currTime.HomeTime(); + + TTimeIntervalSeconds s; + TInt err = currTime.SecondsFrom(startTime.iTime, s); + TEST2(err, KErrNone); + return s.Int() > KTestTimeLimit; + } + +void GetHomeTimeAsString(TDes& aStr) + { + TTime time; + time.HomeTime(); + TDateTime dt = time.DateTime(); + aStr.Format(_L("%02d:%02d:%02d.%06d"), dt.Hour(), dt.Minute(), dt.Second(), dt.MicroSecond()); + } + void CreateTestEnv() { RFs fs; @@ -116,6 +149,8 @@ { TInt err = TheDb.Open(aDbName); TEST2(err, KErrNone); + err = TheDb.Exec(_L("BEGIN TRANSACTION")); + TEST(err >= 0); TheText.SetLength(TheText.MaxLength()); TheText.Fill(TChar('A')); for(TInt i=0;i<100;++i) @@ -124,6 +159,8 @@ err = TheDb.Exec(TheSqlBuf); TEST2(err, 1); } + err = TheDb.Exec(_L("COMMIT TRANSACTION")); + TEST(err >= 0); TheDb.Close(); } @@ -132,6 +169,8 @@ TInt freePageCount = -1; TInt err = TheDb.Open(aDbName); TEST2(err, KErrNone); + err = TheDb.Exec(_L("BEGIN TRANSACTION")); + TEST(err >= 0); for(TInt i=0;;++i) { TheSqlBuf.Format(_L("DELETE FROM A WHERE I=%d"), i + 1); @@ -146,6 +185,8 @@ break; } } + err = TheDb.Exec(_L("COMMIT TRANSACTION")); + TEST(err >= 0); TheDb.Close(); return freePageCount; } @@ -177,6 +218,10 @@ TInt i; + TBuf<50> timeBuf; + GetHomeTimeAsString(timeBuf); + TheTest.Printf(_L("===Time1: %S\r\n"), &timeBuf); + //Create databases, tables, insert records, delete part of the just inserted records. for(i=0;i= 0); err = TheDb.Exec(_L("CREATE TABLE A(I INTEGER, T TEXT)")); TEST(err >= 0); //Insert records @@ -263,6 +322,8 @@ err = TheDb.Exec(TheSqlBuf); TEST2(err, 1); } + err = TheDb.Exec(_L("COMMIT TRANSACTION")); + TEST(err >= 0); //Delete all records making a lot of free pages. This operation should kick-off the background compaction err = TheDb.Exec(_L("DELETE FROM A WHERE 1")); TEST2(err, aRecordCount); @@ -288,11 +349,18 @@ */ void CompactDbTest2() { + TBuf<50> timeBuf; + GetHomeTimeAsString(timeBuf); + TheTest.Printf(_L("===Time1: %S\r\n"), &timeBuf); + const TInt KPageSize = 1024; //Number of records to be added and removed from database. Need to be increased when testing on a faster // hardware, otherwise at fastest case the background compaction could be finished in just 1 step. - const TInt KRecordCount = 2000; + const TInt KRecordCount = 2000; PrepareDb(KPageSize, KRecordCount); + + GetHomeTimeAsString(timeBuf); + TheTest.Printf(_L("===Time2: %S\r\n"), &timeBuf); //Check the free space-1 RSqlDatabase::TSize size1; @@ -321,6 +389,9 @@ { TEST(size2.iFree == size1.iFree); } + + GetHomeTimeAsString(timeBuf); + TheTest.Printf(_L("===Time3: %S\r\n"), &timeBuf); //Wait (KSqlCompactStepIntervalMs + KSqlCompactStepLengthMs) ms. During the pause only part of the free pages //should be removed (whatever can be completed for KSqlCompactStepLengthMs ms). @@ -335,6 +406,9 @@ TheTest.Printf(_L("WARNING: Background compaction finished in 1 step. Initial number of records need to be increased.\r\n")); } TEST(size3.iFree > 0 && size3.iFree < size2.iFree); + + GetHomeTimeAsString(timeBuf); + TheTest.Printf(_L("===Time4: %S\r\n"), &timeBuf); //Wait another (KSqlCompactStepIntervalMs + KSqlCompactStepLengthMs) ms. During the pause only part of the free pages //should be removed (whatever can be completed for KSqlCompactStepLengthMs ms). @@ -345,6 +419,9 @@ TEST2(err, KErrNone); TheTest.Printf(_L("===Free space after compaction-3, pages=%d\r\n"), size4.iFree / KPageSize); TEST((size4.iFree > 0 && size4.iFree < size3.iFree) || (size4.iFree == 0)); + + GetHomeTimeAsString(timeBuf); + TheTest.Printf(_L("===Time5: %S\r\n"), &timeBuf); //Cleanup TheDb.Close(); @@ -370,10 +447,17 @@ */ void CompactDbTest3() { + TBuf<50> timeBuf; + GetHomeTimeAsString(timeBuf); + TheTest.Printf(_L("===Time1: %S\r\n"), &timeBuf); + const TInt KPageSize = 1024; const TInt KRecordCount = 1000; PrepareDb(KPageSize, KRecordCount); + GetHomeTimeAsString(timeBuf); + TheTest.Printf(_L("===Time2: %S\r\n"), &timeBuf); + //Check the free space-1 RSqlDatabase::TSize size1; TInt err = TheDb.Size(size1); @@ -406,6 +490,10 @@ break; } } + + GetHomeTimeAsString(timeBuf); + TheTest.Printf(_L("===Time3: %S\r\n"), &timeBuf); + //Check the free space-2 RSqlDatabase::TSize size2; err = TheDb.Size(size2); @@ -432,10 +520,18 @@ */ void ManualCompactTest() { + TBuf<50> timeBuf; + GetHomeTimeAsString(timeBuf); + TheTest.Printf(_L("===Time1: %S\r\n"), &timeBuf); + //Create a database with 1000 free pages const TInt KPageSize = 1024; const TInt KRecordCount = 1000; PrepareDb(KPageSize, KRecordCount, ETrue);//create the database with manual compaction mode + + GetHomeTimeAsString(timeBuf); + TheTest.Printf(_L("===Time2: %S\r\n"), &timeBuf); + //Check the free space-1 RSqlDatabase::TSize size1; TInt err = TheDb.Size(size1); @@ -446,6 +542,10 @@ //Compact err = TheDb.Compact(RSqlDatabase::EMaxCompaction); TEST2(err, size1.iFree); + + GetHomeTimeAsString(timeBuf); + TheTest.Printf(_L("===Time3: %S\r\n"), &timeBuf); + //Cleanup TheDb.Close(); (void)RSqlDatabase::Delete(KDbName1); @@ -456,12 +556,30 @@ TheTest.Start(_L(" @SYMTestCaseID:SYSLIB-SQL-UT-4072 Manual Compact() - attached databases, different page sizes")); CompactDbTest1(); + if(IsTimeLimitReached()) + { + TheTest.Printf(_L("===Test timeout!\r\n")); + return; + } + TheTest.Next( _L(" @SYMTestCaseID:SYSLIB-SQL-UT-4073 Background compaction steps test")); CompactDbTest2(); + if(IsTimeLimitReached()) + { + TheTest.Printf(_L("===Test timeout!\r\n")); + return; + } + TheTest.Next( _L(" @SYMTestCaseID:SYSLIB-SQL-UT-4074 Background compaction timer test")); CompactDbTest3(); + if(IsTimeLimitReached()) + { + TheTest.Printf(_L("===Test timeout!\r\n")); + return; + } + TheTest.Next( _L(" @SYMTestCaseID:SYSLIB-SQL-UT-4103 Big manual compaction test")); ManualCompactTest(); } diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sql/TEST/t_sqlcorrupt.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/persistentstorage/sql/TEST/t_sqlcorrupt.cpp Tue May 25 14:35:19 2010 +0300 @@ -0,0 +1,255 @@ +// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// +// +#include +#include +#include + +/////////////////////////////////////////////////////////////////////////////////////// + +RSqlDatabase TheDb; +RTest TheTest(_L("t_sqlcorrupt test")); + +_LIT(KTestDir, "c:\\test\\"); + +_LIT(KDbName, "c:[08770000]t_sqlcorrupt.db"); +_LIT(KFullDbName, "c:\\private\\10281E17\\[08770000]t_sqlcorrupt.db"); + +_LIT(KDbName2, "c:[08770000]t_sqlcorrupt2.db"); +_LIT(KFullDbName2, "c:\\private\\10281E17\\[08770000]t_sqlcorrupt2.db"); + +RFs TheFs; + +/////////////////////////////////////////////////////////////////////////////////////// + +void DestroyTestEnv() + { + TheDb.Close(); + (void)RSqlDatabase::Delete(KDbName2); + (void)RSqlDatabase::Delete(KDbName); + TheFs.Close(); + } + +/////////////////////////////////////////////////////////////////////////////////////// +//Test macros and functions +void Check1(TInt aValue, TInt aLine) + { + if(!aValue) + { + DestroyTestEnv(); + RDebug::Print(_L("*** Boolean expression evaluated to false. Line %d\r\n"), aLine); + TheTest(EFalse, aLine); + } + } +void Check2(TInt aValue, TInt aExpected, TInt aLine) + { + if(aValue != aExpected) + { + DestroyTestEnv(); + RDebug::Print(_L("*** Line %d, Expected error: %d, got: %d\r\n"), aLine, aExpected, aValue); + TheTest(EFalse, aLine); + } + } +#define TEST(arg) ::Check1((arg), __LINE__) +#define TEST2(aValue, aExpected) ::Check2(aValue, aExpected, __LINE__) + +/////////////////////////////////////////////////////////////////////////////////////// + +enum TDbEncoding + { + EDbEncUtf16, + EDbEncUtf8, + }; + +void DoCorruptedSecureDbTest(TDbEncoding aEncoding) + { + (void)RSqlDatabase::Delete(KDbName); + + RSqlSecurityPolicy policy; + TInt err = policy.Create(TSecurityPolicy::EAlwaysPass); + TEST2(err, KErrNone); + + err = policy.SetDbPolicy(RSqlSecurityPolicy::ESchemaPolicy, TSecurityPolicy::EAlwaysPass); + TEST2(err, KErrNone); + err = policy.SetDbPolicy(RSqlSecurityPolicy::EWritePolicy, TSecurityPolicy::EAlwaysPass); + TEST2(err, KErrNone); + err = policy.SetDbPolicy(RSqlSecurityPolicy::EReadPolicy, TSecurityPolicy::EAlwaysPass); + TEST2(err, KErrNone); + + err = policy.SetPolicy(RSqlSecurityPolicy::ETable, _L("A"), RSqlSecurityPolicy::EWritePolicy, TSecurityPolicy::EAlwaysPass); + TEST2(err, KErrNone); + err = policy.SetPolicy(RSqlSecurityPolicy::ETable, _L("A"), RSqlSecurityPolicy::EReadPolicy, TSecurityPolicy::EAlwaysPass); + TEST2(err, KErrNone); + + if(aEncoding == EDbEncUtf16) + { + err = TheDb.Create(KDbName, policy); + } + else + { + _LIT8(KConfig, "encoding = \"UTF-8\""); + err = TheDb.Create(KDbName, policy, &KConfig); + } + TEST2(err, KErrNone); + err = TheDb.Exec(_L("CREATE TABLE A(I INTEGER); INSERT INTO A VALUES(10)")); + TEST(err >= 0); + TheDb.Close(); + policy.Close(); + + CFileMan* fm = NULL; + TRAP(err, fm = CFileMan::NewL(TheFs)); + TEST2(err, KErrNone); + + //Make a copy of the database + err = fm->Copy(KFullDbName, KFullDbName2); + TEST2(err, KErrNone); + //Get the database file size and calculate the iterations count. + TEntry entry; + err = TheFs.Entry(KFullDbName, entry); + TEST2(err, KErrNone); + const TInt KCorruptBlockLen = 19; + const TInt KIterationCnt = entry.iSize / KCorruptBlockLen; + // + TBuf8 invalidData; + invalidData.SetLength(KCorruptBlockLen); + invalidData.Fill(TChar(0xCC)); + // + for(TInt i=0;iCopy(KFullDbName2, KFullDbName); + TEST2(err, KErrNone); + RFile file; + err = file.Open(TheFs, KFullDbName, EFileRead | EFileWrite); + TEST2(err, KErrNone); + err = file.Write(i * KCorruptBlockLen, invalidData); + TEST2(err, KErrNone); + file.Close(); + //Try to open the database and read the record + TBool testPassed = EFalse; + err = TheDb.Open(KDbName); + if(err == KErrNone) + { + RSqlStatement stmt; + err = stmt.Prepare(TheDb, _L("SELECT I FROM A")); + if(err == KErrNone) + { + err = stmt.Next(); + if(err == KSqlAtRow) + { + TInt val = stmt.ColumnInt(0); + if(val == 10) + { + testPassed = ETrue; + err = KErrNone; + } + else + { + err = KErrGeneral; + } + } + stmt.Close(); + } + } + + TheDb.Close(); + (void)RSqlDatabase::Delete(KDbName); + TheTest.Printf(_L("Iteration % 4d, err=%d\r\n"), i + 1, err); + if(!testPassed) + { + TEST(err != KErrNone); + } + }//end of - for(TInt i=0;iDes(); + TUint8 buf1[1]; + TPtr8 ptr1(buf1, 0); err = fbuf.Read(0, ptr1); TEST2(err, KErrNone); - delete buf1; TEST2(fbuf.iFileReadCount, 0); TEST2(fbuf.iFileReadAmount, 0); TEST2(fbuf.iFileSizeCount, 0); @@ -823,15 +821,21 @@ parse.Set(KTestFile2, &drvName, NULL); TheDbName.Copy(parse.FullName()); TRAP(err, BaflUtils::EnsurePathExistsL(TheFs, TheDbName)); - TEST(err == KErrNone || err == KErrAlreadyExists); - (void)TheFs.Delete(TheDbName); - RFileBuf64 fbuf64(8 * 1024); - err = fbuf64.Create(TheFs, TheDbName, EFileRead | EFileWrite); - TEST2(err, KErrNone); - TInt readAhead = fbuf64.SetReadAheadSize(vparam.iBlockSize, vparam.iRecReadBufSize); - TheTest.Printf(_L(" Read-ahead size=%d.\r\n"), readAhead); - fbuf64.Close(); - (void)TheFs.Delete(TheDbName); + if(err == KErrNone || err == KErrAlreadyExists) + { + (void)TheFs.Delete(TheDbName); + RFileBuf64 fbuf64(8 * 1024); + err = fbuf64.Create(TheFs, TheDbName, EFileRead | EFileWrite); + TEST2(err, KErrNone); + TInt readAhead = fbuf64.SetReadAheadSize(vparam.iBlockSize, vparam.iRecReadBufSize); + TheTest.Printf(_L(" Read-ahead size=%d.\r\n"), readAhead); + fbuf64.Close(); + (void)TheFs.Delete(TheDbName); + } + else + { + TheTest.Printf(_L("Drive %C. BaflUtils::EnsurePathExistsL() has failed with err=%d.\r\n"), 'A' + drive, err); + } } } else diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sql/TEST/t_sqlload.cpp --- a/persistentstorage/sql/TEST/t_sqlload.cpp Tue May 11 17:49:39 2010 +0300 +++ b/persistentstorage/sql/TEST/t_sqlload.cpp Tue May 25 14:35:19 2010 +0300 @@ -137,7 +137,7 @@ }; static TStartTime startTime; - const TInt KTestTimeLimit = 500;//seconds + const TInt KTestTimeLimit = 150;//seconds TTime currTime; currTime.HomeTime(); @@ -600,46 +600,54 @@ const TInt KMaxStmtCount = 100000; RSqlStatement* stmt = new RSqlStatement[KMaxStmtCount]; TEST(stmt != NULL); - TInt stmtCnt = 0; //Create as many statement objects as possible + TInt idx = 0; err = KErrNone; - for(TInt i=0;(i=0 AND I<10")); - if((i % 100) == 0) + err = stmt[idx].Prepare(db, _L("SELECT * FROM A WHERE I>=0 AND I<10")); + if(err != KErrNone) + { + break; + } + if((idx % 100) == 0) { GetHomeTimeAsString(time); - TheTest.Printf(_L("=== %S: Create % 5d statements\r\n"), &time, i + 1); + TheTest.Printf(_L("=== %S: Create % 5d statements\r\n"), &time, idx + 1); if(IsTimeLimitReached()) { TheTest.Printf(_L("=== %S: The time limit reached.\r\n"), &time); + ++idx;//The idx-th statement is valid, the statement count is idx + 1. break; } } } + + TInt stmtCnt = idx; TheTest.Printf(_L("%d created statement objects. Last error: %d.\r\n"), stmtCnt, err); TEST(err == KErrNone || err == KErrNoMemory); //Close 1/2 of the statements to free some memory - for(TInt i=stmtCnt-1,j=0;i>=0;i-=2,++j) + idx = 0; + for(;idx<(stmtCnt/2);++idx) { - stmt[i].Close(); - if((j % 100) == 0) + stmt[idx].Close(); + if((idx % 100) == 0) { GetHomeTimeAsString(time); - TheTest.Printf(_L("=== %S: % 5d statements closed\r\n"), &time, j + 1); + TheTest.Printf(_L("=== %S: % 5d statements closed\r\n"), &time, idx + 1); } } //Now, there should be enough memory to be able to execute Next() on the rest of the statements - for(TInt i=stmtCnt-2,j=0;i>=0;i-=2,++j) + for(TInt j=0;idx=0;--i,++j) + for(idx=0;idx 0) @@ -900,7 +900,7 @@ } //"TSqlBlob::Get()" OOM test -void BlobWholeGet2L(RSqlDatabase& aDb, const TDesC& aAttachDbName = KNullDesC) +void BlobWholeGet2L(RSqlDatabase& aDb, const TDesC& aAttachDbName) { if(aAttachDbName.Length() > 0) { @@ -913,7 +913,7 @@ } //"TSqlBlob::SetL()" OOM test -void BlobWholeSetL(RSqlDatabase& aDb, const TDesC& aAttachDbName = KNullDesC) +void BlobWholeSetL(RSqlDatabase& aDb, const TDesC& aAttachDbName) { if(aAttachDbName.Length() > 0) { @@ -978,7 +978,7 @@ } else { - TRAP(err, (*aBlobTestFuncPtrL)(db)); + TRAP(err, (*aBlobTestFuncPtrL)(db, KNullDesC)); } ResetHeapFailure(TheOomTestType[i]); diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sql/TEST/t_sqlperformance.cpp --- a/persistentstorage/sql/TEST/t_sqlperformance.cpp Tue May 11 17:49:39 2010 +0300 +++ b/persistentstorage/sql/TEST/t_sqlperformance.cpp Tue May 25 14:35:19 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -19,6 +19,7 @@ #include #include #include +#include "t_sqlcmdlineutil.h" #include "SqlSrvStrings.h" #include "sqlite3.h" #include "SqliteSymbian.h" @@ -27,15 +28,12 @@ RTest TheTest(_L("t_sqlperformance test")); RFs TheFs; +TBuf<200> TheTestTitle; +TCmdLineParams TheCmdLineParams; +TBuf8<200> TheSqlConfigString; -TBuf<200> TheTestTitle; -TBuf<256> TheCmd; -TParse TheParse; -TBuf<8> TheDriveName; - -_LIT8(KDbEncodingUtf8, "encoding=UTF-8"); -_LIT(KDbEncodingUtf8text, "UTF8 encoded db"); -_LIT(KDbEncodingUtf16text, "UTF16 encoded db"); +_LIT(KUtf8, "UTF8 "); +_LIT(KUtf16, "UTF16"); TFileName TheSecureDbName; TFileName TheNonSecureDbName; @@ -43,14 +41,6 @@ TFileName TheNonSecureTmpDbName; TFileName TheSglRecDbFileName; -enum TDbEncoding - { - EDbUtf8, - EDbUtf16 - }; - -TDbEncoding TheDbEncoding; - _LIT(KSqlServerPrivateDir, "\\private\\10281e17\\"); _LIT(KCreateDbScript, "z:\\test\\contacts_schema_to_vendors.sql"); @@ -157,9 +147,10 @@ file.Close(); - HBUFC* sql2 = HBUFC::New(size); + HBUFC* sql2 = HBUFC::New(size + 1); TEST(sql2 != NULL); sql2->Des().Copy(sql->Des()); + sql2->Des().Append(TChar(0)); delete sql; return sql2; @@ -249,7 +240,7 @@ { RSqlDatabase::Delete(aDbName); RSqlDatabase db; - TInt err = db.Create(aDbName, TheDbEncoding == EDbUtf16 ? NULL : &KDbEncodingUtf8); + TInt err = db.Create(aDbName, &TheSqlConfigString); TEST2(err, KErrNone); CreateDbSchema(db); db.Close(); @@ -277,7 +268,7 @@ securityPolicy.SetDbPolicy(RSqlSecurityPolicy::EWritePolicy, TSecurityPolicy(ECapabilityWriteUserData)); securityPolicy.SetDbPolicy(RSqlSecurityPolicy::EReadPolicy, TSecurityPolicy(ECapabilityReadUserData)); RSqlDatabase db; - err = db.Create(aDbName, securityPolicy, TheDbEncoding == EDbUtf16 ? NULL : &KDbEncodingUtf8); + err = db.Create(aDbName, securityPolicy, &TheSqlConfigString); TEST2(err, KErrNone); securityPolicy.Close(); CreateDbSchema(db); @@ -505,7 +496,7 @@ ////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Template class offering Create() and Open() methods for creating/opening a sqlite3 handle. -template class TDbHelper2 +template class TDbHelper2 { public: static void Create(const TDesC& aDbName); @@ -543,7 +534,7 @@ } //Explicit TDbHelper2 class specialization for creating/opening a database with UTF8 default encoding -template <> class TDbHelper2 +template <> class TDbHelper2 { public: static void Create(const TDesC& aDbFileName) @@ -581,7 +572,7 @@ }; //Explicit TDbHelper2 class specialization for creating/opening a database with UTF16 default encoding -template <> class TDbHelper2 +template <> class TDbHelper2 { public: static void Create(const TDesC& aDbFileName) @@ -814,7 +805,7 @@ fmtstr.Copy(aUpdateSql); sqlite3SymbianLibInit(); - sqlite3* dbHandle = TDbHelper2::Open(aDbName); + sqlite3* dbHandle = TDbHelper2::Open(aDbName); TUint32 start = User::FastCounter(); for(TInt id=1;id<=KTestTecordCount;++id) @@ -842,7 +833,7 @@ TheTest.Printf(_L("\"Update (without parameters)\" test\r\n")); sqlite3SymbianLibInit(); - sqlite3* dbHandle = TDbHelper2::Open(aDbName); + sqlite3* dbHandle = TDbHelper2::Open(aDbName); TUint32 start = User::FastCounter(); for(TInt id=1;id<=KTestTecordCount;++id) @@ -998,7 +989,8 @@ delete sql; } -template void PerformanceTest2(const TDesC& aDbFileName, +template void PerformanceTest2( + const TDesC& aDbFileName, const DESC& aCommitStr, const DESC& aUpdateSql, const DESC& aSelectSql, @@ -1039,10 +1031,10 @@ delete fm; } //Explicit PerformanceTest2() template instantiations. -template void PerformanceTest2(const TDesC&, const TDesC8&, const TDesC8&, const TDesC8&, const TDesC8&); -template void PerformanceTest2(const TDesC&, const TDesC8&, const TDesC8&, const TDesC8&, const TDesC8&); -template void PerformanceTest2(const TDesC&, const TDesC16&, const TDesC16&, const TDesC16&, const TDesC16&); -template void PerformanceTest2(const TDesC&, const TDesC16&, const TDesC16&, const TDesC16&, const TDesC16&); +template void PerformanceTest2(const TDesC&, const TDesC8&, const TDesC8&, const TDesC8&, const TDesC8&); +template void PerformanceTest2(const TDesC&, const TDesC8&, const TDesC8&, const TDesC8&, const TDesC8&); +template void PerformanceTest2(const TDesC&, const TDesC16&, const TDesC16&, const TDesC16&, const TDesC16&); +template void PerformanceTest2(const TDesC&, const TDesC16&, const TDesC16&, const TDesC16&, const TDesC16&); void ColumnValueAccessTest() { @@ -1056,7 +1048,7 @@ //Create a test database RSqlDatabase db; - TInt err = db.Create(TheNonSecureDbName2); + TInt err = db.Create(TheNonSecureDbName2, &TheSqlConfigString); TEST2(err, KErrNone); _LIT(KCreateSql, "CREATE TABLE A(%S INTEGER, %S INTEGER, %S INTEGER, %S INTEGER)"); sql.Format(KCreateSql, &colNames[0], &colNames[1], &colNames[2], &colNames[3]); @@ -1259,57 +1251,50 @@ TheTest.Printf(_L("Single \"delete\" test\r\n")); SingleDeleteTest(); - TheTestTitle.Copy(_L("SERVER, UTF8 SQL strings, non-secure, ")); - TheTestTitle.Append(TheDbEncoding == EDbUtf16 ? KDbEncodingUtf16text : KDbEncodingUtf8text); - TheTestTitle.Append(_L("\r\n")); + TheTestTitle.Format(_L("SERVER, UTF8 SQL strings, non-secure, encoding: \"%S\", page size: %d\r\n"), + TheCmdLineParams.iDbEncoding == TCmdLineParams::EDbUtf16 ? &KUtf16 : &KUtf8, TheCmdLineParams.iPageSize); TheTest.Printf(TheTestTitle); PerformanceTest(TheNonSecureDbName, KCommitStr8(), KUpdateSql8(), KSelectSql8(), KDeleteSql8()); - TheTestTitle.Copy(_L("SERVER, UTF8 SQL strings, non-secure, ")); - TheTestTitle.Append(TheDbEncoding == EDbUtf16 ? KDbEncodingUtf16text : KDbEncodingUtf8text); - TheTestTitle.Append(_L(", update test (without parameters)")); - TheTestTitle.Append(_L("\r\n")); + TheTestTitle.Format(_L("SERVER, UTF8 SQL strings, non-secure, update test (without parameters), encoding: \"%S\", page size: %d\r\n"), + TheCmdLineParams.iDbEncoding == TCmdLineParams::EDbUtf16 ? &KUtf16 : &KUtf8, TheCmdLineParams.iPageSize); TheTest.Printf(TheTestTitle); UpdateWPTest, TDesC8, ENonSecureDb>(TheNonSecureDbName, KUpdateSql2_8()); - TheTestTitle.Copy(_L("SERVER, UTF8 SQL strings, secure, ")); - TheTestTitle.Append(TheDbEncoding == EDbUtf16 ? KDbEncodingUtf16text : KDbEncodingUtf8text); - TheTestTitle.Append(_L("\r\n")); + TheTestTitle.Format(_L("SERVER, UTF8 SQL strings, secure, encoding: \"%S\", page size: %d\r\n"), + TheCmdLineParams.iDbEncoding == TCmdLineParams::EDbUtf16 ? &KUtf16 : &KUtf8, TheCmdLineParams.iPageSize); TheTest.Printf(TheTestTitle); PerformanceTest(TheSecureDbName, KCommitStr8(), KUpdateSql8(), KSelectSql8(), KDeleteSql8()); TheTest.Printf(_L("SQLITE, UTF8 encoded database, UTF8 SQL strings\r\n")); - PerformanceTest2(TheNonSecureDbName, KCommitStr8(), KUpdateSql8(), KSelectSql8(), KDeleteSql8()); + PerformanceTest2(TheNonSecureDbName, KCommitStr8(), KUpdateSql8(), KSelectSql8(), KDeleteSql8()); TheTest.Printf(_L("SQLITE, UTF8 encoded database, UTF8 SQL strings, update test (without parameters)\r\n")); UpdateWPTest2(TheNonSecureDbName, KUpdateSql2_8()); TheTest.Printf(_L("SQLITE, UTF16 encoded database, UTF8 SQL strings\r\n")); - PerformanceTest2(TheNonSecureDbName, KCommitStr8(), KUpdateSql8(), KSelectSql8(), KDeleteSql8()); + PerformanceTest2(TheNonSecureDbName, KCommitStr8(), KUpdateSql8(), KSelectSql8(), KDeleteSql8()); - TheTestTitle.Copy(_L("SERVER, UTF16 SQL strings, non-secure, ")); - TheTestTitle.Append(TheDbEncoding == EDbUtf16 ? KDbEncodingUtf16text : KDbEncodingUtf8text); - TheTestTitle.Append(_L("\r\n")); + TheTestTitle.Format(_L("SERVER, UTF16 SQL strings, non-secure, encoding: \"%S\", page size: %d\r\n"), + TheCmdLineParams.iDbEncoding == TCmdLineParams::EDbUtf16 ? &KUtf16 : &KUtf8, TheCmdLineParams.iPageSize); TheTest.Printf(TheTestTitle); PerformanceTest(TheNonSecureDbName, KCommitStr16(), KUpdateSql16(), KSelectSql16(), KDeleteSql16()); - TheTestTitle.Copy(_L("SERVER, UTF16 SQL strings, non-secure, ")); - TheTestTitle.Append(TheDbEncoding == EDbUtf16 ? KDbEncodingUtf16text : KDbEncodingUtf8text); - TheTestTitle.Append(_L(", update test (without parameters)\r\n")); + TheTestTitle.Format(_L("SERVER, UTF16 SQL strings, non-secure, update test (without parameters), encoding: \"%S\", page size: %d\r\n"), + TheCmdLineParams.iDbEncoding == TCmdLineParams::EDbUtf16 ? &KUtf16 : &KUtf8, TheCmdLineParams.iPageSize); TheTest.Printf(TheTestTitle); UpdateWPTest, TDesC16, ENonSecureDb>(TheNonSecureDbName, KUpdateSql2_16()); - TheTestTitle.Copy(_L("SERVER, UTF16 SQL strings, secure, ")); - TheTestTitle.Append(TheDbEncoding == EDbUtf16 ? KDbEncodingUtf16text : KDbEncodingUtf8text); - TheTestTitle.Append(_L("\r\n")); + TheTestTitle.Format(_L("SERVER, UTF16 SQL strings, secure, encoding: \"%S\", page size: %d\r\n"), + TheCmdLineParams.iDbEncoding == TCmdLineParams::EDbUtf16 ? &KUtf16 : &KUtf8, TheCmdLineParams.iPageSize); TheTest.Printf(TheTestTitle); PerformanceTest(TheSecureDbName, KCommitStr16(), KUpdateSql16(), KSelectSql16(), KDeleteSql16()); TheTest.Printf(_L("SQLITE, UTF8 encoded database, UTF16 SQL strings\r\n")); - PerformanceTest2(TheNonSecureDbName, KCommitStr16(), KUpdateSql16(), KSelectSql16(), KDeleteSql16()); + PerformanceTest2(TheNonSecureDbName, KCommitStr16(), KUpdateSql16(), KSelectSql16(), KDeleteSql16()); TheTest.Printf(_L("SQLITE, UTF16 encoded database, UTF16 SQL strings\r\n")); - PerformanceTest2(TheNonSecureDbName, KCommitStr16(), KUpdateSql16(), KSelectSql16(), KDeleteSql16()); + PerformanceTest2(TheNonSecureDbName, KCommitStr16(), KUpdateSql16(), KSelectSql16(), KDeleteSql16()); TheTest.Printf(_L("SQLITE, UTF16 encoded database, UTF16 SQL strings, update test (without parameters)\r\n")); UpdateWPTest2(TheNonSecureDbName, KUpdateSql2_16()); @@ -1322,85 +1307,32 @@ } -//Usage: "t_sqlperformance [[-16/-8] [:]]" - TInt E32Main() { TheTest.Title(); CTrapCleanup* tc = CTrapCleanup::New(); - - TheDbEncoding = EDbUtf16; + TheTest(tc != NULL); - User::CommandLine(TheCmd); - TheCmd.TrimAll(); - if(TheCmd.Length() > 0) - { - TPtrC prm1(KNullDesC); - TPtrC prm2(KNullDesC); - TInt pos = TheCmd.Locate(TChar(' ')); - if(pos > 0) - { - prm1.Set(TheCmd.Left(pos)); - prm2.Set(TheCmd.Mid(pos + 1)); - } - else - { - prm1.Set(TheCmd); - } - if(prm1.Compare(_L("-8")) == 0) - { - TheDbEncoding = EDbUtf8; - TheDriveName.Copy(prm2); - } - else if(prm2.Compare(_L("-8")) == 0) - { - TheDbEncoding = EDbUtf8; - TheDriveName.Copy(prm1); - } - else if(prm1.Compare(_L("-16")) == 0) - { - TheDbEncoding = EDbUtf16; - TheDriveName.Copy(prm2); - } - else if(prm2.Compare(_L("-16")) == 0) - { - TheDbEncoding = EDbUtf16; - TheDriveName.Copy(prm1); - } - } + GetCmdLineParamsAndSqlConfigString(TheTest, _L("t_sqlperformance"), TheCmdLineParams, TheSqlConfigString); + _LIT(KSecureDbName, "c:[2121212A]t_perfdb.db"); + PrepareDbName(KSecureDbName, TheCmdLineParams.iDriveName, TheSecureDbName); + _LIT(KNonSecureDbName, "c:\\test\\t_perfdb.db"); + PrepareDbName(KNonSecureDbName, TheCmdLineParams.iDriveName, TheNonSecureDbName); + _LIT(KNonSecureDbName2, "c:\\test\\t_perfdb2.db"); + PrepareDbName(KNonSecureDbName2, TheCmdLineParams.iDriveName, TheNonSecureDbName2); + _LIT(KNonSecureTmpDbName, "c:\\test\\tmp.db"); + PrepareDbName(KNonSecureTmpDbName, TheCmdLineParams.iDriveName, TheNonSecureTmpDbName); + _LIT(KSglRecDbName, "c:\\test\\default_avacon.dbSQL"); + PrepareDbName(KSglRecDbName, TheCmdLineParams.iDriveName, TheSglRecDbFileName); - //Construct test database file names - _LIT(KSecureDbName, "c:[2121212A]t_perfdb.db"); - TheParse.Set(TheDriveName, &KSecureDbName, 0); - const TDesC& dbFilePath1 = TheParse.FullName(); - TheSecureDbName.Copy(dbFilePath1); - - _LIT(KNonSecureDbName, "c:\\test\\t_perfdb.db"); - TheParse.Set(TheDriveName, &KNonSecureDbName, 0); - const TDesC& dbFilePath2 = TheParse.FullName(); - TheNonSecureDbName.Copy(dbFilePath2); - - _LIT(KNonSecureDbName2, "c:\\test\\t_perfdb2.db"); - TheParse.Set(TheDriveName, &KNonSecureDbName2, 0); - const TDesC& dbFilePath3 = TheParse.FullName(); - TheNonSecureDbName2.Copy(dbFilePath3); - - _LIT(KNonSecureTmpDbName, "c:\\test\\tmp.db"); - TheParse.Set(TheDriveName, &KNonSecureTmpDbName, 0); - const TDesC& dbFilePath4 = TheParse.FullName(); - TheNonSecureTmpDbName.Copy(dbFilePath4); - - _LIT(KSglRecDbName, "c:\\test\\default_avacon.dbSQL"); - TheParse.Set(TheDriveName, &KSglRecDbName, 0); - const TDesC& dbFilePath5 = TheParse.FullName(); - TheSglRecDbFileName.Copy(dbFilePath5); + TheTest.Printf(_L("==Databases: %S, %S, %S, %S, %S\r\n"), &TheSecureDbName, &TheNonSecureDbName, + &TheNonSecureDbName2, &TheNonSecureTmpDbName, + &TheSglRecDbFileName); __UHEAP_MARK; TestEnvInit(); - TheTest.Printf(_L("==Databases: %S, %S, %S, %S, %S\r\n"), &TheSecureDbName, &TheNonSecureDbName, - &TheNonSecureDbName2, &TheNonSecureTmpDbName, &TheSglRecDbFileName); DoTests(); TestEnvDestroy(); diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sql/TEST/t_sqlperformance2.cpp --- a/persistentstorage/sql/TEST/t_sqlperformance2.cpp Tue May 11 17:49:39 2010 +0300 +++ b/persistentstorage/sql/TEST/t_sqlperformance2.cpp Tue May 25 14:35:19 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -16,6 +16,7 @@ #include #include #include +#include "t_sqlcmdlineutil.h" /////////////////////////////////////////////////////////////////////////////////////// @@ -24,11 +25,14 @@ TFileName TheDbFileName; RFs TheFs; -TInt TheBlobSize = 1024 * 256; +TBuf<200> TheTestTitle; +TCmdLineParams TheCmdLineParams; +TBuf8<200> TheSqlConfigString; -TBuf<256> TheCmd; -TDriveName TheDriveName; -TParse TheParse; +_LIT(KUtf8, "UTF8 "); +_LIT(KUtf16, "UTF16"); + +TInt TheBlobSize = 1024 * 256; /////////////////////////////////////////////////////////////////////////////////////// @@ -69,20 +73,16 @@ { TInt err = TheFs.Connect(); TEST2(err, KErrNone); - //Get the drive number from the database file name - err = TheParse.Set(TheDbFileName, NULL, NULL); - TEST2(err, KErrNone); - TPtrC driveName = TheParse.Drive(); - TEST(driveName.Length() > 0); - TInt driveNumber = -1; - err = RFs::CharToDrive(driveName[0], driveNumber); + // + TInt driveNumber = -1; + err = RFs::CharToDrive(TheCmdLineParams.iDriveName[0], driveNumber); TEST2(err, KErrNone); TDriveNumber driveNo = static_cast (driveNumber); TDriveInfo driveInfo; err = TheFs.Drive(driveInfo, driveNo); TEST2(err, KErrNone); //Create the test directory - err = TheFs.MkDir(TheParse.DriveAndPath()); + err = TheFs.MkDirAll(TheDbFileName); TEST(err == KErrNone || err == KErrAlreadyExists); //Print drive info and the database name _LIT(KType1, "Not present"); @@ -130,7 +130,7 @@ void CreateTestDb() { (void)RSqlDatabase::Delete(TheDbFileName); - TInt err = TheDb.Create(TheDbFileName); + TInt err = TheDb.Create(TheDbFileName, &TheSqlConfigString); TEST2(err, KErrNone); err = TheDb.Exec(_L8("CREATE TABLE A(B BLOB)")); TEST2(err, 1); @@ -531,7 +531,7 @@ (void)RSqlDatabase::Delete(TheDbFileName); } -void DoReadBlobIncrL(TDes8& aDes) +void DoReadBlobIncrL(TDes8& aDes, TInt aMaxLength) { TTime t1, t2, t3, t4; @@ -547,7 +547,7 @@ openTime = t2.MicroSecondsFrom(t1); t3.HomeTime(); - strm.ReadL(aDes); + strm.ReadL(aDes, aMaxLength); t4.HomeTime(); readTime = t4.MicroSecondsFrom(t3); @@ -563,7 +563,7 @@ TEST(data != NULL); TPtr8 dataptr = data->Des(); - TRAPD(err, DoReadBlobIncrL(dataptr)); + TRAPD(err, DoReadBlobIncrL(dataptr, TheBlobSize)); TEST2(err, KErrNone); TEST2(dataptr.Length(), TheBlobSize); @@ -661,7 +661,7 @@ t5.HomeTime(); err = strm.ColumnBinary(stmt, 0); TEST2(err, KErrNone); - TRAP(err, strm.ReadL(dataptr)); + TRAP(err, strm.ReadL(dataptr, TheBlobSize)); t6.HomeTime(); TEST2(err, KErrNone); TEST2(dataptr.Length(), TheBlobSize); @@ -746,6 +746,7 @@ const TInt KBufLen = 32768; // 32Kb HBufC8* buf = HBufC8::NewL(KBufLen); TPtr8 dataPtr = buf->Des(); + dataPtr.SetLength(KBufLen); dataPtr.Fill('A', KBufLen); CreateTestDb(); @@ -812,6 +813,7 @@ const TInt KBufLen = 32768; // 32Kb HBufC8* buf = HBufC8::NewL(KBufLen); TPtr8 dataPtr = buf->Des(); + dataPtr.SetLength(KBufLen); dataPtr.Fill('A', KBufLen); CreateTestDb(); @@ -889,6 +891,7 @@ TInt bufLen = TheBlobSize; HBufC8* buf = HBufC8::NewL(bufLen); TPtr8 dataPtr = buf->Des(); + dataPtr.SetLength(bufLen); dataPtr.Fill('Z', bufLen); CreateTestDb(); @@ -953,6 +956,7 @@ TInt bufLen = TheBlobSize; HBufC8* buf = HBufC8::NewL(bufLen); TPtr8 dataPtr = buf->Des(); + dataPtr.SetLength(bufLen); dataPtr.Fill('Z', bufLen); CreateTestDb(); @@ -1024,6 +1028,7 @@ TInt bufLen = TheBlobSize; HBufC8* buf = HBufC8::NewL(bufLen); TPtr8 dataPtr = buf->Des(); + dataPtr.SetLength(bufLen); dataPtr.Fill('A', bufLen); CreateTestDb(); @@ -1104,10 +1109,14 @@ void DoTests() { - TheTest.Start(_L("@SYMTestCaseID:SYSLIB-SQL-UT-4084 SQL, BLOB write, performance tests\r\n")); + TheTestTitle.Format(_L("@SYMTestCaseID:SYSLIB-SQL-UT-4084 SQL, BLOB write, performance tests, encoding: \"%S\", page size: %d\r\n"), + TheCmdLineParams.iDbEncoding == TCmdLineParams::EDbUtf16 ? &KUtf16 : &KUtf8, TheCmdLineParams.iPageSize); + TheTest.Start(TheTestTitle); BlobWriteTest(); - TheTest.Next(_L("@SYMTestCaseID:SYSLIB-SQL-UT-4085 SQL, BLOB read, performance tests\r\n")); + TheTestTitle.Format(_L("@SYMTestCaseID:SYSLIB-SQL-UT-4085 SQL, BLOB read, performance tests, encoding: \"%S\", page size: %d\r\n"), + TheCmdLineParams.iDbEncoding == TCmdLineParams::EDbUtf16 ? &KUtf16 : &KUtf8, TheCmdLineParams.iPageSize); + TheTest.Next(TheTestTitle); BlobReadTest(); TheTest.Printf(_L("==================================================================\r\n")); @@ -1117,33 +1126,41 @@ TheBlobSize = 1024 * 1024 + 128 * 1024;//1.125Mb - TheTest.Next(_L("@SYMTestCaseID:SYSLIB-SQL-UT-4115 SQL, sequential BLOB writes, performance tests\r\n")); + TheTestTitle.Format(_L("@SYMTestCaseID:SYSLIB-SQL-UT-4115 SQL, sequential BLOB writes, performance tests, encoding: \"%S\", page size: %d\r\n"), + TheCmdLineParams.iDbEncoding == TCmdLineParams::EDbUtf16 ? &KUtf16 : &KUtf8, TheCmdLineParams.iPageSize); + TheTest.Next(TheTestTitle); TRAPD(err, SequentialWriteTestL()); TEST2(err, KErrNone); - TheTest.Next(_L("@SYMTestCaseID:SYSLIB-SQL-UT-4116 SQL, transaction sequential BLOB writes, performance tests\r\n")); + TheTestTitle.Format(_L("@SYMTestCaseID:SYSLIB-SQL-UT-4116 SQL, transaction sequential BLOB writes, performance tests, encoding: \"%S\", page size: %d\r\n"), + TheCmdLineParams.iDbEncoding == TCmdLineParams::EDbUtf16 ? &KUtf16 : &KUtf8, TheCmdLineParams.iPageSize); + TheTest.Next(TheTestTitle); TRAP(err, TransSequentialWriteTestL()); TEST2(err, KErrNone); TheBlobSize = 256 * 1024 ; // 256Kb - TheTest.Next(_L("@SYMTestCaseID:SYSLIB-SQL-UT-4117 SQL, whole BLOB write, performance tests\r\n")); + TheTestTitle.Format(_L("@SYMTestCaseID:SYSLIB-SQL-UT-4117 SQL, whole BLOB write, performance tests, encoding: \"%S\", page size: %d\r\n"), + TheCmdLineParams.iDbEncoding == TCmdLineParams::EDbUtf16 ? &KUtf16 : &KUtf8, TheCmdLineParams.iPageSize); + TheTest.Next(TheTestTitle); TRAP(err, WholeWriteTestL()); TEST2(err, KErrNone); - TheTest.Next(_L("@SYMTestCaseID:SYSLIB-SQL-UT-4118 SQL, transaction whole BLOB write, performance tests\r\n")); + TheTestTitle.Format(_L("@SYMTestCaseID:SYSLIB-SQL-UT-4118 SQL, transaction whole BLOB write, performance tests, encoding: \"%S\", page size: %d\r\n"), + TheCmdLineParams.iDbEncoding == TCmdLineParams::EDbUtf16 ? &KUtf16 : &KUtf8, TheCmdLineParams.iPageSize); + TheTest.Next(TheTestTitle); TRAP(err, TransWholeWriteTestL()); TEST2(err, KErrNone); - TheTest.Next(_L("@SYMTestCaseID:SYSLIB-SQL-UT-4119 SQL, whole BLOB read, performance tests\r\n")); + TheTestTitle.Format(_L("@SYMTestCaseID:SYSLIB-SQL-UT-4119 SQL, whole BLOB read, performance tests, encoding: \"%S\", page size: %d\r\n"), + TheCmdLineParams.iDbEncoding == TCmdLineParams::EDbUtf16 ? &KUtf16 : &KUtf8, TheCmdLineParams.iPageSize); + TheTest.Next(TheTestTitle); TRAP(err, WholeReadTestL()); TEST2(err, KErrNone); #endif//!defined __WINS__ && !defined __WINSCW__ && !defined _DEBUG } -//Usage: "t_sqlperformance2 [:]" - TInt E32Main() { TheTest.Title(); @@ -1153,17 +1170,11 @@ __UHEAP_MARK; - User::CommandLine(TheCmd); - TheCmd.TrimAll(); - if(TheCmd.Length() > 0) - { - TheDriveName.Copy(TheCmd); - } + GetCmdLineParamsAndSqlConfigString(TheTest, _L("t_sqlperformance2"), TheCmdLineParams, TheSqlConfigString); + _LIT(KDbName, "c:\\test\\t_sqlperformance2.db"); + PrepareDbName(KDbName, TheCmdLineParams.iDriveName, TheDbFileName); - _LIT(KDbName, "c:\\test\\t_sqlperformance2.db"); - TheParse.Set(TheDriveName, &KDbName, 0); - const TDesC& dbFilePath = TheParse.FullName(); - TheDbFileName.Copy(dbFilePath); + TheTest.Printf(_L("==Databases: %S\r\n"), &TheDbFileName); TestEnvInit(); DoTests(); diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sql/TEST/t_sqlperformance3.cpp --- a/persistentstorage/sql/TEST/t_sqlperformance3.cpp Tue May 11 17:49:39 2010 +0300 +++ b/persistentstorage/sql/TEST/t_sqlperformance3.cpp Tue May 25 14:35:19 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -17,6 +17,7 @@ #include #include #include +#include "t_sqlcmdlineutil.h" RTest TheTest(_L("t_sqlperformance3 test")); RSqlDatabase TheDb; @@ -24,9 +25,12 @@ _LIT(KDbName, "c:\\test\\t_sqlperformance3.db"); TFileName TheDbFileName; -TBuf<256> TheCmd; -TDriveName TheDriveName; -TParse TheParse; +TBuf<200> TheTestTitle; +TCmdLineParams TheCmdLineParams(TCmdLineParams::EDbUtf16, 4096, 10000); +TBuf8<200> TheSqlConfigString; + +_LIT(KUtf8, "UTF8 "); +_LIT(KUtf16, "UTF16"); TInt TheFastCounterFreq = 0; @@ -156,14 +160,13 @@ void DoCreateDbFile() { - _LIT8(KConfig, "page_size=4096;cache_size=10000;"); TUint32 fc1 = User::FastCounter(); - TInt err = TheDb.Create(TheDbFileName, &KConfig); + TInt err = TheDb.Create(TheDbFileName, &TheSqlConfigString); if(err != KErrNone) { if(err == KErrAlreadyExists) { - err = TheDb.Open(TheDbFileName, &KConfig); + err = TheDb.Open(TheDbFileName, &TheSqlConfigString); if(err == KErrNone) { TUint32 fc2 = User::FastCounter(); @@ -1080,19 +1083,19 @@ { CalcIterationsCount(); - TheTest.Start(_L("@SYMTestCaseID:PDS-SQL-UT-4149 Create database")); + TheTestTitle.Format(_L("@SYMTestCaseID:PDS-SQL-UT-4149 Create database, encoding: \"%S\", page size: %d\r\n"), + TheCmdLineParams.iDbEncoding == TCmdLineParams::EDbUtf16 ? &KUtf16 : &KUtf8, TheCmdLineParams.iPageSize); + TheTest.Start(TheTestTitle); CreateDb(); - TBuf<80> buf; - buf.Format(_L("@SYMTestCaseID:PDS-SQL-UT-4150 Harvest %d items"), KItemCnt); - TheTest.Next(buf); + TheTestTitle.Format(_L("@SYMTestCaseID:PDS-SQL-UT-4150 Harvest %d items, encoding: \"%S\", page size: %d\r\n"), + KItemCnt, TheCmdLineParams.iDbEncoding == TCmdLineParams::EDbUtf16 ? &KUtf16 : &KUtf8, TheCmdLineParams.iPageSize); + TheTest.Next(TheTestTitle); Harvest(); PrintResults(); } -//Usage: "t_sqlperformance3 [:]" - TInt E32Main() { TheTest.Title(); @@ -1101,17 +1104,11 @@ TheTest(tc != NULL); __UHEAP_MARK; - - User::CommandLine(TheCmd); - TheCmd.TrimAll(); - if(TheCmd.Length() > 0) - { - TheDriveName.Copy(TheCmd); - } - TheParse.Set(TheDriveName, &KDbName, 0); - const TDesC& dbFilePath = TheParse.FullName(); - TheDbFileName.Copy(dbFilePath); - TheTest.Printf(_L("==Database file name: %S\r\n"), &TheDbFileName); + + GetCmdLineParamsAndSqlConfigString(TheTest, _L("t_sqlperformance3"), TheCmdLineParams, TheSqlConfigString); + PrepareDbName(KDbName, TheCmdLineParams.iDriveName, TheDbFileName); + + TheTest.Printf(_L("==Databases: %S\r\n"), &TheDbFileName); TestEnvDestroy(); TestEnvInit(); diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sql/TEST/t_sqlperformance4.cpp --- a/persistentstorage/sql/TEST/t_sqlperformance4.cpp Tue May 11 17:49:39 2010 +0300 +++ b/persistentstorage/sql/TEST/t_sqlperformance4.cpp Tue May 25 14:35:19 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -17,6 +17,7 @@ #include #include #include +#include "t_sqlcmdlineutil.h" /////////////////////////////////////////////////////////////////////////////////////// @@ -27,11 +28,12 @@ _LIT(KCDriveDatabase, "c:[a000017f]t_sqlperformance4.db"); TFileName TheDbFileName; -TBuf<256> TheCmd; -TDriveName TheDriveName; -TParse TheParse; +TBuf<200> TheTestTitle; +TCmdLineParams TheCmdLineParams; +TBuf8<200> TheSqlConfigString; -_LIT8( KMCSqlConfig, "cache_size=1024; page_size=1024; " ); +_LIT(KUtf8, "UTF8 "); +_LIT(KUtf16, "UTF16"); _LIT(KMusicCreateTable, "CREATE TABLE Music(" L"UniqueId INTEGER PRIMARY KEY," @@ -194,14 +196,8 @@ TheTest.Printf(_L("Creating Database %S\n"), &aDbName); - TInt err = TheDbC.Create(aDbName, securityPolicy, &KMCSqlConfig); - - TBuf<64> tmp; - tmp.Copy(KMCSqlConfig); - tmp.Append(_L("\n")); - - TheTest.Printf(tmp); - + TInt err = TheDbC.Create(aDbName, securityPolicy, &TheSqlConfigString); + if (KErrAlreadyExists == err) { @@ -210,7 +206,7 @@ User::LeaveIfError(TheDbC.Delete(aDbName)); // try again - err = TheDbC.Create(aDbName, securityPolicy, &KMCSqlConfig); + err = TheDbC.Create(aDbName, securityPolicy, &TheSqlConfigString); } @@ -280,7 +276,7 @@ TEST2(sql.Length(), fileLen); //Open main database - err = TheDbC.Open(TheDbFileName); + err = TheDbC.Open(TheDbFileName, &TheSqlConfigString); TEST2(err, KErrNone); TheTest.Printf(_L("Beginning INSERTS...\n")); @@ -372,13 +368,13 @@ void DoTests() { - TheTest.Start(_L("@SYMTestCaseID:PDS-SQL-UT-4151; SQL Music Player Db Performance Test")); + TheTestTitle.Format(_L("@SYMTestCaseID:PDS-SQL-UT-4151; SQL Music Player Db Performance Test, encoding: \"%S\", page size: %d\r\n"), + TheCmdLineParams.iDbEncoding == TCmdLineParams::EDbUtf16 ? &KUtf16 : &KUtf8, TheCmdLineParams.iPageSize); + TheTest.Start(TheTestTitle); RunTest(); } -//Usage: "t_sqlperformance4 [:]" - TInt E32Main() { TheTest.Title(); @@ -388,16 +384,10 @@ __UHEAP_MARK; - User::CommandLine(TheCmd); - TheCmd.TrimAll(); - if(TheCmd.Length() > 0) - { - TheDriveName.Copy(TheCmd); - } - TheParse.Set(TheDriveName, &KCDriveDatabase, 0); - const TDesC& dbFilePath = TheParse.FullName(); - TheDbFileName.Copy(dbFilePath); - TheTest.Printf(_L("==Database file name: %S\r\n"), &TheDbFileName); + GetCmdLineParamsAndSqlConfigString(TheTest, _L("t_sqlperformance4"), TheCmdLineParams, TheSqlConfigString); + PrepareDbName(KCDriveDatabase, TheCmdLineParams.iDriveName, TheDbFileName); + + TheTest.Printf(_L("==Databases: %S\r\n"), &TheDbFileName); TestEnvInit(); diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sql/TEST/t_sqlperformance5.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/persistentstorage/sql/TEST/t_sqlperformance5.cpp Tue May 25 14:35:19 2010 +0300 @@ -0,0 +1,421 @@ +// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: MDS harvesting performance test +// +#include +#include +#include +#include +#include +#include "t_sqlcmdlineutil.h" + +RTest TheTest(_L("t_sqlperformance5 test")); +RSqlDatabase TheDb; + +_LIT(KDbName, "c:\\test\\t_sqlperformance5.db"); + +TFileName TheDbFileName; +TBuf<200> TheTestTitle; +TCmdLineParams TheCmdLineParams(TCmdLineParams::EDbUtf16, 16384, 32); +TBuf8<200> TheSqlConfigString; + +_LIT(KUtf8, "UTF8 "); +_LIT(KUtf16, "UTF16"); + +const TInt KThumbnailCount = 60; +const TInt KMaxThumbnailSize = 40 * 1024; + +const TInt KThumbnailSizes[KThumbnailCount] = + { + //1 2 3 4 5 6 7 8 9 10 + 22054, 24076, 33281, 24733, 33094, 31443, 29264, 28725, 31798, 29322, //1 + 25002, 26926, 31097, 21988, 33659, 29081, 33050, 36857, 37686, 24034, //2 + 21093, 28314, 20186, 27222, 28600, 32735, 27279, 31898, 31380, 36316, //3 + 34295, 31642, 21829, 32912, 31584, 32557, 36601, 22744, 32808, 26130, //4 + 31222, 21545, 35899, 22257, 25856, 31169, 34893, 23496, 23034, 30381, //5 + 25810, 27123, 33442, 22275, 30260, 31028, 32415, 27345, 26614, 33704 //6 + }; + +TInt TheFastCounterFreq = 0; + +TInt TheCreateDbTime = 0; +TInt TheCreateTablesTime = 0; +TInt TheBindParamsTime = 0; +TInt TheStmtExecTime = 0; +TInt TheStmtResetTime = 0; +TInt ThePopulateTempTableTime = 0; +TInt TheFlushTime = 0; + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +void TestEnvDestroy() + { + TheDb.Close(); + (void)RSqlDatabase::Delete(TheDbFileName); + ResetSoftHeapLimit(); + } + +/////////////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////////////// +//Test macros and functions +void Check1(TInt aValue, TInt aLine) + { + if(!aValue) + { + TestEnvDestroy(); + TheTest.Printf(_L("*** Line %d\r\n"), aLine); + TheTest(EFalse, aLine); + } + } +void Check2(TInt aValue, TInt aExpected, TInt aLine) + { + if(aValue != aExpected) + { + TSqlRetCodeClass cl = SqlRetCodeClass(aValue); + if(cl == ESqlDbError) + { + TPtrC errmsg = TheDb.LastErrorMessage(); + TheTest.Printf(_L("*** SQLite err=\"%S\"\r\n"), &errmsg); + } + TestEnvDestroy(); + TheTest.Printf(_L("*** Line %d, Expected error: %d, got: %d\r\n"), aLine, aExpected, aValue); + TheTest(EFalse, aLine); + } + } +#define TEST(arg) ::Check1((arg), __LINE__) +#define TEST2(aValue, aExpected) ::Check2(aValue, aExpected, __LINE__) + +/////////////////////////////////////////////////////////////////////////////////////// + +void TestEnvInit() + { + RFs fs; + TInt err = fs.Connect(); + TEST2(err, KErrNone); + err = fs.MkDirAll(TheDbFileName); + TEST(err == KErrNone || err == KErrAlreadyExists); + fs.Close(); + } + +TInt TimeDiffUs(TUint32 aStartTicks, TUint32 aEndTicks) + { + if(TheFastCounterFreq == 0) + { + TEST2(HAL::Get(HAL::EFastCounterFrequency, TheFastCounterFreq), KErrNone); + TheTest.Printf(_L("==Fast counter frequency: %d Hz\r\n"), TheFastCounterFreq); + } + TInt64 diffTicks = (TInt64)aEndTicks - (TInt64)aStartTicks; + if(diffTicks < 0) + { + diffTicks = KMaxTUint32 + diffTicks + 1; + } + const TInt KMicroSecIn1Sec = 1000000; + TInt us = (diffTicks * KMicroSecIn1Sec) / TheFastCounterFreq; + return us; + } + +void PrintTime(const TDesC& aFmt, TUint32 aStartTicks, TUint32 aEndTicks) + { + TInt us = TimeDiffUs(aStartTicks, aEndTicks); + TheTest.Printf(aFmt, us); + } + +//============================================================================= + +/** +@SYMTestCaseID PDS-SQL-CT-4205 +@SYMTestCaseDesc Thumbnail database performance test. +@SYMTestPriority Medium +@SYMTestActions The test executes statements to create the thumbnail database. +@SYMTestExpectedResults The test must not fail +@SYMDEF ou1cimx1#362240 +*/ +void CreateDb() + { + (void)RSqlDatabase::Delete(TheDbFileName); + + TUint32 fc1 = User::FastCounter(); + + TInt err = TheDb.Create(TheDbFileName, &TheSqlConfigString); + + TUint32 fc2 = User::FastCounter(); + TheCreateDbTime = TimeDiffUs(fc1, fc2); + + TEST2(err, KErrNone); + + fc1 = User::FastCounter(); + + err = TheDb.Exec(_L("CREATE TABLE ThumbnailInfo (Path TEXT COLLATE NOCASE,TNId INTEGER,Size INTEGER,Format INTEGER,TNPath TEXT COLLATE NOCASE,Width INTEGER,Height INTEGER,OrigWidth INTEGER,OrigHeight INTEGER,Flags INTEGER,VideoPosition INTEGER,Orientation INTEGER,humbFromPath INTEGER,Modified LARGEINT);")); + TEST(err >= 0); + + err = TheDb.Exec(_L("CREATE TABLE ThumbnailInfoData(Data BLOB);")); + TEST(err >= 0); + + err = TheDb.Exec(_L("CREATE TABLE ThumbnailDeleted(Path TEXT UNIQUE COLLATE NOCASE);")); + TEST(err >= 0); + + err = TheDb.Exec(_L("CREATE INDEX idx1 ON ThumbnailInfo(Path, Size);")); + TEST(err >= 0); + + err = TheDb.Exec(_L("CREATE INDEX idx4 ON ThumbnailDeleted(Path);")); + TEST(err >= 0); + + err = TheDb.Exec(_L("CREATE TABLE ThumbnailVersion (Major INTEGER,Minor INTEGER,IMEI TEXT COLLATE NOCASE);")); + TEST(err >= 0); + + fc2 = User::FastCounter(); + TheCreateTablesTime = TimeDiffUs(fc1, fc2); + + TheDb.Close(); + } + +void PoulateTempTables(RSqlStatement& aStmt1, RSqlStatement& aStmt2) + { + HBufC8* thumbnailBuf = HBufC8::New(KMaxThumbnailSize); + TEST(thumbnailBuf != NULL); + TPtr8 thumbnailData = thumbnailBuf->Des(); + thumbnailData.SetLength(KMaxThumbnailSize); + thumbnailData.Fill(TChar('A')); + + TUint32 fc3 = User::FastCounter(); + + for(TInt i=0;i= 0); + TInt err = aStmt1.BindText(paramIndex, _L("c:\\test\\abcdefgh123456789.jpg")); + TEST2(err, KErrNone); + + paramIndex = aStmt1.ParameterIndex(_L(":Width")); + TEST(paramIndex >= 0); + err = aStmt1.BindInt(paramIndex, 50); + TEST2(err, KErrNone); + + paramIndex = aStmt1.ParameterIndex(_L(":Height")); + TEST(paramIndex >= 0); + err = aStmt1.BindInt(paramIndex, 40); + TEST2(err, KErrNone); + + paramIndex = aStmt1.ParameterIndex(_L(":OrigWidth")); + TEST(paramIndex >= 0); + err = aStmt1.BindInt(paramIndex, 1000); + TEST2(err, KErrNone); + + paramIndex = aStmt1.ParameterIndex(_L(":OrigHeight")); + TEST(paramIndex >= 0); + err = aStmt1.BindInt(paramIndex, 2000); + TEST2(err, KErrNone); + + paramIndex = aStmt1.ParameterIndex(_L(":Format")); + TEST(paramIndex >= 0); + err = aStmt1.BindInt(paramIndex, 10); + TEST2(err, KErrNone); + + paramIndex = aStmt1.ParameterIndex(_L(":Flags")); + TEST(paramIndex >= 0); + err = aStmt1.BindInt(paramIndex, 0x1E); + TEST2(err, KErrNone); + + paramIndex = aStmt1.ParameterIndex(_L(":Size")); + TEST(paramIndex >= 0); + err = aStmt1.BindInt(paramIndex, 1200); + TEST2(err, KErrNone); + + paramIndex = aStmt1.ParameterIndex(_L(":Orient")); + TEST(paramIndex >= 0); + err = aStmt1.BindInt(paramIndex, 2); + TEST2(err, KErrNone); + + paramIndex = aStmt1.ParameterIndex(_L(":ThumbFromPath")); + TEST(paramIndex >= 0); + err = aStmt1.BindInt(paramIndex, 1); + TEST2(err, KErrNone); + + paramIndex = aStmt1.ParameterIndex(_L(":Modified")); + TEST(paramIndex >= 0); + err = aStmt1.BindInt64(paramIndex, 3212398543392LL); + TEST2(err, KErrNone); + + TUint32 fc2 = User::FastCounter(); + TheBindParamsTime += TimeDiffUs(fc1, fc2); + + fc1 = User::FastCounter(); + err = aStmt1.Exec(); + fc2 = User::FastCounter(); + TheStmtExecTime += TimeDiffUs(fc1, fc2); + + TEST2(err, 1); + + fc1 = User::FastCounter(); + err = aStmt1.Reset(); + fc2 = User::FastCounter(); + TheStmtResetTime += TimeDiffUs(fc1, fc2); + + TEST2(err, KErrNone); + + thumbnailData.SetLength(KThumbnailSizes[i]); + + fc1 = User::FastCounter(); + paramIndex = aStmt2.ParameterIndex(_L(":Data")); + TEST(paramIndex >= 0); + err = aStmt2.BindBinary(paramIndex, thumbnailData); + TEST2(err, KErrNone); + fc2 = User::FastCounter(); + TheBindParamsTime += TimeDiffUs(fc1, fc2); + + fc1 = User::FastCounter(); + err = aStmt2.Exec(); + fc2 = User::FastCounter(); + TheStmtExecTime += TimeDiffUs(fc1, fc2); + + TEST2(err, 1); + + fc1 = User::FastCounter(); + err = aStmt2.Reset(); + fc2 = User::FastCounter(); + TheStmtResetTime += TimeDiffUs(fc1, fc2); + + TEST2(err, KErrNone); + } + + TUint32 fc4 = User::FastCounter(); + ThePopulateTempTableTime += TimeDiffUs(fc3, fc4); + + delete thumbnailBuf; + } + +void FlushTemptTables() + { + TUint32 fc1 = User::FastCounter(); + + TInt err = TheDb.Exec(_L("BEGIN TRANSACTION")); + TEST(err >= 0); + + err = TheDb.Exec(_L("INSERT INTO ThumbnailInfo SELECT * FROM TempThumbnailInfo;")); + TEST2(err, KThumbnailCount); + + err = TheDb.Exec(_L("INSERT INTO ThumbnailInfoData SELECT * FROM TempThumbnailInfoData;")); + TEST2(err, KThumbnailCount); + + err = TheDb.Exec(_L("DELETE FROM TempThumbnailInfo;")); + TEST(err >= 0); + + err = TheDb.Exec(_L("DELETE FROM TempThumbnailInfoData;")); + TEST(err >= 0); + + err = TheDb.Exec(_L("COMMIT;")); + TEST(err >= 0); + + TUint32 fc2 = User::FastCounter(); + TheFlushTime += TimeDiffUs(fc1, fc2); + } + +/** +@SYMTestCaseID PDS-SQL-CT-4206 +@SYMTestCaseDesc Thumbnail database performance test. +@SYMTestPriority Medium +@SYMTestActions The test inserts 60 thumbnails with summary size of 1.7Mb into the thumbnail database. +@SYMTestExpectedResults The test must not fail +@SYMDEF ou1cimx1#362240 +*/ +void PopulateDb() + { + TInt dataToCommit = 0; + for(TInt i=0;i= 0); + + err = TheDb.Exec(_L("CREATE TEMP TABLE TempThumbnailInfoData (Data BLOB);")); + TEST(err >= 0); + + RSqlStatement stmt1; + err = stmt1.Prepare(TheDb, _L("INSERT INTO TempThumbnailInfo(Path,Size,Format,Width,Height,OrigWidth,OrigHeight,Flags,Orientation,ThumbFromPath,Modified) VALUES (:Path,:Size,:Format,:Width,:Height,:OrigWidth,:OrigHeight,:Flags,:Orient,:ThumbFromPath,:Modified);")); + TEST2(err, KErrNone); + + RSqlStatement stmt2; + err = stmt2.Prepare(TheDb, _L("INSERT INTO TempThumbnailInfoData (Data) VALUES (:Data);")); + TEST2(err, KErrNone); + + PoulateTempTables(stmt1, stmt2); + FlushTemptTables(); + + stmt2.Close(); + stmt1.Close(); + TheDb.Close(); + + TheTest.Printf(_L("==Create database, time=%d microseconds\r\n"), TheCreateDbTime); + TheTest.Printf(_L("==Create tables, time=%d microseconds\r\n"), TheCreateTablesTime); + TheTest.Printf(_L("==Bind parameters time, time=%d microseconds\r\n"), TheBindParamsTime); + TheTest.Printf(_L("==Temp tables, statement exec, time=%d microseconds\r\n"), TheStmtExecTime); + TheTest.Printf(_L("==Temp tables, statement reset, time=%d microseconds\r\n"), TheStmtResetTime); + TheTest.Printf(_L("==Populate temp tables, time=%d microseconds\r\n"), ThePopulateTempTableTime); + TheTest.Printf(_L("==Copy temp tables to main tables, time=%d microseconds\r\n"), TheFlushTime); + } + +void DoTestsL() + { + TheTestTitle.Format(_L("@SYMTestCaseID:PDS-SQL-CT-4205 Create database, encoding: \"%S\", page size: %d\r\n"), + TheCmdLineParams.iDbEncoding == TCmdLineParams::EDbUtf16 ? &KUtf16 : &KUtf8, TheCmdLineParams.iPageSize); + TheTest.Start(TheTestTitle); + CreateDb(); + + TheTestTitle.Format(_L("@SYMTestCaseID:PDS-SQL-CT-4206 Populate database, encoding: \"%S\", page size: %d\r\n"), + TheCmdLineParams.iDbEncoding == TCmdLineParams::EDbUtf16 ? &KUtf16 : &KUtf8, TheCmdLineParams.iPageSize); + TheTest.Next(TheTestTitle); + PopulateDb(); + + (void)RSqlDatabase::Delete(TheDbFileName); + } + +TInt E32Main() + { + TheTest.Title(); + + CTrapCleanup* tc = CTrapCleanup::New(); + TheTest(tc != NULL); + + __UHEAP_MARK; + + GetCmdLineParamsAndSqlConfigString(TheTest, _L("t_sqlperformance5"), TheCmdLineParams, TheSqlConfigString); + PrepareDbName(KDbName, TheCmdLineParams.iDriveName, TheDbFileName); + SetSoftHeapLimit(TheCmdLineParams.iSoftHeapLimitKb); + + TheTest.Printf(_L("==Databases: %S\r\n"), &TheDbFileName); + + TestEnvDestroy(); + TestEnvInit(); + TRAPD(err, DoTestsL()); + TestEnvDestroy(); + TEST2(err, KErrNone); + + __UHEAP_MARKEND; + + TheTest.End(); + TheTest.Close(); + + delete tc; + + User::Heap().Check(); + return KErrNone; + } diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sql/TEST/t_sqlscalarfullselect.cpp --- a/persistentstorage/sql/TEST/t_sqlscalarfullselect.cpp Tue May 11 17:49:39 2010 +0300 +++ b/persistentstorage/sql/TEST/t_sqlscalarfullselect.cpp Tue May 25 14:35:19 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -321,6 +321,75 @@ DestroyTestDb(db); } +/** +@SYMTestCaseID PDS-SQL-CT-4204 +@SYMTestCaseDesc TSqlScalarFullSelectQuery - border test. +@SYMTestPriority High +@SYMTestActions The test checks some border test cases such as: + - retrieving NULL column as integer; + - retrieving NULL column as 64-bit integer; + - retrieving NULL column as TReal; + - retrieving column value smaller than KMinTInt, as integer; + - retrieving column value bigger than KMaxTInt, as integer; +@SYMTestExpectedResults Test must not fail +*/ +void ScalarFullSelectBorderTest() + { + (void)RSqlDatabase::Delete(KTestDatabase1); + RSqlDatabase db; + TInt rc = db.Create(KTestDatabase1); + TEST2(rc, KErrNone); + rc = db.Exec(_L("CREATE TABLE A(F1 INTEGER NULL, F2 INTEGER NULL, F3 FLOAT NULL, F4 TEXT NULL, F5 BLOB NULL)")); + TEST(rc >= 0); + + TSqlScalarFullSelectQuery q(db); + + //Insert one record. Bigger than KMaxTInt F1 column value. Smaller than KMinTInt F2 column value. + rc = db.Exec(_L("INSERT INTO A(F1,F2,F4) VALUES(5000000000,-5000000000,'aljhsfdlgefberveurfgvefkjgs;kjfgs;kjfsd')")); + TEST2(rc, 1); + //Select NULL column value as int. + TInt res = -1; + TRAP(rc, res = q.SelectIntL(_L("SELECT F5 FROM A"))); + TEST2(rc, KErrNone); + TEST2(res, 0); + //Select NULL column value as int64. + res = -1; + TRAP(rc, res = q.SelectInt64L(_L("SELECT F5 FROM A"))); + TEST2(rc, KErrNone); + TEST2(res, 0); + //Select NULL column value as TReal. + TReal res2 = -1.0; + TRAP(rc, res2 = q.SelectRealL(_L("SELECT F5 FROM A"))); + TEST2(rc, KErrNone); + TEST(Abs(res2) < 0.000001); + //Select NULL column value as text. + TBuf<10> text; + TRAP(rc, res = q.SelectTextL(_L("SELECT F5 FROM A"), text)); + TEST2(rc, KErrNone); + TEST2(res, 0); + TEST2(text.Length(), 0); + //Select NULL column value as binary. + TBuf8<10> data; + TRAP(rc, res = q.SelectBinaryL(_L("SELECT F5 FROM A"), data)); + TEST2(rc, KErrNone); + TEST2(res, 0); + TEST2(data.Length(), 0); + //Select column value bigger than KMaxTInt, as int. + res = -1; + TRAP(rc, res = q.SelectIntL(_L("SELECT F1 FROM A"))); + TEST2(rc, KErrNone); + TEST2(res, KMaxTInt); + //Select column value smaller than KMinTInt, as int. + res = -1; + TRAP(rc, res = q.SelectIntL(_L("SELECT F2 FROM A"))); + TEST2(rc, KErrNone); + TEST2(res, KMinTInt); + + db.Close(); + (void)RSqlDatabase::Delete(KTestDatabase1); + } + + void DoTestsL() { TheTest.Start(_L(" @SYMTestCaseID:SYSLIB-SQL-CT-1809 Scalar fullselect test. 16-bit SQL ")); @@ -334,6 +403,9 @@ TheTest.Next(_L(" @SYMTestCaseID:SYSLIB-SQL-CT-1810 Scalar fullselect - negative test. 8-bit SQL ")); ScalarFullSelectNegativeTestL< TBuf8<100> >(); + + TheTest.Next(_L(" @SYMTestCaseID:PDS-SQL-CT-4204 Scalar fullselect - border cases ")); + ScalarFullSelectBorderTest(); } TInt E32Main() diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sql/TEST/t_sqlsecurity6.cpp --- a/persistentstorage/sql/TEST/t_sqlsecurity6.cpp Tue May 11 17:49:39 2010 +0300 +++ b/persistentstorage/sql/TEST/t_sqlsecurity6.cpp Tue May 25 14:35:19 2010 +0300 @@ -112,6 +112,7 @@ __UHEAP_MARK; TRAPD(err, DoTestsL()); + DestroyTestEnv(); TEST2(err, KErrNone); __UHEAP_MARKEND; diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sql/TEST/testexecute/SQLite/config/Configuration.ini --- a/persistentstorage/sql/TEST/testexecute/SQLite/config/Configuration.ini Tue May 11 17:49:39 2010 +0300 +++ b/persistentstorage/sql/TEST/testexecute/SQLite/config/Configuration.ini Tue May 25 14:35:19 2010 +0300 @@ -26,7 +26,7 @@ Function4=ScalarFullSelect Method4=SelectIntL -Result4=1024 +Result4=DEFAULT_SOFT_HEAP_LIMIT Use_Set4=1 Statement4=PRAGMA cache_size; Close5= @@ -214,7 +214,7 @@ Function4=ScalarFullSelect Method4=SelectIntL -Result4=1024 +Result4=DEFAULT_SOFT_HEAP_LIMIT Use_Set4=1 Statement4=PRAGMA cache_size; @@ -257,7 +257,7 @@ Function5=ScalarFullSelect Method5=SelectIntL -Result5=1024 +Result5=DEFAULT_SOFT_HEAP_LIMIT Use_Set5=1 Statement5=PRAGMA cache_size; diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sql/TEST/testexecute/SQLite/src/cdtest.cpp --- a/persistentstorage/sql/TEST/testexecute/SQLite/src/cdtest.cpp Tue May 11 17:49:39 2010 +0300 +++ b/persistentstorage/sql/TEST/testexecute/SQLite/src/cdtest.cpp Tue May 25 14:35:19 2010 +0300 @@ -18,6 +18,13 @@ #include "common.h" #include +//Constants taken from SqlSrvConfig.h +#ifdef __WINSCW__ + const TInt KDefaultSoftHeapLimitKb = 1024; +#else + const TInt KDefaultSoftHeapLimitKb = 8192; +#endif + // Includes any code required for 'Code-Driven' testing, generally tests // that cannot be data-driven (or not completely). @@ -476,8 +483,17 @@ actual = asfs->SelectIntL(stmt8); else actual = asfs->SelectIntL(stmt); - TInt expected; - conv.Val(expected); + + TInt expected; + if (res.CompareF(_L("DEFAULT_SOFT_HEAP_LIMIT")) == 0) + { + expected = KDefaultSoftHeapLimitKb; + } + else + { + conv.Val(expected); + } + if( actual != expected ) { SetTestStepResult(EFail); diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sqlite3api/GROUP/BLD.INF --- a/persistentstorage/sqlite3api/GROUP/BLD.INF Tue May 11 17:49:39 2010 +0300 +++ b/persistentstorage/sqlite3api/GROUP/BLD.INF Tue May 25 14:35:19 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -33,9 +33,414 @@ PRJ_TESTEXPORTS -../GROUP/sqlite3tests.iby /epoc32/rom/include/sqlite3tests.iby -../GROUP/sqlite3tests.bat /epoc32/data/z/system/test/sqlite3tests.bat -../GROUP/config.ini /epoc32/data/z/system/test/config.ini +../GROUP/sqlite3tests.iby /epoc32/rom/include/sqlite3tests.iby +../GROUP/sqlite3tests.bat z:/test/sqlite3tests.bat +../GROUP/config.ini z:/test/config.ini + +../TEST/TclScript/speed1p.explain z:/private/10285A82/speed1p.explain +../TEST/TclScript/speed4p.explain z:/private/10285A82/speed4p.explain +../TEST/TclScript/fuzz_common.tcl z:/private/10285A82/fuzz_common.tcl +../TEST/TclScript/malloc_common.tcl z:/private/10285A82/malloc_common.tcl +../TEST/TclScript/tester.tcl z:/private/10285A82/tester.tcl +../TEST/TclScript/thread_common.tcl z:/private/10285A82/thread_common.tcl +../TEST/TclScript/trans2.test.gz z:/private/10285A82/trans2.test.gz +../TEST/TclScript/aggerror.test z:/private/10285A82/aggerror.test +../TEST/TclScript/alias.test z:/private/10285A82/alias.test +../TEST/TclScript/all.test z:/private/10285A82/all.test +../TEST/TclScript/alter.test z:/private/10285A82/alter.test +../TEST/TclScript/alter2.test z:/private/10285A82/alter2.test +../TEST/TclScript/alter3.test z:/private/10285A82/alter3.test +../TEST/TclScript/altermalloc.test z:/private/10285A82/altermalloc.test +../TEST/TclScript/analyze.test z:/private/10285A82/analyze.test +../TEST/TclScript/async.test z:/private/10285A82/async.test +../TEST/TclScript/async2.test z:/private/10285A82/async2.test +../TEST/TclScript/async3.test z:/private/10285A82/async3.test +../TEST/TclScript/attach.test z:/private/10285A82/attach.test +../TEST/TclScript/attach2.test z:/private/10285A82/attach2.test +../TEST/TclScript/attach3.test z:/private/10285A82/attach3.test +../TEST/TclScript/attachmalloc.test z:/private/10285A82/attachmalloc.test +../TEST/TclScript/auth.test z:/private/10285A82/auth.test +../TEST/TclScript/auth2.test z:/private/10285A82/auth2.test +../TEST/TclScript/autoinc.test z:/private/10285A82/autoinc.test +../TEST/TclScript/autovacuum.test z:/private/10285A82/autovacuum.test +../TEST/TclScript/autovacuum_ioerr2.test z:/private/10285A82/autovacuum_ioerr2.test +../TEST/TclScript/avtrans.test z:/private/10285A82/avtrans.test +../TEST/TclScript/badutf.test z:/private/10285A82/badutf.test +../TEST/TclScript/between.test z:/private/10285A82/between.test +../TEST/TclScript/bigfile.test z:/private/10285A82/bigfile.test +../TEST/TclScript/bigrow.test z:/private/10285A82/bigrow.test +../TEST/TclScript/bind.test z:/private/10285A82/bind.test +../TEST/TclScript/bindxfer.test z:/private/10285A82/bindxfer.test +../TEST/TclScript/bitvec.test z:/private/10285A82/bitvec.test +../TEST/TclScript/blob.test z:/private/10285A82/blob.test +../TEST/TclScript/busy.test z:/private/10285A82/busy.test +../TEST/TclScript/cache.test z:/private/10285A82/cache.test +../TEST/TclScript/capi2.test z:/private/10285A82/capi2.test +../TEST/TclScript/capi3.test z:/private/10285A82/capi3.test +../TEST/TclScript/capi3b.test z:/private/10285A82/capi3b.test +../TEST/TclScript/capi3c.test z:/private/10285A82/capi3c.test +../TEST/TclScript/capi3d.test z:/private/10285A82/capi3d.test +../TEST/TclScript/cast.test z:/private/10285A82/cast.test +../TEST/TclScript/check.test z:/private/10285A82/check.test +../TEST/TclScript/collate1.test z:/private/10285A82/collate1.test +../TEST/TclScript/collate2.test z:/private/10285A82/collate2.test +../TEST/TclScript/collate3.test z:/private/10285A82/collate3.test +../TEST/TclScript/collate4.test z:/private/10285A82/collate4.test +../TEST/TclScript/collate5.test z:/private/10285A82/collate5.test +../TEST/TclScript/collate6.test z:/private/10285A82/collate6.test +../TEST/TclScript/collate7.test z:/private/10285A82/collate7.test +../TEST/TclScript/collate8.test z:/private/10285A82/collate8.test +../TEST/TclScript/collate9.test z:/private/10285A82/collate9.test +../TEST/TclScript/collateA.test z:/private/10285A82/collateA.test +../TEST/TclScript/colmeta.test z:/private/10285A82/colmeta.test +../TEST/TclScript/colname.test z:/private/10285A82/colname.test +../TEST/TclScript/conflict.test z:/private/10285A82/conflict.test +../TEST/TclScript/corrupt.test z:/private/10285A82/corrupt.test +../TEST/TclScript/corrupt2.test z:/private/10285A82/corrupt2.test +../TEST/TclScript/corrupt3.test z:/private/10285A82/corrupt3.test +../TEST/TclScript/corrupt4.test z:/private/10285A82/corrupt4.test +../TEST/TclScript/corrupt5.test z:/private/10285A82/corrupt5.test +../TEST/TclScript/corrupt6.test z:/private/10285A82/corrupt6.test +../TEST/TclScript/corrupt7.test z:/private/10285A82/corrupt7.test +../TEST/TclScript/corrupt8.test z:/private/10285A82/corrupt8.test +../TEST/TclScript/corrupt9.test z:/private/10285A82/corrupt9.test +../TEST/TclScript/corruptA.test z:/private/10285A82/corruptA.test +../TEST/TclScript/crash.test z:/private/10285A82/crash.test +../TEST/TclScript/crash2.test z:/private/10285A82/crash2.test +../TEST/TclScript/crash3.test z:/private/10285A82/crash3.test +../TEST/TclScript/crash4.test z:/private/10285A82/crash4.test +../TEST/TclScript/crash5.test z:/private/10285A82/crash5.test +../TEST/TclScript/crash6.test z:/private/10285A82/crash6.test +../TEST/TclScript/crash7.test z:/private/10285A82/crash7.test +../TEST/TclScript/createtab.test z:/private/10285A82/createtab.test +../TEST/TclScript/cse.test z:/private/10285A82/cse.test +../TEST/TclScript/date.test z:/private/10285A82/date.test +../TEST/TclScript/default.test z:/private/10285A82/default.test +../TEST/TclScript/delete.test z:/private/10285A82/delete.test +../TEST/TclScript/delete2.test z:/private/10285A82/delete2.test +../TEST/TclScript/delete3.test z:/private/10285A82/delete3.test +../TEST/TclScript/descidx1.test z:/private/10285A82/descidx1.test +../TEST/TclScript/descidx2.test z:/private/10285A82/descidx2.test +../TEST/TclScript/descidx3.test z:/private/10285A82/descidx3.test +../TEST/TclScript/diskfull.test z:/private/10285A82/diskfull.test +../TEST/TclScript/distinctagg.test z:/private/10285A82/distinctagg.test +../TEST/TclScript/enc.test z:/private/10285A82/enc.test +../TEST/TclScript/enc2.test z:/private/10285A82/enc2.test +../TEST/TclScript/enc3.test z:/private/10285A82/enc3.test +../TEST/TclScript/eval.test z:/private/10285A82/eval.test +../TEST/TclScript/exclusive.test z:/private/10285A82/exclusive.test +../TEST/TclScript/exclusive2.test z:/private/10285A82/exclusive2.test +../TEST/TclScript/exec.test z:/private/10285A82/exec.test +../TEST/TclScript/expr.test z:/private/10285A82/expr.test +../TEST/TclScript/filectrl.test z:/private/10285A82/filectrl.test +../TEST/TclScript/filefmt.test z:/private/10285A82/filefmt.test +../TEST/TclScript/fkey1.test z:/private/10285A82/fkey1.test +../TEST/TclScript/format4.test z:/private/10285A82/format4.test +../TEST/TclScript/fts1a.test z:/private/10285A82/fts1a.test +../TEST/TclScript/fts1b.test z:/private/10285A82/fts1b.test +../TEST/TclScript/fts1c.test z:/private/10285A82/fts1c.test +../TEST/TclScript/fts1d.test z:/private/10285A82/fts1d.test +../TEST/TclScript/fts1e.test z:/private/10285A82/fts1e.test +../TEST/TclScript/fts1f.test z:/private/10285A82/fts1f.test +../TEST/TclScript/fts1i.test z:/private/10285A82/fts1i.test +../TEST/TclScript/fts1j.test z:/private/10285A82/fts1j.test +../TEST/TclScript/fts1k.test z:/private/10285A82/fts1k.test +../TEST/TclScript/fts1l.test z:/private/10285A82/fts1l.test +../TEST/TclScript/fts1m.test z:/private/10285A82/fts1m.test +../TEST/TclScript/fts1n.test z:/private/10285A82/fts1n.test +../TEST/TclScript/fts1o.test z:/private/10285A82/fts1o.test +../TEST/TclScript/fts1porter.test z:/private/10285A82/fts1porter.test +../TEST/TclScript/fts2.test z:/private/10285A82/fts2.test +../TEST/TclScript/fts2a.test z:/private/10285A82/fts2a.test +../TEST/TclScript/fts2b.test z:/private/10285A82/fts2b.test +../TEST/TclScript/fts2c.test z:/private/10285A82/fts2c.test +../TEST/TclScript/fts2d.test z:/private/10285A82/fts2d.test +../TEST/TclScript/fts2e.test z:/private/10285A82/fts2e.test +../TEST/TclScript/fts2f.test z:/private/10285A82/fts2f.test +../TEST/TclScript/fts2g.test z:/private/10285A82/fts2g.test +../TEST/TclScript/fts2h.test z:/private/10285A82/fts2h.test +../TEST/TclScript/fts2i.test z:/private/10285A82/fts2i.test +../TEST/TclScript/fts2j.test z:/private/10285A82/fts2j.test +../TEST/TclScript/fts2k.test z:/private/10285A82/fts2k.test +../TEST/TclScript/fts2l.test z:/private/10285A82/fts2l.test +../TEST/TclScript/fts2m.test z:/private/10285A82/fts2m.test +../TEST/TclScript/fts2n.test z:/private/10285A82/fts2n.test +../TEST/TclScript/fts2o.test z:/private/10285A82/fts2o.test +../TEST/TclScript/fts2p.test z:/private/10285A82/fts2p.test +../TEST/TclScript/fts2q.test z:/private/10285A82/fts2q.test +../TEST/TclScript/fts2r.test z:/private/10285A82/fts2r.test +../TEST/TclScript/fts2token.test z:/private/10285A82/fts2token.test +../TEST/TclScript/fts3.test z:/private/10285A82/fts3.test +../TEST/TclScript/fts3aa.test z:/private/10285A82/fts3aa.test +../TEST/TclScript/fts3ab.test z:/private/10285A82/fts3ab.test +../TEST/TclScript/fts3ac.test z:/private/10285A82/fts3ac.test +../TEST/TclScript/fts3ad.test z:/private/10285A82/fts3ad.test +../TEST/TclScript/fts3ae.test z:/private/10285A82/fts3ae.test +../TEST/TclScript/fts3af.test z:/private/10285A82/fts3af.test +../TEST/TclScript/fts3ag.test z:/private/10285A82/fts3ag.test +../TEST/TclScript/fts3ah.test z:/private/10285A82/fts3ah.test +../TEST/TclScript/fts3ai.test z:/private/10285A82/fts3ai.test +../TEST/TclScript/fts3aj.test z:/private/10285A82/fts3aj.test +../TEST/TclScript/fts3ak.test z:/private/10285A82/fts3ak.test +../TEST/TclScript/fts3al.test z:/private/10285A82/fts3al.test +../TEST/TclScript/fts3am.test z:/private/10285A82/fts3am.test +../TEST/TclScript/fts3an.test z:/private/10285A82/fts3an.test +../TEST/TclScript/fts3ao.test z:/private/10285A82/fts3ao.test +../TEST/TclScript/fts3atoken.test z:/private/10285A82/fts3atoken.test +../TEST/TclScript/fts3b.test z:/private/10285A82/fts3b.test +../TEST/TclScript/fts3c.test z:/private/10285A82/fts3c.test +../TEST/TclScript/fts3d.test z:/private/10285A82/fts3d.test +../TEST/TclScript/fts3e.test z:/private/10285A82/fts3e.test +../TEST/TclScript/fts3near.test z:/private/10285A82/fts3near.test +../TEST/TclScript/func.test z:/private/10285A82/func.test +../TEST/TclScript/fuzz.test z:/private/10285A82/fuzz.test +../TEST/TclScript/fuzz2.test z:/private/10285A82/fuzz2.test +../TEST/TclScript/fuzz_malloc.test z:/private/10285A82/fuzz_malloc.test +../TEST/TclScript/hook.test z:/private/10285A82/hook.test +../TEST/TclScript/icu.test z:/private/10285A82/icu.test +../TEST/TclScript/in.test z:/private/10285A82/in.test +../TEST/TclScript/in2.test z:/private/10285A82/in2.test +../TEST/TclScript/in3.test z:/private/10285A82/in3.test +../TEST/TclScript/incrblob.test z:/private/10285A82/incrblob.test +../TEST/TclScript/incrblob2.test z:/private/10285A82/incrblob2.test +../TEST/TclScript/incrblob_err.test z:/private/10285A82/incrblob_err.test +../TEST/TclScript/incrvacuum.test z:/private/10285A82/incrvacuum.test +../TEST/TclScript/incrvacuum2.test z:/private/10285A82/incrvacuum2.test +../TEST/TclScript/incrvacuum_ioerr.test z:/private/10285A82/incrvacuum_ioerr.test +../TEST/TclScript/index.test z:/private/10285A82/index.test +../TEST/TclScript/index2.test z:/private/10285A82/index2.test +../TEST/TclScript/index3.test z:/private/10285A82/index3.test +../TEST/TclScript/insert.test z:/private/10285A82/insert.test +../TEST/TclScript/insert2.test z:/private/10285A82/insert2.test +../TEST/TclScript/insert3.test z:/private/10285A82/insert3.test +../TEST/TclScript/insert4.test z:/private/10285A82/insert4.test +../TEST/TclScript/insert5.test z:/private/10285A82/insert5.test +../TEST/TclScript/interrupt.test z:/private/10285A82/interrupt.test +../TEST/TclScript/intpkey.test z:/private/10285A82/intpkey.test +../TEST/TclScript/io.test z:/private/10285A82/io.test +../TEST/TclScript/ioerr.test z:/private/10285A82/ioerr.test +../TEST/TclScript/ioerr2.test z:/private/10285A82/ioerr2.test +../TEST/TclScript/ioerr3.test z:/private/10285A82/ioerr3.test +../TEST/TclScript/ioerr4.test z:/private/10285A82/ioerr4.test +../TEST/TclScript/ioerr5.test z:/private/10285A82/ioerr5.test +../TEST/TclScript/join.test z:/private/10285A82/join.test +../TEST/TclScript/join2.test z:/private/10285A82/join2.test +../TEST/TclScript/join3.test z:/private/10285A82/join3.test +../TEST/TclScript/join4.test z:/private/10285A82/join4.test +../TEST/TclScript/join5.test z:/private/10285A82/join5.test +../TEST/TclScript/journal1.test z:/private/10285A82/journal1.test +../TEST/TclScript/jrnlmode.test z:/private/10285A82/jrnlmode.test +../TEST/TclScript/lastinsert.test z:/private/10285A82/lastinsert.test +../TEST/TclScript/laststmtchanges.test z:/private/10285A82/laststmtchanges.test +../TEST/TclScript/like.test z:/private/10285A82/like.test +../TEST/TclScript/like2.test z:/private/10285A82/like2.test +../TEST/TclScript/limit.test z:/private/10285A82/limit.test +../TEST/TclScript/loadext.test z:/private/10285A82/loadext.test +../TEST/TclScript/loadext2.test z:/private/10285A82/loadext2.test +../TEST/TclScript/lock.test z:/private/10285A82/lock.test +../TEST/TclScript/lock2.test z:/private/10285A82/lock2.test +../TEST/TclScript/lock3.test z:/private/10285A82/lock3.test +../TEST/TclScript/lock4.test z:/private/10285A82/lock4.test +../TEST/TclScript/lock5.test z:/private/10285A82/lock5.test +../TEST/TclScript/lookaside.test z:/private/10285A82/lookaside.test +../TEST/TclScript/main.test z:/private/10285A82/main.test +../TEST/TclScript/malloc.test z:/private/10285A82/malloc.test +../TEST/TclScript/malloc3.test z:/private/10285A82/malloc3.test +../TEST/TclScript/malloc4.test z:/private/10285A82/malloc4.test +../TEST/TclScript/malloc5.test z:/private/10285A82/malloc5.test +../TEST/TclScript/malloc6.test z:/private/10285A82/malloc6.test +../TEST/TclScript/malloc7.test z:/private/10285A82/malloc7.test +../TEST/TclScript/malloc8.test z:/private/10285A82/malloc8.test +../TEST/TclScript/malloc9.test z:/private/10285A82/malloc9.test +../TEST/TclScript/mallocA.test z:/private/10285A82/mallocA.test +../TEST/TclScript/mallocAll.test z:/private/10285A82/mallocAll.test +../TEST/TclScript/mallocB.test z:/private/10285A82/mallocB.test +../TEST/TclScript/mallocC.test z:/private/10285A82/mallocC.test +../TEST/TclScript/mallocD.test z:/private/10285A82/mallocD.test +../TEST/TclScript/mallocE.test z:/private/10285A82/mallocE.test +../TEST/TclScript/mallocF.test z:/private/10285A82/mallocF.test +../TEST/TclScript/mallocG.test z:/private/10285A82/mallocG.test +../TEST/TclScript/mallocH.test z:/private/10285A82/mallocH.test +../TEST/TclScript/mallocI.test z:/private/10285A82/mallocI.test +../TEST/TclScript/manydb.test z:/private/10285A82/manydb.test +../TEST/TclScript/memdb.test z:/private/10285A82/memdb.test +../TEST/TclScript/memleak.test z:/private/10285A82/memleak.test +../TEST/TclScript/memsubsys1.test z:/private/10285A82/memsubsys1.test +../TEST/TclScript/memsubsys2.test z:/private/10285A82/memsubsys2.test +../TEST/TclScript/minmax.test z:/private/10285A82/minmax.test +../TEST/TclScript/minmax2.test z:/private/10285A82/minmax2.test +../TEST/TclScript/minmax3.test z:/private/10285A82/minmax3.test +../TEST/TclScript/misc1.test z:/private/10285A82/misc1.test +../TEST/TclScript/misc2.test z:/private/10285A82/misc2.test +../TEST/TclScript/misc3.test z:/private/10285A82/misc3.test +../TEST/TclScript/misc4.test z:/private/10285A82/misc4.test +../TEST/TclScript/misc5.test z:/private/10285A82/misc5.test +../TEST/TclScript/misc6.test z:/private/10285A82/misc6.test +../TEST/TclScript/misc7.test z:/private/10285A82/misc7.test +../TEST/TclScript/misuse.test z:/private/10285A82/misuse.test +../TEST/TclScript/mutex1.test z:/private/10285A82/mutex1.test +../TEST/TclScript/mutex2.test z:/private/10285A82/mutex2.test +../TEST/TclScript/nan.test z:/private/10285A82/nan.test +../TEST/TclScript/notnull.test z:/private/10285A82/notnull.test +../TEST/TclScript/null.test z:/private/10285A82/null.test +../TEST/TclScript/openv2.test z:/private/10285A82/openv2.test +../TEST/TclScript/pager.test z:/private/10285A82/pager.test +../TEST/TclScript/pager2.test z:/private/10285A82/pager2.test +../TEST/TclScript/pager3.test z:/private/10285A82/pager3.test +../TEST/TclScript/pageropt.test z:/private/10285A82/pageropt.test +../TEST/TclScript/pagesize.test z:/private/10285A82/pagesize.test +../TEST/TclScript/pcache.test z:/private/10285A82/pcache.test +../TEST/TclScript/permutations.test z:/private/10285A82/permutations.test +../TEST/TclScript/pragma.test z:/private/10285A82/pragma.test +../TEST/TclScript/pragma2.test z:/private/10285A82/pragma2.test +../TEST/TclScript/printf.test z:/private/10285A82/printf.test +../TEST/TclScript/progress.test z:/private/10285A82/progress.test +../TEST/TclScript/ptrchng.test z:/private/10285A82/ptrchng.test +../TEST/TclScript/quick.test z:/private/10285A82/quick.test +../TEST/TclScript/quote.test z:/private/10285A82/quote.test +../TEST/TclScript/rdonly.test z:/private/10285A82/rdonly.test +../TEST/TclScript/reindex.test z:/private/10285A82/reindex.test +../TEST/TclScript/rollback.test z:/private/10285A82/rollback.test +../TEST/TclScript/rowid.test z:/private/10285A82/rowid.test +../TEST/TclScript/rtree.test z:/private/10285A82/rtree.test +../TEST/TclScript/safety.test z:/private/10285A82/safety.test +../TEST/TclScript/schema.test z:/private/10285A82/schema.test +../TEST/TclScript/schema2.test z:/private/10285A82/schema2.test +../TEST/TclScript/select1.test z:/private/10285A82/select1.test +../TEST/TclScript/select2.test z:/private/10285A82/select2.test +../TEST/TclScript/select3.test z:/private/10285A82/select3.test +../TEST/TclScript/select4.test z:/private/10285A82/select4.test +../TEST/TclScript/select5.test z:/private/10285A82/select5.test +../TEST/TclScript/select6.test z:/private/10285A82/select6.test +../TEST/TclScript/select7.test z:/private/10285A82/select7.test +../TEST/TclScript/select8.test z:/private/10285A82/select8.test +../TEST/TclScript/select9.test z:/private/10285A82/select9.test +../TEST/TclScript/selectA.test z:/private/10285A82/selectA.test +../TEST/TclScript/selectB.test z:/private/10285A82/selectB.test +../TEST/TclScript/server1.test z:/private/10285A82/server1.test +../TEST/TclScript/shared.test z:/private/10285A82/shared.test +../TEST/TclScript/shared2.test z:/private/10285A82/shared2.test +../TEST/TclScript/shared3.test z:/private/10285A82/shared3.test +../TEST/TclScript/shared4.test z:/private/10285A82/shared4.test +../TEST/TclScript/shared_err.test z:/private/10285A82/shared_err.test +../TEST/TclScript/shortread1.test z:/private/10285A82/shortread1.test +../TEST/TclScript/sidedelete.test z:/private/10285A82/sidedelete.test +../TEST/TclScript/soak.test z:/private/10285A82/soak.test +../TEST/TclScript/softheap1.test z:/private/10285A82/softheap1.test +../TEST/TclScript/sort.test z:/private/10285A82/sort.test +../TEST/TclScript/speed1.test z:/private/10285A82/speed1.test +../TEST/TclScript/speed1p.test z:/private/10285A82/speed1p.test +../TEST/TclScript/speed2.test z:/private/10285A82/speed2.test +../TEST/TclScript/speed3.test z:/private/10285A82/speed3.test +../TEST/TclScript/speed4.test z:/private/10285A82/speed4.test +../TEST/TclScript/speed4p.test z:/private/10285A82/speed4p.test +../TEST/TclScript/sqllimits1.test z:/private/10285A82/sqllimits1.test +../TEST/TclScript/subquery.test z:/private/10285A82/subquery.test +../TEST/TclScript/subselect.test z:/private/10285A82/subselect.test +../TEST/TclScript/substr.test z:/private/10285A82/substr.test +../TEST/TclScript/sync.test z:/private/10285A82/sync.test +../TEST/TclScript/table.test z:/private/10285A82/table.test +../TEST/TclScript/tableapi.test z:/private/10285A82/tableapi.test +../TEST/TclScript/tclsqlite.test z:/private/10285A82/tclsqlite.test +../TEST/TclScript/tempdb.test z:/private/10285A82/tempdb.test +../TEST/TclScript/temptable.test z:/private/10285A82/temptable.test +../TEST/TclScript/thread001.test z:/private/10285A82/thread001.test +../TEST/TclScript/thread002.test z:/private/10285A82/thread002.test +../TEST/TclScript/thread003.test z:/private/10285A82/thread003.test +../TEST/TclScript/thread1.test z:/private/10285A82/thread1.test +../TEST/TclScript/thread2.test z:/private/10285A82/thread2.test +../TEST/TclScript/tkt1435.test z:/private/10285A82/tkt1435.test +../TEST/TclScript/tkt1443.test z:/private/10285A82/tkt1443.test +../TEST/TclScript/tkt1444.test z:/private/10285A82/tkt1444.test +../TEST/TclScript/tkt1449.test z:/private/10285A82/tkt1449.test +../TEST/TclScript/tkt1473.test z:/private/10285A82/tkt1473.test +../TEST/TclScript/tkt1501.test z:/private/10285A82/tkt1501.test +../TEST/TclScript/tkt1512.test z:/private/10285A82/tkt1512.test +../TEST/TclScript/tkt1514.test z:/private/10285A82/tkt1514.test +../TEST/TclScript/tkt1536.test z:/private/10285A82/tkt1536.test +../TEST/TclScript/tkt1537.test z:/private/10285A82/tkt1537.test +../TEST/TclScript/tkt1567.test z:/private/10285A82/tkt1567.test +../TEST/TclScript/tkt1644.test z:/private/10285A82/tkt1644.test +../TEST/TclScript/tkt1667.test z:/private/10285A82/tkt1667.test +../TEST/TclScript/tkt1873.test z:/private/10285A82/tkt1873.test +../TEST/TclScript/tkt2141.test z:/private/10285A82/tkt2141.test +../TEST/TclScript/tkt2192.test z:/private/10285A82/tkt2192.test +../TEST/TclScript/tkt2213.test z:/private/10285A82/tkt2213.test +../TEST/TclScript/tkt2251.test z:/private/10285A82/tkt2251.test +../TEST/TclScript/tkt2285.test z:/private/10285A82/tkt2285.test +../TEST/TclScript/tkt2332.test z:/private/10285A82/tkt2332.test +../TEST/TclScript/tkt2339.test z:/private/10285A82/tkt2339.test +../TEST/TclScript/tkt2391.test z:/private/10285A82/tkt2391.test +../TEST/TclScript/tkt2409.test z:/private/10285A82/tkt2409.test +../TEST/TclScript/tkt2450.test z:/private/10285A82/tkt2450.test +../TEST/TclScript/tkt2640.test z:/private/10285A82/tkt2640.test +../TEST/TclScript/tkt2643.test z:/private/10285A82/tkt2643.test +../TEST/TclScript/tkt2686.test z:/private/10285A82/tkt2686.test +../TEST/TclScript/tkt2767.test z:/private/10285A82/tkt2767.test +../TEST/TclScript/tkt2817.test z:/private/10285A82/tkt2817.test +../TEST/TclScript/tkt2820.test z:/private/10285A82/tkt2820.test +../TEST/TclScript/tkt2822.test z:/private/10285A82/tkt2822.test +../TEST/TclScript/tkt2832.test z:/private/10285A82/tkt2832.test +../TEST/TclScript/tkt2854.test z:/private/10285A82/tkt2854.test +../TEST/TclScript/tkt2920.test z:/private/10285A82/tkt2920.test +../TEST/TclScript/tkt2927.test z:/private/10285A82/tkt2927.test +../TEST/TclScript/tkt2942.test z:/private/10285A82/tkt2942.test +../TEST/TclScript/tkt3080.test z:/private/10285A82/tkt3080.test +../TEST/TclScript/tkt3093.test z:/private/10285A82/tkt3093.test +../TEST/TclScript/tkt3121.test z:/private/10285A82/tkt3121.test +../TEST/TclScript/tkt3201.test z:/private/10285A82/tkt3201.test +../TEST/TclScript/tkt3292.test z:/private/10285A82/tkt3292.test +../TEST/TclScript/tkt3298.test z:/private/10285A82/tkt3298.test +../TEST/TclScript/tkt3334.test z:/private/10285A82/tkt3334.test +../TEST/TclScript/tokenize.test z:/private/10285A82/tokenize.test +../TEST/TclScript/trace.test z:/private/10285A82/trace.test +../TEST/TclScript/trans.test z:/private/10285A82/trans.test +../TEST/TclScript/trans2.test z:/private/10285A82/trans2.test +../TEST/TclScript/trigger1.test z:/private/10285A82/trigger1.test +../TEST/TclScript/trigger2.test z:/private/10285A82/trigger2.test +../TEST/TclScript/trigger3.test z:/private/10285A82/trigger3.test +../TEST/TclScript/trigger4.test z:/private/10285A82/trigger4.test +../TEST/TclScript/trigger5.test z:/private/10285A82/trigger5.test +../TEST/TclScript/trigger6.test z:/private/10285A82/trigger6.test +../TEST/TclScript/trigger7.test z:/private/10285A82/trigger7.test +../TEST/TclScript/trigger8.test z:/private/10285A82/trigger8.test +../TEST/TclScript/trigger9.test z:/private/10285A82/trigger9.test +../TEST/TclScript/triggerA.test z:/private/10285A82/triggerA.test +../TEST/TclScript/triggerB.test z:/private/10285A82/triggerB.test +../TEST/TclScript/types.test z:/private/10285A82/types.test +../TEST/TclScript/types2.test z:/private/10285A82/types2.test +../TEST/TclScript/types3.test z:/private/10285A82/types3.test +../TEST/TclScript/unique.test z:/private/10285A82/unique.test +../TEST/TclScript/update.test z:/private/10285A82/update.test +../TEST/TclScript/utf16align.test z:/private/10285A82/utf16align.test +../TEST/TclScript/vacuum.test z:/private/10285A82/vacuum.test +../TEST/TclScript/vacuum2.test z:/private/10285A82/vacuum2.test +../TEST/TclScript/vacuum3.test z:/private/10285A82/vacuum3.test +../TEST/TclScript/varint.test z:/private/10285A82/varint.test +../TEST/TclScript/veryquick.test z:/private/10285A82/veryquick.test +../TEST/TclScript/view.test z:/private/10285A82/view.test +../TEST/TclScript/vtab1.test z:/private/10285A82/vtab1.test +../TEST/TclScript/vtab2.test z:/private/10285A82/vtab2.test +../TEST/TclScript/vtab3.test z:/private/10285A82/vtab3.test +../TEST/TclScript/vtab4.test z:/private/10285A82/vtab4.test +../TEST/TclScript/vtab5.test z:/private/10285A82/vtab5.test +../TEST/TclScript/vtab6.test z:/private/10285A82/vtab6.test +../TEST/TclScript/vtab7.test z:/private/10285A82/vtab7.test +../TEST/TclScript/vtab8.test z:/private/10285A82/vtab8.test +../TEST/TclScript/vtab9.test z:/private/10285A82/vtab9.test +../TEST/TclScript/vtabA.test z:/private/10285A82/vtabA.test +../TEST/TclScript/vtabB.test z:/private/10285A82/vtabB.test +../TEST/TclScript/vtabC.test z:/private/10285A82/vtabC.test +../TEST/TclScript/vtab_alter.test z:/private/10285A82/vtab_alter.test +../TEST/TclScript/vtab_err.test z:/private/10285A82/vtab_err.test +../TEST/TclScript/vtab_shared.test z:/private/10285A82/vtab_shared.test +../TEST/TclScript/where.test z:/private/10285A82/where.test +../TEST/TclScript/where2.test z:/private/10285A82/where2.test +../TEST/TclScript/where3.test z:/private/10285A82/where3.test +../TEST/TclScript/where4.test z:/private/10285A82/where4.test +../TEST/TclScript/where5.test z:/private/10285A82/where5.test +../TEST/TclScript/where6.test z:/private/10285A82/where6.test +../TEST/TclScript/zeroblob.test z:/private/10285A82/zeroblob.test PRJ_TESTMMPFILES @@ -52,8 +457,3 @@ ../GROUP/t_sqliteperf2.mmp ../GROUP/t_sqlitedef.mmp ../GROUP/t_sqlitedb64.mmp manual - - -PRJ_TESTEXTENSIONS -start extension syslibs/test/sqlite3_copysqlite3testfiles -end diff -r 04ec7606545c -r fcc16690f446 persistentstorage/sqlite3api/GROUP/sqlite3tests.iby --- a/persistentstorage/sqlite3api/GROUP/sqlite3tests.iby Tue May 11 17:49:39 2010 +0300 +++ b/persistentstorage/sqlite3api/GROUP/sqlite3tests.iby Tue May 25 14:35:19 2010 +0300 @@ -20,6 +20,8 @@ REM SQLITE3 +#include + #ifndef __STDIOSERVER_EXE__ #define __STDIOSERVER_EXE__ file=ABI_DIR\BUILD_DIR\StdioServer.exe sys\bin\StdioServer.exe @@ -27,10 +29,10 @@ #ifndef __TCLSQLITE3_CONFIG_INI__ #define __TCLSQLITE3_CONFIG_INI__ -data=ZSYSTEM\test\config.ini system\data\config.ini +data=DATAZ_\test\config.ini system\data\config.ini #endif -data=ZSYSTEM\test\sqlite3Tests.bat \TEST\sqlite3Tests.bat +data=DATAZ_\test\sqlite3Tests.bat \TEST\sqlite3Tests.bat data=ZPRIVATE\10285A82\speed1p.explain \PRIVATE\10285A82\speed1p.explain data=ZPRIVATE\10285A82\speed4p.explain \PRIVATE\10285A82\speed4p.explain diff -r 04ec7606545c -r fcc16690f446 persistentstorage/store/ROM/StoreTests.IBY --- a/persistentstorage/store/ROM/StoreTests.IBY Tue May 11 17:49:39 2010 +0300 +++ b/persistentstorage/store/ROM/StoreTests.IBY Tue May 25 14:35:19 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -23,7 +23,7 @@ #include "pbe.iby" // batch file that runs all automatic store tests -data=ZSYSTEM\test\StoreTests.bat Test\StoreTests.bat +data=DATAZ_\test\StoreTests.bat Test\StoreTests.bat file=ABI_DIR\BUILD_DIR\t_storset.exe Test\t_storset.exe file=ABI_DIR\BUILD_DIR\t_storcrypt.exe Test\t_storcrypt.exe diff -r 04ec7606545c -r fcc16690f446 persistentstorage/store/group/BLD.INF --- a/persistentstorage/store/group/BLD.INF Tue May 11 17:49:39 2010 +0300 +++ b/persistentstorage/store/group/BLD.INF Tue May 25 14:35:19 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -72,7 +72,7 @@ PRJ_TESTEXPORTS ../ROM/StoreTests.IBY /epoc32/rom/include/storetests.iby -../ROM/StoreTests.BAT /epoc32/data/z/system/test/storetests.bat +../ROM/StoreTests.BAT z:/test/storetests.bat PRJ_TESTMMPFILES