persistentstorage/sql/SRC/Server/SqlSrvDatabase.cpp
branchRCL_3
changeset 21 28839de615b4
parent 15 fcc16690f446
child 23 26645d81f48d
equal deleted inserted replaced
18:3da531bb4329 21:28839de615b4
    64 _LIT(KCacheSizePragma,	"PRAGMA \"%S\".cache_size=%d\x0");
    64 _LIT(KCacheSizePragma,	"PRAGMA \"%S\".cache_size=%d\x0");
    65 _LIT(KPageSizePragma,	"PRAGMA \"%S\".page_size=%d\x0");
    65 _LIT(KPageSizePragma,	"PRAGMA \"%S\".page_size=%d\x0");
    66 _LIT(KAutoVacuumPragma,	"PRAGMA \"%S\".auto_vacuum=%d\x0");
    66 _LIT(KAutoVacuumPragma,	"PRAGMA \"%S\".auto_vacuum=%d\x0");
    67 //_LIT(KPersist, "persist");
    67 //_LIT(KPersist, "persist");
    68 //_LIT(KPersistentJournalPragma, "PRAGMA \"%S\".journal_mode=%S\x0");
    68 //_LIT(KPersistentJournalPragma, "PRAGMA \"%S\".journal_mode=%S\x0");
       
    69 _LIT(KJournalSizeLimitPragma, "PRAGMA \"%S\".journal_size_limit=%d\x0");
    69 ////////////////////////////////////////////////////////
    70 ////////////////////////////////////////////////////////
    70 //"LIKE" - user defined function name
    71 //"LIKE" - user defined function name
    71 _LIT8(KStrLikeFuncName,  "LIKE\x0");
    72 _LIT8(KStrLikeFuncName,  "LIKE\x0");
    72 
    73 
    73 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
    74 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
   228 	TBool authorizerDisabledState = aAuthorizerDisabled;
   229 	TBool authorizerDisabledState = aAuthorizerDisabled;
   229 	aAuthorizerDisabled	= ETrue;
   230 	aAuthorizerDisabled	= ETrue;
   230 	TInt err = DbExecStmt16(aDbHandle, pragmaSql);
   231 	TInt err = DbExecStmt16(aDbHandle, pragmaSql);
   231 	aAuthorizerDisabled = authorizerDisabledState;
   232 	aAuthorizerDisabled = authorizerDisabledState;
   232 	return err;
   233 	return err;
       
   234 	}
       
   235 
       
   236 //The journal size limit is set to be at lest 16 pages and no less than 64 Kb.
       
   237 static void SetJournalSizeLimitL(sqlite3* aDbHandle, TBool& aAuthorizerDisabled, TInt aPageSize, const TDesC& aDbName = KMainDb16)
       
   238 	{
       
   239 	__SQLASSERT(aDbHandle != NULL, ESqlPanicBadArgument);
       
   240 	if(aPageSize == TSqlSrvConfigParams::KConfigPrmValueNotSet)
       
   241 		{
       
   242 		__SQLLEAVE_IF_ERROR(DbPageSize(aDbHandle, aDbName, aPageSize));
       
   243 		}
       
   244 	const TInt KPageMultiplier = 16;
       
   245 	const TInt KDefaultJournalSizeLimit = 64 * 1024;
       
   246 	const TInt KMaxJournalSizeLimit = 512 * 1024;
       
   247 	const TInt KJournalSizeLimit = Min((aPageSize * KPageMultiplier), KMaxJournalSizeLimit);
       
   248 	if(KJournalSizeLimit > KDefaultJournalSizeLimit)
       
   249 		{
       
   250 		__SQLLEAVE_IF_ERROR(::ExecPragma(aDbHandle, aAuthorizerDisabled, KJournalSizeLimitPragma, KJournalSizeLimit));
       
   251 		}
   233 	}
   252 	}
   234 
   253 
   235 //////////////////////////////////////////////////////////////////////////////////////////////////////
   254 //////////////////////////////////////////////////////////////////////////////////////////////////////
   236 /////////////////////////////   CSqlSrvDatabase class    /////////////////////////////////////////////
   255 /////////////////////////////   CSqlSrvDatabase class    /////////////////////////////////////////////
   237 //////////////////////////////////////////////////////////////////////////////////////////////////////
   256 //////////////////////////////////////////////////////////////////////////////////////////////////////
  1249 		{
  1268 		{
  1250 		__SQLLEAVE_IF_ERROR(::ExecPragma(iDbHandle, iAuthorizerDisabled, KPageSizePragma, aConfigParams.iPageSize));
  1269 		__SQLLEAVE_IF_ERROR(::ExecPragma(iDbHandle, iAuthorizerDisabled, KPageSizePragma, aConfigParams.iPageSize));
  1251 		}
  1270 		}
  1252 	
  1271 	
  1253 	const TDesC& logicalDbName = aLogicalDbName.Length() > 0 ? aLogicalDbName : KMainDb16;
  1272 	const TDesC& logicalDbName = aLogicalDbName.Length() > 0 ? aLogicalDbName : KMainDb16;
       
  1273 
       
  1274 	::SetJournalSizeLimitL(iDbHandle, iAuthorizerDisabled, aConfigParams.iPageSize, logicalDbName);
  1254 	
  1275 	
  1255 	//Setting the cache size.
  1276 	//Setting the cache size.
  1256 	//Step 1: Check if aConfigParams.iCacheSize value is set. If it is set, then use it.
  1277 	//Step 1: Check if aConfigParams.iCacheSize value is set. If it is set, then use it.
  1257 	if(aConfigParams.iCacheSize != TSqlSrvConfigParams::KConfigPrmValueNotSet)
  1278 	if(aConfigParams.iCacheSize != TSqlSrvConfigParams::KConfigPrmValueNotSet)
  1258 		{
  1279 		{