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