Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Update Trace.WriteLine calls for consistency. Revise when calls to UnbindFunctions are made. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
7c3cad7da2af5ecfbcdf825eebe36c82 |
User & Date: | mistachkin 2015-07-17 02:46:50.910 |
Context
2015-07-17
| ||
20:37 | Add UnbindAllFunctions method to the SQLiteConnection class. check-in: 7d103d8fd5 user: mistachkin tags: trunk | |
02:46 | Update Trace.WriteLine calls for consistency. Revise when calls to UnbindFunctions are made. check-in: 7c3cad7da2 user: mistachkin tags: trunk | |
02:05 | Refine the changes made in the previous check-in. check-in: a0724d224c user: mistachkin tags: trunk | |
Changes
Changes to System.Data.SQLite/SQLite3.cs.
1 2 3 | /******************************************************** * ADO.NET 2.0 Data Provider for SQLite Version 3.X * Written by Robert Simpson (robert@blackcastlesoft.com) | | | 1 2 3 4 5 6 7 8 9 10 11 | /******************************************************** * ADO.NET 2.0 Data Provider for SQLite Version 3.X * Written by Robert Simpson (robert@blackcastlesoft.com) * * Released to the public domain, use at your own risk! ********************************************************/ namespace System.Data.SQLite { using System; using System.Collections.Generic; |
︙ | ︙ | |||
226 227 228 229 230 231 232 | // goes to the pool and is resurrected later, re-registered functions will overwrite the // previous functions. The SQLiteFunctionCookieHandle will take care of freeing unmanaged // resources belonging to the previously-registered functions. internal override void Close(bool canThrow) { if (_sql != null) { | < < < < < < > > > > > > > > > > > > > > > > > > > > > > > > > | > > > | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 | // goes to the pool and is resurrected later, re-registered functions will overwrite the // previous functions. The SQLiteFunctionCookieHandle will take care of freeing unmanaged // resources belonging to the previously-registered functions. internal override void Close(bool canThrow) { if (_sql != null) { if (!_sql.OwnHandle) { _sql = null; return; } bool unbindFunctions = ((_flags & SQLiteConnectionFlags.UnbindFunctionsOnClose) == SQLiteConnectionFlags.UnbindFunctionsOnClose); if (_usePool) { if (SQLiteBase.ResetConnection(_sql, _sql, canThrow)) { if (unbindFunctions) { if (SQLiteFunction.UnbindFunctions(this, _flags, false)) { #if !NET_COMPACT_20 && TRACE_CONNECTION Trace.WriteLine(String.Format( CultureInfo.CurrentCulture, "UnbindFunctions (Pool) Success: {0}", HandleToString())); #endif } else { #if !NET_COMPACT_20 && TRACE_CONNECTION Trace.WriteLine(String.Format( CultureInfo.CurrentCulture, "UnbindFunctions (Pool) Failure: {0}", HandleToString())); #endif } } #if INTEROP_VIRTUAL_TABLE DisposeModules(); #endif SQLiteConnectionPool.Add(_fileName, _sql, _poolVersion); SQLiteConnection.OnChanged(null, new ConnectionEventArgs( SQLiteConnectionEventType.ClosedToPool, null, null, null, null, _sql, _fileName, new object[] { typeof(SQLite3), canThrow, _fileName, _poolVersion })); #if !NET_COMPACT_20 && TRACE_CONNECTION Trace.WriteLine(String.Format( CultureInfo.CurrentCulture, "Close (Pool) Success: {0}", HandleToString())); #endif } #if !NET_COMPACT_20 && TRACE_CONNECTION else { Trace.WriteLine(String.Format( CultureInfo.CurrentCulture, "Close (Pool) Failure: {0}", HandleToString())); } #endif } else { if (unbindFunctions) { if (SQLiteFunction.UnbindFunctions(this, _flags, false)) { #if !NET_COMPACT_20 && TRACE_CONNECTION Trace.WriteLine(String.Format( CultureInfo.CurrentCulture, "UnbindFunctions Success: {0}", HandleToString())); #endif } else { #if !NET_COMPACT_20 && TRACE_CONNECTION Trace.WriteLine(String.Format( CultureInfo.CurrentCulture, "UnbindFunctions Failure: {0}", HandleToString())); #endif } } _sql.Dispose(); } _sql = null; } } /////////////////////////////////////////////////////////////////////////////////////////////// #if !NET_COMPACT_20 && TRACE_CONNECTION protected string HandleToString() { if (_sql == null) return "<null>"; return _sql.ToString(); } #endif /////////////////////////////////////////////////////////////////////////////////////////////// /// <summary> /// Returns the number of times the <see cref="Cancel" /> method has been /// called. /// </summary> |
︙ | ︙ | |||
826 827 828 829 830 831 832 | SQLiteConnection.OnChanged(null, new ConnectionEventArgs( SQLiteConnectionEventType.OpenedFromPool, null, null, null, null, _sql, strFilename, new object[] { typeof(SQLite3), strFilename, vfsName, connectionFlags, openFlags, maxPoolSize, usePool, _poolVersion })); #if !NET_COMPACT_20 && TRACE_CONNECTION | | > > | 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 | SQLiteConnection.OnChanged(null, new ConnectionEventArgs( SQLiteConnectionEventType.OpenedFromPool, null, null, null, null, _sql, strFilename, new object[] { typeof(SQLite3), strFilename, vfsName, connectionFlags, openFlags, maxPoolSize, usePool, _poolVersion })); #if !NET_COMPACT_20 && TRACE_CONNECTION Trace.WriteLine(String.Format( CultureInfo.CurrentCulture, "Open (Pool): {0}", HandleToString())); #endif } if (_sql == null) { try { |
︙ | ︙ | |||
855 856 857 858 859 860 861 | else #endif { n = UnsafeNativeMethods.sqlite3_open_v2(ToUTF8(strFilename), ref db, openFlags, ToUTF8(vfsName)); } #if !NET_COMPACT_20 && TRACE_CONNECTION | | > > | 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 | else #endif { n = UnsafeNativeMethods.sqlite3_open_v2(ToUTF8(strFilename), ref db, openFlags, ToUTF8(vfsName)); } #if !NET_COMPACT_20 && TRACE_CONNECTION Trace.WriteLine(String.Format( CultureInfo.CurrentCulture, "Open: {0}", db)); #endif if (n != SQLiteErrorCode.Ok) throw new SQLiteException(n, null); _sql = new SQLiteConnectionHandle(db, true); } lock (_sql) { /* HACK: Force the SyncBlock to be "created" now. */ } |
︙ | ︙ | |||
1246 1247 1248 1249 1250 1251 1252 | #else n = UnsafeNativeMethods.sqlite3_prepare(_sql, psql, b.Length - 1, ref stmt, ref ptr); #endif len = -1; #endif #if !NET_COMPACT_20 && TRACE_STATEMENT | | > > | 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 | #else n = UnsafeNativeMethods.sqlite3_prepare(_sql, psql, b.Length - 1, ref stmt, ref ptr); #endif len = -1; #endif #if !NET_COMPACT_20 && TRACE_STATEMENT Trace.WriteLine(String.Format( CultureInfo.CurrentCulture, "Prepare ({0}): {1}", n, stmt)); #endif if ((n == SQLiteErrorCode.Ok) && (stmt != IntPtr.Zero)) { if (statementHandle != null) statementHandle.Dispose(); statementHandle = new SQLiteStatementHandle(_sql, stmt); } |
︙ | ︙ | |||
2319 2320 2321 2322 2323 2324 2325 | _modules.Add(module.Name, module); if (_usePool) { _usePool = false; #if !NET_COMPACT_20 && TRACE_CONNECTION | | > > > | 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 | _modules.Add(module.Name, module); if (_usePool) { _usePool = false; #if !NET_COMPACT_20 && TRACE_CONNECTION Trace.WriteLine(String.Format( CultureInfo.CurrentCulture, "CreateModule (Pool) Disabled: {0}", HandleToString())); #endif } } else { throw new SQLiteException(GetLastError()); } |
︙ | ︙ |
Changes to System.Data.SQLite/SQLite3_UTF16.cs.
︙ | ︙ | |||
8 9 10 11 12 13 14 15 16 17 18 19 20 21 | namespace System.Data.SQLite { using System; using System.Collections.Generic; #if !NET_COMPACT_20 && TRACE_CONNECTION using System.Diagnostics; #endif using System.IO; using System.Runtime.InteropServices; /// <summary> /// Alternate SQLite3 object, overriding many text behaviors to support UTF-16 (Unicode) | > | 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | namespace System.Data.SQLite { using System; using System.Collections.Generic; #if !NET_COMPACT_20 && TRACE_CONNECTION using System.Diagnostics; using System.Globalization; #endif using System.IO; using System.Runtime.InteropServices; /// <summary> /// Alternate SQLite3 object, overriding many text behaviors to support UTF-16 (Unicode) |
︙ | ︙ | |||
157 158 159 160 161 162 163 | SQLiteConnectionEventType.OpenedFromPool, null, null, null, null, _sql, strFilename, new object[] { typeof(SQLite3_UTF16), strFilename, vfsName, connectionFlags, openFlags, maxPoolSize, usePool, _poolVersion })); #if !NET_COMPACT_20 && TRACE_CONNECTION | | > > > | 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 | SQLiteConnectionEventType.OpenedFromPool, null, null, null, null, _sql, strFilename, new object[] { typeof(SQLite3_UTF16), strFilename, vfsName, connectionFlags, openFlags, maxPoolSize, usePool, _poolVersion })); #if !NET_COMPACT_20 && TRACE_CONNECTION Trace.WriteLine(String.Format( CultureInfo.CurrentCulture, "Open16 (Pool): {0}", HandleToString())); #endif } if (_sql == null) { try { |
︙ | ︙ | |||
201 202 203 204 205 206 207 | "cannot open using UTF-16 and VFS \"{0}\": need interop assembly", vfsName)); } n = UnsafeNativeMethods.sqlite3_open16(strFilename, ref db); } #if !NET_COMPACT_20 && TRACE_CONNECTION | | > > | 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 | "cannot open using UTF-16 and VFS \"{0}\": need interop assembly", vfsName)); } n = UnsafeNativeMethods.sqlite3_open16(strFilename, ref db); } #if !NET_COMPACT_20 && TRACE_CONNECTION Trace.WriteLine(String.Format( CultureInfo.CurrentCulture, "Open16: {0}", db)); #endif if (n != SQLiteErrorCode.Ok) throw new SQLiteException(n, null); _sql = new SQLiteConnectionHandle(db, true); } lock (_sql) { /* HACK: Force the SyncBlock to be "created" now. */ } |
︙ | ︙ |
Changes to System.Data.SQLite/SQLiteConnection.cs.
︙ | ︙ | |||
1482 1483 1484 1485 1486 1487 1488 | protected override void Dispose(bool disposing) { #if !NET_COMPACT_20 && TRACE_WARNING if ((_flags & SQLiteConnectionFlags.TraceWarning) == SQLiteConnectionFlags.TraceWarning) { if (_noDispose) { | | > | 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 | protected override void Dispose(bool disposing) { #if !NET_COMPACT_20 && TRACE_WARNING if ((_flags & SQLiteConnectionFlags.TraceWarning) == SQLiteConnectionFlags.TraceWarning) { if (_noDispose) { System.Diagnostics.Trace.WriteLine(String.Format( CultureInfo.CurrentCulture, "WARNING: Disposing of connection \"{0}\" with the no-dispose flag set.", _connectionString)); } } #endif _disposing = true; |
︙ | ︙ | |||
2744 2745 2746 2747 2748 2749 2750 | #if !NET_COMPACT_20 && TRACE_WARNING if ((_flags & SQLiteConnectionFlags.TraceWarning) == SQLiteConnectionFlags.TraceWarning) { if (!uri && !fullUri && !isMemory && !String.IsNullOrEmpty(fileName) && fileName.StartsWith("\\", StringComparison.OrdinalIgnoreCase) && !fileName.StartsWith("\\\\", StringComparison.OrdinalIgnoreCase)) { | | > | 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 | #if !NET_COMPACT_20 && TRACE_WARNING if ((_flags & SQLiteConnectionFlags.TraceWarning) == SQLiteConnectionFlags.TraceWarning) { if (!uri && !fullUri && !isMemory && !String.IsNullOrEmpty(fileName) && fileName.StartsWith("\\", StringComparison.OrdinalIgnoreCase) && !fileName.StartsWith("\\\\", StringComparison.OrdinalIgnoreCase)) { System.Diagnostics.Trace.WriteLine(String.Format( CultureInfo.CurrentCulture, "WARNING: Detected a possibly malformed UNC database file name \"{0}\" that " + "may have originally started with two backslashes; however, four leading " + "backslashes may be required, e.g.: \"Data Source=\\\\\\{0};\"", fileName)); } } #endif |
︙ | ︙ | |||
3546 3547 3548 3549 3550 3551 3552 | throw new InvalidOperationException("Database connection not valid for shutdown."); _sql.Close(true); /* NOTE: MUST be closed before shutdown. */ SQLiteErrorCode rc = _sql.Shutdown(); #if !NET_COMPACT_20 && TRACE_CONNECTION if (rc != SQLiteErrorCode.Ok) | | > > | 3548 3549 3550 3551 3552 3553 3554 3555 3556 3557 3558 3559 3560 3561 3562 3563 3564 | throw new InvalidOperationException("Database connection not valid for shutdown."); _sql.Close(true); /* NOTE: MUST be closed before shutdown. */ SQLiteErrorCode rc = _sql.Shutdown(); #if !NET_COMPACT_20 && TRACE_CONNECTION if (rc != SQLiteErrorCode.Ok) System.Diagnostics.Trace.WriteLine(String.Format( CultureInfo.CurrentCulture, "Shutdown (Instance) Failed: {0}", rc)); #endif return rc; } /// <summary> /// Passes a shutdown request to the SQLite core library. Throws an |
︙ | ︙ | |||
3574 3575 3576 3577 3578 3579 3580 | ) { SQLiteErrorCode rc = SQLite3.StaticShutdown(directories); if (rc != SQLiteErrorCode.Ok) { #if !NET_COMPACT_20 && TRACE_CONNECTION | | > > | 3578 3579 3580 3581 3582 3583 3584 3585 3586 3587 3588 3589 3590 3591 3592 3593 3594 | ) { SQLiteErrorCode rc = SQLite3.StaticShutdown(directories); if (rc != SQLiteErrorCode.Ok) { #if !NET_COMPACT_20 && TRACE_CONNECTION System.Diagnostics.Trace.WriteLine(String.Format( CultureInfo.CurrentCulture, "Shutdown (Static) Failed: {0}", rc)); #endif if (!noThrow) throw new SQLiteException(rc, null); } } |
︙ | ︙ |
Changes to System.Data.SQLite/UnsafeNativeMethods.cs.
︙ | ︙ | |||
2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 | SQLiteBase.CloseConnection(this, localHandle); #endif #if !NET_COMPACT_20 && TRACE_HANDLE try { Trace.WriteLine(String.Format( "CloseConnection: {0}", localHandle)); /* throw */ } catch { } #endif #else | > | 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 | SQLiteBase.CloseConnection(this, localHandle); #endif #if !NET_COMPACT_20 && TRACE_HANDLE try { Trace.WriteLine(String.Format( CultureInfo.CurrentCulture, "CloseConnection: {0}", localHandle)); /* throw */ } catch { } #endif #else |
︙ | ︙ | |||
2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 | catch (SQLiteException) #endif { #if !NET_COMPACT_20 && TRACE_HANDLE try { Trace.WriteLine(String.Format( "CloseConnection: {0}, exception: {1}", handle, e)); /* throw */ } catch { } #endif | > | 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 | catch (SQLiteException) #endif { #if !NET_COMPACT_20 && TRACE_HANDLE try { Trace.WriteLine(String.Format( CultureInfo.CurrentCulture, "CloseConnection: {0}, exception: {1}", handle, e)); /* throw */ } catch { } #endif |
︙ | ︙ | |||
3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 | if (localHandle != IntPtr.Zero) SQLiteBase.FinalizeStatement(cnn, localHandle); #if !NET_COMPACT_20 && TRACE_HANDLE try { Trace.WriteLine(String.Format( "FinalizeStatement: {0}", localHandle)); /* throw */ } catch { } #endif #else | > | 3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155 | if (localHandle != IntPtr.Zero) SQLiteBase.FinalizeStatement(cnn, localHandle); #if !NET_COMPACT_20 && TRACE_HANDLE try { Trace.WriteLine(String.Format( CultureInfo.CurrentCulture, "FinalizeStatement: {0}", localHandle)); /* throw */ } catch { } #endif #else |
︙ | ︙ | |||
3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3185 3186 | catch (SQLiteException) #endif { #if !NET_COMPACT_20 && TRACE_HANDLE try { Trace.WriteLine(String.Format( "FinalizeStatement: {0}, exception: {1}", handle, e)); /* throw */ } catch { } #endif | > | 3176 3177 3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 | catch (SQLiteException) #endif { #if !NET_COMPACT_20 && TRACE_HANDLE try { Trace.WriteLine(String.Format( CultureInfo.CurrentCulture, "FinalizeStatement: {0}, exception: {1}", handle, e)); /* throw */ } catch { } #endif |
︙ | ︙ | |||
3310 3311 3312 3313 3314 3315 3316 3317 3318 3319 3320 3321 3322 3323 | if (localHandle != IntPtr.Zero) SQLiteBase.FinishBackup(cnn, localHandle); #if !NET_COMPACT_20 && TRACE_HANDLE try { Trace.WriteLine(String.Format( "FinishBackup: {0}", localHandle)); /* throw */ } catch { } #endif #else | > | 3314 3315 3316 3317 3318 3319 3320 3321 3322 3323 3324 3325 3326 3327 3328 | if (localHandle != IntPtr.Zero) SQLiteBase.FinishBackup(cnn, localHandle); #if !NET_COMPACT_20 && TRACE_HANDLE try { Trace.WriteLine(String.Format( CultureInfo.CurrentCulture, "FinishBackup: {0}", localHandle)); /* throw */ } catch { } #endif #else |
︙ | ︙ | |||
3344 3345 3346 3347 3348 3349 3350 3351 3352 3353 3354 3355 3356 3357 | catch (SQLiteException) #endif { #if !NET_COMPACT_20 && TRACE_HANDLE try { Trace.WriteLine(String.Format( "FinishBackup: {0}, exception: {1}", handle, e)); /* throw */ } catch { } #endif | > | 3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361 3362 3363 | catch (SQLiteException) #endif { #if !NET_COMPACT_20 && TRACE_HANDLE try { Trace.WriteLine(String.Format( CultureInfo.CurrentCulture, "FinishBackup: {0}, exception: {1}", handle, e)); /* throw */ } catch { } #endif |
︙ | ︙ |