Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Improve ADO.NET conformance of the SQLiteDataReader.RecordsAffected property. Fix for [74542e702e]. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
68239f46ea1622b376c0917d9721fab5 |
User & Date: | mistachkin 2015-04-21 18:18:48.207 |
Context
2015-04-22
| ||
20:35 | The GetErrorString static method was moved from SQLiteBase to SQLite3. Fix the static and dynamic calls into it from the SQLiteException class. check-in: 69a8a5e0e3 user: mistachkin tags: trunk | |
2015-04-21
| ||
18:18 | Improve ADO.NET conformance of the SQLiteDataReader.RecordsAffected property. Fix for [74542e702e]. check-in: 68239f46ea user: mistachkin tags: trunk | |
2015-04-09
| ||
04:53 | More fine-tuning of script library / test suite integration. check-in: 7bc6c13445 user: mistachkin tags: trunk | |
Changes
Changes to Doc/Extra/Provider/version.html.
︙ | ︙ | |||
43 44 45 46 47 48 49 50 51 52 53 54 55 56 | <div id="mainSection"> <div id="mainBody"> <h1 class="heading">Version History</h1> <p><b>1.0.97.0 - May XX, 2015 <font color="red">(release scheduled)</font></b></p> <ul> <li>Updated to <a href="https://www.sqlite.org/releaselog/3_8_9.html">SQLite 3.8.9</a>.</li> <li>Updated to <a href="https://www.nuget.org/packages/EntityFramework/6.1.3">Entity Framework 6.1.3</a>.</li> <li>Prevent the IDataReader.GetDataTypeName method from throwing "No current row" exceptions. Fix for <a href="https://system.data.sqlite.org/index.html/info/94252b9059">[94252b9059]</a>.</li> <li>When BinaryGUID handling is off, transform the LINQ parameter types as well. Fix for <a href="https://system.data.sqlite.org/index.html/info/a4d9c7ee94">[a4d9c7ee94]</a>. <b>** Potentially Incompatible Change **</b></li> <li>The IDataReader.GetDataTypeName method should always return the declared type name. <b>** Potentially Incompatible Change **</b></li> </ul> <p><b>1.0.96.0 - March 5, 2015</b></p> <ul> <li>Prevent the IDataReader.GetOrdinal method from throwing "No current row" exceptions. Fix for <a href="https://system.data.sqlite.org/index.html/info/2be4298631">[2be4298631]</a>, <a href="https://system.data.sqlite.org/index.html/info/abad7c577d">[abad7c577d]</a>, and <a href="https://system.data.sqlite.org/index.html/info/c28d7fe915">[c28d7fe915]</a>.</li> | > | 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | <div id="mainSection"> <div id="mainBody"> <h1 class="heading">Version History</h1> <p><b>1.0.97.0 - May XX, 2015 <font color="red">(release scheduled)</font></b></p> <ul> <li>Updated to <a href="https://www.sqlite.org/releaselog/3_8_9.html">SQLite 3.8.9</a>.</li> <li>Updated to <a href="https://www.nuget.org/packages/EntityFramework/6.1.3">Entity Framework 6.1.3</a>.</li> <li>Improve ADO.NET conformance of the SQLiteDataReader.RecordsAffected property. Fix for <a href="https://system.data.sqlite.org/index.html/info/74542e702e">[74542e702e]</a>. <b>** Potentially Incompatible Change **</b></li> <li>Prevent the IDataReader.GetDataTypeName method from throwing "No current row" exceptions. Fix for <a href="https://system.data.sqlite.org/index.html/info/94252b9059">[94252b9059]</a>.</li> <li>When BinaryGUID handling is off, transform the LINQ parameter types as well. Fix for <a href="https://system.data.sqlite.org/index.html/info/a4d9c7ee94">[a4d9c7ee94]</a>. <b>** Potentially Incompatible Change **</b></li> <li>The IDataReader.GetDataTypeName method should always return the declared type name. <b>** Potentially Incompatible Change **</b></li> </ul> <p><b>1.0.96.0 - March 5, 2015</b></p> <ul> <li>Prevent the IDataReader.GetOrdinal method from throwing "No current row" exceptions. Fix for <a href="https://system.data.sqlite.org/index.html/info/2be4298631">[2be4298631]</a>, <a href="https://system.data.sqlite.org/index.html/info/abad7c577d">[abad7c577d]</a>, and <a href="https://system.data.sqlite.org/index.html/info/c28d7fe915">[c28d7fe915]</a>.</li> |
︙ | ︙ |
Changes to System.Data.SQLite/SQLite3.cs.
︙ | ︙ | |||
834 835 836 837 838 839 840 841 842 843 844 845 846 847 | // Otherwise sleep for a random amount of time up to 150ms System.Threading.Thread.Sleep(rnd.Next(1, 150)); } } } } } internal override SQLiteErrorCode Reset(SQLiteStatement stmt) { SQLiteErrorCode n; #if !SQLITE_STANDARD n = UnsafeNativeMethods.sqlite3_reset_interop(stmt._sqlite_stmt); | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 | // Otherwise sleep for a random amount of time up to 150ms System.Threading.Thread.Sleep(rnd.Next(1, 150)); } } } } } /// <summary> /// Has the sqlite3_errstr() core library API been checked for yet? /// If so, is it present? /// </summary> private static bool? have_errstr = null; /// <summary> /// Returns the error message for the specified SQLite return code using /// the sqlite3_errstr() function, falling back to the internal lookup /// table if necessary. /// </summary> /// <param name="rc">The SQLite return code.</param> /// <returns>The error message or null if it cannot be found.</returns> internal static string GetErrorString(SQLiteErrorCode rc) { try { if (have_errstr == null) { int versionNumber = SQLiteVersionNumber; have_errstr = (versionNumber >= 3007015); } if ((bool)have_errstr) { IntPtr ptr = UnsafeNativeMethods.sqlite3_errstr(rc); if (ptr != IntPtr.Zero) { #if !PLATFORM_COMPACTFRAMEWORK return Marshal.PtrToStringAnsi(ptr); #else return UTF8ToString(ptr, -1); #endif } } } catch (EntryPointNotFoundException) { // do nothing. } return FallbackGetErrorString(rc); } /// <summary> /// Has the sqlite3_stmt_readonly() core library API been checked for yet? /// If so, is it present? /// </summary> private static bool? have_stmt_readonly = null; /// <summary> /// Returns non-zero if the specified statement is read-only in nature. /// </summary> /// <param name="stmt">The statement to check.</param> /// <returns>True if the outer query is read-only.</returns> internal override bool IsReadOnly( SQLiteStatement stmt ) { try { if (have_stmt_readonly == null) { int versionNumber = SQLiteVersionNumber; have_stmt_readonly = (versionNumber >= 3007004); } if ((bool)have_stmt_readonly) { return UnsafeNativeMethods.sqlite3_stmt_readonly( stmt._sqlite_stmt) != 0; } } catch (EntryPointNotFoundException) { // do nothing. } return false; /* NOTE: Unknown, assume false. */ } internal override SQLiteErrorCode Reset(SQLiteStatement stmt) { SQLiteErrorCode n; #if !SQLITE_STANDARD n = UnsafeNativeMethods.sqlite3_reset_interop(stmt._sqlite_stmt); |
︙ | ︙ |
Changes to System.Data.SQLite/SQLiteBase.cs.
︙ | ︙ | |||
157 158 159 160 161 162 163 164 165 166 167 168 169 170 | internal abstract SQLiteStatement Prepare(SQLiteConnection cnn, string strSql, SQLiteStatement previous, uint timeoutMS, ref string strRemain); /// <summary> /// Steps through a prepared statement. /// </summary> /// <param name="stmt">The SQLiteStatement to step through</param> /// <returns>True if a row was returned, False if not.</returns> internal abstract bool Step(SQLiteStatement stmt); /// <summary> /// Resets a prepared statement so it can be executed again. If the error returned is SQLITE_SCHEMA, /// transparently attempt to rebuild the SQL statement and throw an error if that was not possible. /// </summary> /// <param name="stmt">The statement to reset</param> /// <returns>Returns -1 if the schema changed while resetting, 0 if the reset was sucessful or 6 (SQLITE_LOCKED) if the reset failed due to a lock</returns> internal abstract SQLiteErrorCode Reset(SQLiteStatement stmt); | > > > > > > | 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 | internal abstract SQLiteStatement Prepare(SQLiteConnection cnn, string strSql, SQLiteStatement previous, uint timeoutMS, ref string strRemain); /// <summary> /// Steps through a prepared statement. /// </summary> /// <param name="stmt">The SQLiteStatement to step through</param> /// <returns>True if a row was returned, False if not.</returns> internal abstract bool Step(SQLiteStatement stmt); /// <summary> /// Returns non-zero if the specified statement is read-only in nature. /// </summary> /// <param name="stmt">The statement to check.</param> /// <returns>True if the outer query is read-only.</returns> internal abstract bool IsReadOnly(SQLiteStatement stmt); /// <summary> /// Resets a prepared statement so it can be executed again. If the error returned is SQLITE_SCHEMA, /// transparently attempt to rebuild the SQL statement and throw an error if that was not possible. /// </summary> /// <param name="stmt">The statement to reset</param> /// <returns>Returns -1 if the schema changed while resetting, 0 if the reset was sucessful or 6 (SQLITE_LOCKED) if the reset failed due to a lock</returns> internal abstract SQLiteErrorCode Reset(SQLiteStatement stmt); |
︙ | ︙ | |||
566 567 568 569 570 571 572 | /// <summary> /// Returns the error message for the specified SQLite return code using /// the internal static lookup table. /// </summary> /// <param name="rc">The SQLite return code.</param> /// <returns>The error message or null if it cannot be found.</returns> | | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 | /// <summary> /// Returns the error message for the specified SQLite return code using /// the internal static lookup table. /// </summary> /// <param name="rc">The SQLite return code.</param> /// <returns>The error message or null if it cannot be found.</returns> protected static string FallbackGetErrorString(SQLiteErrorCode rc) { if (_errorMessages == null) return null; int index = (int)rc; if ((index < 0) || (index >= _errorMessages.Length)) index = (int)SQLiteErrorCode.Error; /* Make into generic error. */ return _errorMessages[index]; } internal static string GetLastError(SQLiteConnectionHandle hdl, IntPtr db) { if ((hdl == null) || (db == IntPtr.Zero)) return "null connection or database handle"; string result = null; |
︙ | ︙ |
Changes to System.Data.SQLite/SQLiteDataReader.cs.
︙ | ︙ | |||
1360 1361 1362 1363 1364 1365 1366 | stmt = _command.GetStatement(_activeStatementIndex + 1); if (stmt == null) break; _activeStatementIndex++; if (!schemaOnly && stmt._sql.Step(stmt)) _stepCount++; if (stmt._sql.ColumnCount(stmt) == 0) { | > > | | | | > | 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 | stmt = _command.GetStatement(_activeStatementIndex + 1); if (stmt == null) break; _activeStatementIndex++; if (!schemaOnly && stmt._sql.Step(stmt)) _stepCount++; if (stmt._sql.ColumnCount(stmt) == 0) { if (!stmt._sql.IsReadOnly(stmt)) { if (_rowsAffected == -1) _rowsAffected = 0; int changes = 0; if (stmt.TryGetChanges(ref changes)) _rowsAffected += changes; else return false; } } if (!schemaOnly) stmt._sql.Reset(stmt); // Gotta reset after every step to release any locks and such! } return false; } } |
︙ | ︙ | |||
1398 1399 1400 1401 1402 1403 1404 | if (!schemaOnly && stmt._sql.Step(stmt)) { _stepCount++; _readingState = -1; } else if (fieldCount == 0) // No rows returned, if fieldCount is zero, skip to the next statement { | > > | | | | | | > | 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 | if (!schemaOnly && stmt._sql.Step(stmt)) { _stepCount++; _readingState = -1; } else if (fieldCount == 0) // No rows returned, if fieldCount is zero, skip to the next statement { if (!stmt._sql.IsReadOnly(stmt)) { if (_rowsAffected == -1) _rowsAffected = 0; int changes = 0; if (stmt.TryGetChanges(ref changes)) _rowsAffected += changes; else return false; } if (!schemaOnly) stmt._sql.Reset(stmt); continue; // Skip this command and move to the next, it was not a row-returning resultset } else // No rows, fieldCount is non-zero so stop here { _readingState = 1; // This command returned columns but no rows, so return true, but HasRows = false and Read() returns false } |
︙ | ︙ | |||
1570 1571 1572 1573 1574 1575 1576 | _readingState = 1; // Finished reading rows } return false; } /// <summary> | | > > > > > | | 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 | _readingState = 1; // Finished reading rows } return false; } /// <summary> /// Returns the number of rows affected by the statement being executed. /// The value returned may not be accurate for DDL statements. Also, it /// will be -1 for any statement that does not modify the database (e.g. /// SELECT). If an otherwise read-only statement modifies the database /// indirectly (e.g. via a virtual table or user-defined function), the /// value returned is undefined. /// </summary> public override int RecordsAffected { get { CheckDisposed(); return _rowsAffected; } } /// <summary> /// Indexer to retrieve data from a column given its name /// </summary> /// <param name="name">The name of the column to retrieve data for</param> /// <returns>The value contained in the column</returns> |
︙ | ︙ |
Changes to System.Data.SQLite/UnsafeNativeMethods.cs.
︙ | ︙ | |||
1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 | #if !PLATFORM_COMPACTFRAMEWORK [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)] #else [DllImport(SQLITE_DLL)] #endif internal static extern SQLiteErrorCode sqlite3_step(IntPtr stmt); #if !PLATFORM_COMPACTFRAMEWORK [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)] internal static extern double sqlite3_column_double(IntPtr stmt, int index); #endif #if !PLATFORM_COMPACTFRAMEWORK [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)] | > > > > > > > | 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 | #if !PLATFORM_COMPACTFRAMEWORK [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)] #else [DllImport(SQLITE_DLL)] #endif internal static extern SQLiteErrorCode sqlite3_step(IntPtr stmt); #if !PLATFORM_COMPACTFRAMEWORK [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)] #else [DllImport(SQLITE_DLL)] #endif internal static extern int sqlite3_stmt_readonly(IntPtr stmt); /* 3.7.4+ */ #if !PLATFORM_COMPACTFRAMEWORK [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)] internal static extern double sqlite3_column_double(IntPtr stmt, int index); #endif #if !PLATFORM_COMPACTFRAMEWORK [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)] |
︙ | ︙ |
Changes to Tests/authorizer.eagle.
︙ | ︙ | |||
140 141 142 143 144 145 146 | } -constraints {eagle command.object monoBug28 command.sql compile.DATA SQLite\ System.Data.SQLite} -result {{CreateTable {{0 CreateTable t1 {} main {}}} 0 0}\ {CreateIndex {{0 CreateIndex i1 t1 main {}}} 0 0} {CreateTrigger {{0\ CreateTrigger tr1 t1 main {}}} 0 0} {CreateView {{0 CreateView v1 {} main {}}}\ 0 0} {CreateTempTable {{0 CreateTempTable t2 {} temp {}}} 0 0} {CreateTempIndex\ {{0 CreateTempIndex i2 t2 temp {}}} 0 0} {CreateTempTrigger {{0\ CreateTempTrigger tr2 t2 temp {}}} 0 0} {CreateTempView {{0 CreateTempView v2\ | | | | | | | | | 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 | } -constraints {eagle command.object monoBug28 command.sql compile.DATA SQLite\ System.Data.SQLite} -result {{CreateTable {{0 CreateTable t1 {} main {}}} 0 0}\ {CreateIndex {{0 CreateIndex i1 t1 main {}}} 0 0} {CreateTrigger {{0\ CreateTrigger tr1 t1 main {}}} 0 0} {CreateView {{0 CreateView v1 {} main {}}}\ 0 0} {CreateTempTable {{0 CreateTempTable t2 {} temp {}}} 0 0} {CreateTempIndex\ {{0 CreateTempIndex i2 t2 temp {}}} 0 0} {CreateTempTrigger {{0\ CreateTempTrigger tr2 t2 temp {}}} 0 0} {CreateTempView {{0 CreateTempView v2\ {} temp {}}} 0 0} {Pragma {{0 Pragma journal_mode WAL {} {}}} 0 -1} {Function\ {{0 Function {} julianday {} {}}} 0 -1} {Read {{0 Read t1 x main {}}} 0 -1}\ {Select {{0 Select {} {} {} {}}} 0 -1} {Insert {{0 Insert t1 {} main {}}} 0 0}\ {Update {{0 Update t1 x main {}}} 0 0} {Delete {{0 Delete t1 {} main {}}} 0 0}\ {AlterTable {{0 AlterTable main t1 {} {}}} 0 0} {Reindex {{0 Reindex i1 {} main\ {}}} 0 0} {Analyze {{0 Analyze t1 {} main {}}} 0 0} {DropTempView {{0\ DropTempView v2 {} temp {}}} 0 0} {DropTempTrigger {{0 DropTempTrigger tr2 t2\ temp {}}} 0 0} {DropTempIndex {{0 DropTempIndex i2 t2 temp {}}} 0 0}\ {DropTempTable {{0 DropTempTable t2 {} temp {}}} 0 0} {DropView {{0 DropView v1\ {} main {}}} 0 0} {DropTrigger {{0 DropTrigger tr1 t1 main {}}} 0 0} {DropIndex\ {{0 DropIndex i1 t1 main {}}} 0 0} {Recursive {{0 Recursive {} {} {} {}}} 0 -1}\ {DropTable {{0 DropTable t1 {} main {}}} 0 0} {Transaction {{0 Transaction\ BEGIN {} {} {}} {0 Transaction COMMIT {} {} {}}} 0 -1} {Savepoint {{0 Savepoint\ BEGIN s1 {} {}} {0 Savepoint RELEASE s1 {} {}}} 0 -1} {Attach {{0 Attach\ :memory: {} {} {}}} 0 -1} {Detach {{0 Detach d1 {} {} {}}} 0 -1} {CreateVtable\ {{0 CreateVtable t3 fts4 main {}}} 0 0} {DropVtable {{0 DropVtable t3 fts4 main\ {}}} 0 0} {CreateTable {{0 CreateTable tDeny {} main {}}} 1\ {System.Data.SQLite.SQLiteException (0x80004005): authorization denied}} False}} ############################################################################### runSQLiteTestEpilogue |
︙ | ︙ |
Changes to Tests/basic.eagle.
︙ | ︙ | |||
2776 2777 2778 2779 2780 2781 2782 | set result [list] $connection EnableExtensions true $connection LoadExtension [getCoreBinaryFileName] sqlite3_percentile_init lappend result [sql execute $db "CREATE TABLE t1(x);"] lappend result [sql execute $db "INSERT INTO t1 VALUES(1),(2),(3),(4);"] | | | | | 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 | set result [list] $connection EnableExtensions true $connection LoadExtension [getCoreBinaryFileName] sqlite3_percentile_init lappend result [sql execute $db "CREATE TABLE t1(x);"] lappend result [sql execute $db "INSERT INTO t1 VALUES(1),(2),(3),(4);"] lappend result [sql execute $db "SELECT percentile(x,25) FROM t1;"] lappend result [sql execute -execute scalar $db \ "SELECT percentile(x,25) FROM t1;"] set result } -cleanup { freeDbConnection unset -nocomplain result connection cleanupDb $fileName unset -nocomplain db fileName } -constraints {eagle command.object monoBug28 command.sql compile.DATA SQLite\ System.Data.SQLite} -result {0 4 -1 1.75}} ############################################################################### runTest {test data-1.60 {per-connection type mappings} -setup { setupDb [set fileName data-1.60.db] "" "" "" UseConnectionTypes } -body { set connection [getDbConnection] |
︙ | ︙ |
Added Tests/tkt-74542e702e.eagle.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | ############################################################################### # # tkt-74542e702e.eagle -- # # Written by Joe Mistachkin. # Released to the public domain, use at your own risk! # ############################################################################### package require Eagle package require Eagle.Library package require Eagle.Test runTestPrologue ############################################################################### package require System.Data.SQLite.Test runSQLiteTestPrologue ############################################################################### runTest {test tkt-74542e702e-1.1 {RecordsAffected return values} -setup { setupDb [set fileName tkt-74542e702e-1.1.db] } -body { lappend result [sql execute $db "CREATE TABLE t1(x);"] lappend result [sql execute $db { INSERT INTO t1 VALUES(1); INSERT INTO t1 VALUES(2); INSERT INTO t1 VALUES(3); INSERT INTO t1 VALUES(4); }] lappend result [sql execute $db "UPDATE t1 SET x = x + 99;"] lappend result [sql execute $db "SELECT x FROM t1;"] lappend result [sql execute $db "DELETE FROM t1;"] lappend result [sql execute $db "SELECT x FROM t1;"] lappend result [sql execute $db "DELETE FROM t1;"] lappend result [sql execute $db "DROP TABLE t1;"] set result } -cleanup { cleanupDb $fileName unset -nocomplain result db fileName } -constraints \ {eagle monoBug28 command.sql compile.DATA SQLite System.Data.SQLite} -result \ {0 4 4 -1 4 -1 0 0}} ############################################################################### runSQLiteTestEpilogue runTestEpilogue |
Changes to Tests/tkt-92dbf1229a.eagle.
︙ | ︙ | |||
43 44 45 46 47 48 49 | set result } -cleanup { unset -nocomplain dataTable dataReader cleanupDb $fileName | | | 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | set result } -cleanup { unset -nocomplain dataTable dataReader cleanupDb $fileName unset -nocomplain column row result db fileName } -constraints {eagle command.object monoBug28 command.sql compile.DATA SQLite\ System.Data.SQLite} -result {{ColumnName x} {IsKey True} {ColumnName y} {IsKey\ True} {ColumnName w} {IsKey False} {ColumnName z} {IsKey False}}} ############################################################################### runSQLiteTestEpilogue |
︙ | ︙ |
Changes to readme.htm.
︙ | ︙ | |||
210 211 212 213 214 215 216 217 218 219 220 221 222 223 | <p> <b>1.0.97.0 - May XX, 2015 <font color="red">(release scheduled)</font></b> </p> <ul> <li>Updated to <a href="https://www.sqlite.org/releaselog/3_8_9.html">SQLite 3.8.9</a>.</li> <li>Updated to <a href="https://www.nuget.org/packages/EntityFramework/6.1.3">Entity Framework 6.1.3</a>.</li> <li>Prevent the IDataReader.GetDataTypeName method from throwing "No current row" exceptions. Fix for [94252b9059].</li> <li>When BinaryGUID handling is off, transform the LINQ parameter types as well. Fix for [a4d9c7ee94]. <b>** Potentially Incompatible Change **</b></li> <li>The IDataReader.GetDataTypeName method should always return the declared type name. <b>** Potentially Incompatible Change **</b></li> </ul> <p> <b>1.0.96.0 - March 5, 2015</b> </p> | > | 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 | <p> <b>1.0.97.0 - May XX, 2015 <font color="red">(release scheduled)</font></b> </p> <ul> <li>Updated to <a href="https://www.sqlite.org/releaselog/3_8_9.html">SQLite 3.8.9</a>.</li> <li>Updated to <a href="https://www.nuget.org/packages/EntityFramework/6.1.3">Entity Framework 6.1.3</a>.</li> <li>Improve ADO.NET conformance of the SQLiteDataReader.RecordsAffected property. Fix for [74542e702e]. <b>** Potentially Incompatible Change **</b></li> <li>Prevent the IDataReader.GetDataTypeName method from throwing "No current row" exceptions. Fix for [94252b9059].</li> <li>When BinaryGUID handling is off, transform the LINQ parameter types as well. Fix for [a4d9c7ee94]. <b>** Potentially Incompatible Change **</b></li> <li>The IDataReader.GetDataTypeName method should always return the declared type name. <b>** Potentially Incompatible Change **</b></li> </ul> <p> <b>1.0.96.0 - March 5, 2015</b> </p> |
︙ | ︙ |
Changes to www/news.wiki.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <title>News</title> <b>Version History</b> <p> <b>1.0.97.0 - May XX, 2015 <font color="red">(release scheduled)</font></b> </p> <ul> <li>Updated to [https://www.sqlite.org/releaselog/3_8_9.html|SQLite 3.8.9].</li> <li>Updated to [https://www.nuget.org/packages/EntityFramework/6.1.3|Entity Framework 6.1.3].</li> <li>Prevent the IDataReader.GetDataTypeName method from throwing "No current row" exceptions. Fix for [94252b9059].</li> <li>When BinaryGUID handling is off, transform the LINQ parameter types as well. Fix for [a4d9c7ee94]. <b>** Potentially Incompatible Change **</b></li> <li>The IDataReader.GetDataTypeName method should always return the declared type name. <b>** Potentially Incompatible Change **</b></li> </ul> <p> <b>1.0.96.0 - March 5, 2015</b> </p> | > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <title>News</title> <b>Version History</b> <p> <b>1.0.97.0 - May XX, 2015 <font color="red">(release scheduled)</font></b> </p> <ul> <li>Updated to [https://www.sqlite.org/releaselog/3_8_9.html|SQLite 3.8.9].</li> <li>Updated to [https://www.nuget.org/packages/EntityFramework/6.1.3|Entity Framework 6.1.3].</li> <li>Improve ADO.NET conformance of the SQLiteDataReader.RecordsAffected property. Fix for [74542e702e]. <b>** Potentially Incompatible Change **</b></li> <li>Prevent the IDataReader.GetDataTypeName method from throwing "No current row" exceptions. Fix for [94252b9059].</li> <li>When BinaryGUID handling is off, transform the LINQ parameter types as well. Fix for [a4d9c7ee94]. <b>** Potentially Incompatible Change **</b></li> <li>The IDataReader.GetDataTypeName method should always return the declared type name. <b>** Potentially Incompatible Change **</b></li> </ul> <p> <b>1.0.96.0 - March 5, 2015</b> </p> |
︙ | ︙ |