13 // Description: |
13 // Description: |
14 // |
14 // |
15 |
15 |
16 #include <f32file.h> |
16 #include <f32file.h> |
17 #include <sqldb.h> |
17 #include <sqldb.h> |
18 #include "SqlPanic.h" |
18 #include "SqlAssert.h" |
19 #include "sqlite3.h" |
19 #include "sqlite3.h" |
20 #include "SqliteSymbian.h" //TSqlFreePageCallback |
20 #include "SqliteSymbian.h" //TSqlFreePageCallback |
21 #include "SqlSrvUtil.h" |
21 #include "SqlSrvUtil.h" |
22 #include "SqlSrvStatementUtil.h" |
22 #include "SqlSrvStatementUtil.h" |
23 #include "SqlCompactConn.h" |
23 #include "SqlCompactConn.h" |
|
24 #include "OstTraceDefinitions.h" |
|
25 #ifdef OST_TRACE_COMPILER_IN_USE |
|
26 #include "SqlCompactConnTraces.h" |
|
27 #endif |
|
28 #include "SqlTraceDef.h" |
24 |
29 |
25 /** |
30 /** |
26 Creates a new CSqlCompactConn instance. |
31 Creates a new CSqlCompactConn instance. |
27 |
32 |
28 @param aFullName The full database name, including the path. |
33 @param aFullName The full database name, including the path. |
43 @panic SqlDb 4 In _DEBUG mode. Too short or too long database name (aFullName parameter) |
48 @panic SqlDb 4 In _DEBUG mode. Too short or too long database name (aFullName parameter) |
44 @panic SqlDb 4 In _DEBUG mode. Invalid aFreePageCallback content. |
49 @panic SqlDb 4 In _DEBUG mode. Invalid aFreePageCallback content. |
45 */ |
50 */ |
46 CSqlCompactConn* CSqlCompactConn::NewL(const TDesC& aFullName, TSqlFreePageCallback& aFreePageCallback) |
51 CSqlCompactConn* CSqlCompactConn::NewL(const TDesC& aFullName, TSqlFreePageCallback& aFreePageCallback) |
47 { |
52 { |
48 __SQLASSERT(aFullName.Length() > 0 && aFullName.Length() <= KMaxFileName, ESqlPanicBadArgument); |
53 SQL_TRACE_COMPACT(OstTraceExt1(TRACE_INTERNALS, CSQLCOMPACTCONN_NEWLC_ENTRY, "Entry;0;CSqlCompactConn::NewL;aFullName=%S", __SQLPRNSTR(aFullName))); |
49 __SQLASSERT(aFreePageCallback.IsValid(), ESqlPanicBadArgument); |
54 __ASSERT_DEBUG(aFullName.Length() > 0 && aFullName.Length() <= KMaxFileName, __SQLPANIC2(ESqlPanicBadArgument)); |
|
55 __ASSERT_DEBUG(aFreePageCallback.IsValid(), __SQLPANIC2(ESqlPanicBadArgument)); |
50 CSqlCompactConn* self = new (ELeave) CSqlCompactConn; |
56 CSqlCompactConn* self = new (ELeave) CSqlCompactConn; |
51 CleanupStack::PushL(self); |
57 CleanupStack::PushL(self); |
52 self->ConstructL(aFullName, aFreePageCallback); |
58 self->ConstructL(aFullName, aFreePageCallback); |
53 CleanupStack::Pop(self); |
59 CleanupStack::Pop(self); |
|
60 SQL_TRACE_COMPACT(OstTraceExt2(TRACE_INTERNALS, CSQLCOMPACTCONN_NEWLC_EXIT, "Exit;0x%X;CSqlCompactConn::NewL;aFullName=%S", (TUint)self, __SQLPRNSTR(aFullName))); |
54 return self; |
61 return self; |
55 } |
62 } |
56 |
63 |
57 /** |
64 /** |
58 Destroys the CSqlCompactConn instance. |
65 Destroys the CSqlCompactConn instance. |
59 */ |
66 */ |
60 CSqlCompactConn::~CSqlCompactConn() |
67 CSqlCompactConn::~CSqlCompactConn() |
61 { |
68 { |
|
69 SQL_TRACE_COMPACT(OstTrace1(TRACE_INTERNALS, CSQLCOMPACTCONN_CSQLCOMPACTCONN2, "0x%X;CSqlCompactConn::~CSqlCompactConn", (TUint)this)); |
62 ::CloseDbHandle(iHandle); |
70 ::CloseDbHandle(iHandle); |
63 } |
71 } |
64 |
72 |
65 /** |
73 /** |
66 Implements MSqlCompactConn::Release(). |
74 Implements MSqlCompactConn::Release(). |
87 @panic SqlDb 4 In _DEBUG mode. Negative aPageCount value. |
95 @panic SqlDb 4 In _DEBUG mode. Negative aPageCount value. |
88 @panic SqlDb 4 In _DEBUG mode. Negative aLength value. |
96 @panic SqlDb 4 In _DEBUG mode. Negative aLength value. |
89 */ |
97 */ |
90 TInt CSqlCompactConn::Compact(TInt aPageCount, TInt& aProcessedPageCount, TInt aLength) |
98 TInt CSqlCompactConn::Compact(TInt aPageCount, TInt& aProcessedPageCount, TInt aLength) |
91 { |
99 { |
92 __SQLASSERT(aPageCount >= 0, ESqlPanicBadArgument); |
100 __ASSERT_DEBUG(aPageCount >= 0, __SQLPANIC(ESqlPanicBadArgument)); |
93 __SQLASSERT(aLength >= 0, ESqlPanicBadArgument); |
101 __ASSERT_DEBUG(aLength >= 0, __SQLPANIC(ESqlPanicBadArgument)); |
94 SQLCOMPACTCONN_INVARIANT(); |
102 SQLCOMPACTCONN_INVARIANT(); |
95 TInt err = ::DbCompact(iHandle, KNullDesC, aPageCount, aProcessedPageCount, aLength); |
103 TInt err = ::DbCompact(iHandle, KNullDesC, aPageCount, aProcessedPageCount, aLength); |
96 SQLCOMPACTCONN_INVARIANT(); |
104 SQLCOMPACTCONN_INVARIANT(); |
97 return err; |
105 return err; |
98 } |
106 } |
121 @panic SqlDb 4 In _DEBUG mode. Invalid aFreePageCallback content. |
129 @panic SqlDb 4 In _DEBUG mode. Invalid aFreePageCallback content. |
122 @panic SqlDb 7 In _DEBUG mode. The database connection has been already established (not null db handle). |
130 @panic SqlDb 7 In _DEBUG mode. The database connection has been already established (not null db handle). |
123 */ |
131 */ |
124 void CSqlCompactConn::ConstructL(const TDesC& aFullName, TSqlFreePageCallback& aFreePageCallback) |
132 void CSqlCompactConn::ConstructL(const TDesC& aFullName, TSqlFreePageCallback& aFreePageCallback) |
125 { |
133 { |
126 __SQLASSERT(aFullName.Length() > 0 && aFullName.Length() <= KMaxFileName, ESqlPanicBadArgument); |
134 __ASSERT_DEBUG(aFullName.Length() > 0 && aFullName.Length() <= KMaxFileName, __SQLPANIC(ESqlPanicBadArgument)); |
127 __SQLASSERT(aFreePageCallback.IsValid(), ESqlPanicBadArgument); |
135 __ASSERT_DEBUG(aFreePageCallback.IsValid(), __SQLPANIC(ESqlPanicBadArgument)); |
128 __SQLASSERT(!iHandle, ESqlPanicInternalError); |
136 __ASSERT_DEBUG(!iHandle, __SQLPANIC(ESqlPanicInternalError)); |
129 |
137 |
130 TBuf8<KMaxFileName + 1> fname; |
138 TBuf8<KMaxFileName + 1> fname; |
131 (void)::UTF16ToUTF8Z(aFullName, fname);//The file is first open by the main connection. |
139 (void)::UTF16ToUTF8Z(aFullName, fname);//The file is first open by the main connection. |
132 //The conversion here should always succeed. |
140 //The conversion here should always succeed. |
133 //Even in a case of a conversion failure, the next line will report a failure. |
141 //Even in a case of a conversion failure, the next line will report a failure. |
220 @panic SqlDb 4 In _DEBUG mode. Too short or too long database name (aFullName parameter) |
228 @panic SqlDb 4 In _DEBUG mode. Too short or too long database name (aFullName parameter) |
221 @panic SqlDb 4 In _DEBUG mode. Invalid aFreePageCallback content. |
229 @panic SqlDb 4 In _DEBUG mode. Invalid aFreePageCallback content. |
222 */ |
230 */ |
223 MSqlCompactConn* SqlCreateCompactConnL(const TDesC& aFullName, TSqlFreePageCallback& aFreePageCallback) |
231 MSqlCompactConn* SqlCreateCompactConnL(const TDesC& aFullName, TSqlFreePageCallback& aFreePageCallback) |
224 { |
232 { |
225 __SQLASSERT(aFullName.Length() > 0 && aFullName.Length() <= KMaxFileName, ESqlPanicBadArgument); |
233 __ASSERT_DEBUG(aFullName.Length() > 0 && aFullName.Length() <= KMaxFileName, __SQLPANIC2(ESqlPanicBadArgument)); |
226 __SQLASSERT(aFreePageCallback.IsValid(), ESqlPanicBadArgument); |
234 __ASSERT_DEBUG(aFreePageCallback.IsValid(), __SQLPANIC2(ESqlPanicBadArgument)); |
227 return CSqlCompactConn::NewL(aFullName, aFreePageCallback); |
235 return CSqlCompactConn::NewL(aFullName, aFreePageCallback); |
228 } |
236 } |