Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Implement the xDisconnect and xDestroy virtual table methods. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | virtualTables |
Files: | files | file ages | folders |
SHA1: |
f19e7df89825adf781f1230313f3df71 |
User & Date: | mistachkin 2013-06-07 00:56:09.330 |
Context
2013-06-07
| ||
02:45 | Rename the SQLiteModule class to SQLiteModuleNoop. Adjustments to method and parameter naming conventions. Initial implementation of xOpen virtual table method. check-in: f5c3afbfb1 user: mistachkin tags: virtualTables | |
00:56 | Implement the xDisconnect and xDestroy virtual table methods. check-in: f19e7df898 user: mistachkin tags: virtualTables | |
00:28 | Keep track of whether the DeclareVirtualTable method has been called by a virtual table module. check-in: 091ead1daf user: mistachkin tags: virtualTables | |
Changes
Changes to System.Data.SQLite/SQLiteBase.cs.
︙ | ︙ | |||
15 16 17 18 19 20 21 22 23 24 25 26 27 28 | /// <summary> /// This internal class provides the foundation of SQLite support. It defines all the abstract members needed to implement /// a SQLite data provider, and inherits from SQLiteConvert which allows for simple translations of string to and from SQLite. /// </summary> internal abstract class SQLiteBase : SQLiteConvert, IDisposable { internal SQLiteBase(SQLiteDateFormats fmt, DateTimeKind kind, string fmtString) : base(fmt, kind, fmtString) { } /// <summary> /// Returns a string representing the active version of SQLite /// </summary> internal abstract string Version { get; } | > > > > > > > > > > | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | /// <summary> /// This internal class provides the foundation of SQLite support. It defines all the abstract members needed to implement /// a SQLite data provider, and inherits from SQLiteConvert which allows for simple translations of string to and from SQLite. /// </summary> internal abstract class SQLiteBase : SQLiteConvert, IDisposable { #region Private Constants /// <summary> /// The error code used for logging exceptions caught in user-provided /// code. /// </summary> internal const int COR_E_EXCEPTION = unchecked((int)0x80131500); #endregion ///////////////////////////////////////////////////////////////////////// internal SQLiteBase(SQLiteDateFormats fmt, DateTimeKind kind, string fmtString) : base(fmt, kind, fmtString) { } /// <summary> /// Returns a string representing the active version of SQLite /// </summary> internal abstract string Version { get; } |
︙ | ︙ |
Changes to System.Data.SQLite/SQLiteFunction.cs.
︙ | ︙ | |||
34 35 36 37 38 39 40 | { internal int _count = 1; internal object _data; } ///////////////////////////////////////////////////////////////////////// | < < < < < < < < < < | 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | { internal int _count = 1; internal object _data; } ///////////////////////////////////////////////////////////////////////// /// <summary> /// The base connection this function is attached to /// </summary> internal SQLiteBase _base; /// <summary> /// Internal array used to keep track of aggregate function context data |
︙ | ︙ | |||
386 387 388 389 390 391 392 | catch (Exception e) /* NOTE: Must catch ALL. */ { try { if ((_flags & SQLiteConnectionFlags.LogCallbackException) == SQLiteConnectionFlags.LogCallbackException) { | | | | 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 | catch (Exception e) /* NOTE: Must catch ALL. */ { try { if ((_flags & SQLiteConnectionFlags.LogCallbackException) == SQLiteConnectionFlags.LogCallbackException) { SQLiteLog.LogMessage(SQLiteBase.COR_E_EXCEPTION, String.Format(CultureInfo.CurrentCulture, "Caught exception in \"Invoke\" method: {0}", e)); /* throw */ } } catch { // do nothing. |
︙ | ︙ | |||
424 425 426 427 428 429 430 | catch (Exception e) /* NOTE: Must catch ALL. */ { try { if ((_flags & SQLiteConnectionFlags.LogCallbackException) == SQLiteConnectionFlags.LogCallbackException) { | | | | 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 | catch (Exception e) /* NOTE: Must catch ALL. */ { try { if ((_flags & SQLiteConnectionFlags.LogCallbackException) == SQLiteConnectionFlags.LogCallbackException) { SQLiteLog.LogMessage(SQLiteBase.COR_E_EXCEPTION, String.Format(CultureInfo.CurrentCulture, "Caught exception in \"Compare\" (UTF8) method: {0}", e)); /* throw */ } } catch { // do nothing. |
︙ | ︙ | |||
471 472 473 474 475 476 477 | catch (Exception e) /* NOTE: Must catch ALL. */ { try { if ((_flags & SQLiteConnectionFlags.LogCallbackException) == SQLiteConnectionFlags.LogCallbackException) { | | | | 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 | catch (Exception e) /* NOTE: Must catch ALL. */ { try { if ((_flags & SQLiteConnectionFlags.LogCallbackException) == SQLiteConnectionFlags.LogCallbackException) { SQLiteLog.LogMessage(SQLiteBase.COR_E_EXCEPTION, String.Format(CultureInfo.CurrentCulture, "Caught exception in \"Compare\" (UTF16) method: {0}", e)); /* throw */ } } catch { // do nothing. |
︙ | ︙ | |||
544 545 546 547 548 549 550 | catch (Exception e) /* NOTE: Must catch ALL. */ { try { if ((_flags & SQLiteConnectionFlags.LogCallbackException) == SQLiteConnectionFlags.LogCallbackException) { | | | | 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 | catch (Exception e) /* NOTE: Must catch ALL. */ { try { if ((_flags & SQLiteConnectionFlags.LogCallbackException) == SQLiteConnectionFlags.LogCallbackException) { SQLiteLog.LogMessage(SQLiteBase.COR_E_EXCEPTION, String.Format(CultureInfo.CurrentCulture, "Caught exception in \"Step\" method: {1}", e)); /* throw */ } } catch { // do nothing. |
︙ | ︙ | |||
599 600 601 602 603 604 605 | catch (Exception e) /* NOTE: Must catch ALL. */ { try { if ((_flags & SQLiteConnectionFlags.LogCallbackException) == SQLiteConnectionFlags.LogCallbackException) { | | | | 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 | catch (Exception e) /* NOTE: Must catch ALL. */ { try { if ((_flags & SQLiteConnectionFlags.LogCallbackException) == SQLiteConnectionFlags.LogCallbackException) { SQLiteLog.LogMessage(SQLiteBase.COR_E_EXCEPTION, String.Format(CultureInfo.CurrentCulture, "Caught exception in \"Final\" method: {1}", e)); /* throw */ } } catch { // do nothing. |
︙ | ︙ |
Changes to System.Data.SQLite/SQLiteModuleBase.cs.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | /******************************************************** * ADO.NET 2.0 Data Provider for SQLite Version 3.X * Written by Joe Mistachkin (joe@mistachkin.com) * * Released to the public domain, use at your own risk! ********************************************************/ using System.Runtime.InteropServices; using System.Security; #if !NET_40 using System.Security.Permissions; #endif | > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | /******************************************************** * ADO.NET 2.0 Data Provider for SQLite Version 3.X * Written by Joe Mistachkin (joe@mistachkin.com) * * Released to the public domain, use at your own risk! ********************************************************/ using System.Globalization; using System.Runtime.InteropServices; using System.Security; #if !NET_40 using System.Security.Permissions; #endif |
︙ | ︙ | |||
727 728 729 730 731 732 733 | /////////////////////////////////////////////////////////////////////// public SQLiteErrorCode xDisconnect( IntPtr pVtab ) { | > > > | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | > > > > > > > > > > > > > > > > > > > > > > > > > > | 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 | /////////////////////////////////////////////////////////////////////// public SQLiteErrorCode xDisconnect( IntPtr pVtab ) { try { if (Disconnect() == SQLiteErrorCode.Ok) return SQLiteErrorCode.Ok; } catch (Exception e) /* NOTE: Must catch ALL. */ { // // NOTE: At this point, there is no way to report the error // condition back to the caller; therefore, use the // logging facility instead. // try { SQLiteLog.LogMessage(SQLiteBase.COR_E_EXCEPTION, String.Format(CultureInfo.CurrentCulture, "Caught exception in \"xDisconnect\" method: {0}", e)); /* throw */ } catch { // do nothing. } } finally { FreeVirtualTable(pVtab); } return SQLiteErrorCode.Error; } /////////////////////////////////////////////////////////////////////// public SQLiteErrorCode xDestroy( IntPtr pVtab ) { try { if (Destroy() == SQLiteErrorCode.Ok) return SQLiteErrorCode.Ok; } catch (Exception e) /* NOTE: Must catch ALL. */ { // // NOTE: At this point, there is no way to report the error // condition back to the caller; therefore, use the // logging facility instead. // try { SQLiteLog.LogMessage(SQLiteBase.COR_E_EXCEPTION, String.Format(CultureInfo.CurrentCulture, "Caught exception in \"xDestroy\" method: {0}", e)); /* throw */ } catch { // do nothing. } } finally { FreeVirtualTable(pVtab); } return SQLiteErrorCode.Error; } /////////////////////////////////////////////////////////////////////// public SQLiteErrorCode xOpen( IntPtr pVtab, ref IntPtr cursor |
︙ | ︙ |