Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | The 'UnixEpoch' DateTime format should use Int64 internally, not Int32. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
d28375563e7f5774f2e41cffb11e90bf |
User & Date: | mistachkin 2016-03-02 18:32:05.134 |
Context
2016-03-02
| ||
18:51 | Update version history docs. check-in: cb963833c5 user: mistachkin tags: trunk | |
18:32 | The 'UnixEpoch' DateTime format should use Int64 internally, not Int32. check-in: d28375563e user: mistachkin tags: trunk | |
2016-03-01
| ||
21:08 | Managed project files should not be using '$(Platform)' in conditional expressions. check-in: 8a91edfa9f user: mistachkin tags: trunk | |
Changes
Changes to System.Data.SQLite/SQLite3.cs.
︙ | ︙ | |||
2124 2125 2126 2127 2128 2129 2130 | UnsafeNativeMethods.sqlite3_column_bytes(stmt._sqlite_stmt, index)); #endif } internal override DateTime GetDateTime(SQLiteStatement stmt, int index) { if (_datetimeFormat == SQLiteDateFormats.Ticks) | | | | 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 | UnsafeNativeMethods.sqlite3_column_bytes(stmt._sqlite_stmt, index)); #endif } internal override DateTime GetDateTime(SQLiteStatement stmt, int index) { if (_datetimeFormat == SQLiteDateFormats.Ticks) return TicksToDateTime(GetInt64(stmt, index), _datetimeKind); else if (_datetimeFormat == SQLiteDateFormats.JulianDay) return ToDateTime(GetDouble(stmt, index), _datetimeKind); else if (_datetimeFormat == SQLiteDateFormats.UnixEpoch) return UnixEpochToDateTime(GetInt64(stmt, index), _datetimeKind); #if !SQLITE_STANDARD int len = 0; return ToDateTime(UnsafeNativeMethods.sqlite3_column_text_interop(stmt._sqlite_stmt, index, ref len), len); #else return ToDateTime(UnsafeNativeMethods.sqlite3_column_text(stmt._sqlite_stmt, index), UnsafeNativeMethods.sqlite3_column_bytes(stmt._sqlite_stmt, index)); |
︙ | ︙ |
Changes to System.Data.SQLite/SQLite3_UTF16.cs.
︙ | ︙ | |||
289 290 291 292 293 294 295 | SQLiteErrorCode n = UnsafeNativeMethods.sqlite3_bind_text16(handle, index, value, value.Length * 2, (IntPtr)(-1)); if (n != SQLiteErrorCode.Ok) throw new SQLiteException(n, GetLastError()); } internal override DateTime GetDateTime(SQLiteStatement stmt, int index) { if (_datetimeFormat == SQLiteDateFormats.Ticks) | | | | 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 | SQLiteErrorCode n = UnsafeNativeMethods.sqlite3_bind_text16(handle, index, value, value.Length * 2, (IntPtr)(-1)); if (n != SQLiteErrorCode.Ok) throw new SQLiteException(n, GetLastError()); } internal override DateTime GetDateTime(SQLiteStatement stmt, int index) { if (_datetimeFormat == SQLiteDateFormats.Ticks) return TicksToDateTime(GetInt64(stmt, index), _datetimeKind); else if (_datetimeFormat == SQLiteDateFormats.JulianDay) return ToDateTime(GetDouble(stmt, index), _datetimeKind); else if (_datetimeFormat == SQLiteDateFormats.UnixEpoch) return UnixEpochToDateTime(GetInt64(stmt, index), _datetimeKind); return ToDateTime(GetText(stmt, index)); } internal override string ColumnName(SQLiteStatement stmt, int index) { #if !SQLITE_STANDARD |
︙ | ︙ |
Changes to System.Data.SQLite/SQLiteConvert.cs.
︙ | ︙ | |||
591 592 593 594 595 596 597 | string formatString ) { switch (format) { case SQLiteDateFormats.Ticks: { | | | | 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 | string formatString ) { switch (format) { case SQLiteDateFormats.Ticks: { return TicksToDateTime(Convert.ToInt64( dateText, CultureInfo.InvariantCulture), kind); } case SQLiteDateFormats.JulianDay: { return ToDateTime(Convert.ToDouble( dateText, CultureInfo.InvariantCulture), kind); } case SQLiteDateFormats.UnixEpoch: { return UnixEpochToDateTime(Convert.ToInt64( dateText, CultureInfo.InvariantCulture), kind); } case SQLiteDateFormats.InvariantCulture: { if (formatString != null) return DateTime.SpecifyKind(DateTime.ParseExact( dateText, formatString, |
︙ | ︙ | |||
706 707 708 709 710 711 712 | /// </param> /// <param name="kind"> /// Either Utc or Local time. /// </param> /// <returns> /// The new <see cref="DateTime" /> value. /// </returns> | | | | 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 | /// </param> /// <param name="kind"> /// Either Utc or Local time. /// </param> /// <returns> /// The new <see cref="DateTime" /> value. /// </returns> internal static DateTime UnixEpochToDateTime(long seconds, DateTimeKind kind) { return DateTime.SpecifyKind(UnixEpoch.AddSeconds(seconds), kind); } /// <summary> /// Converts the specified number of ticks since the epoch into a /// <see cref="DateTime" /> value. /// </summary> /// <param name="ticks"> /// The number of whole ticks since the epoch. /// </param> /// <param name="kind"> /// Either Utc or Local time. /// </param> /// <returns> /// The new <see cref="DateTime" /> value. /// </returns> internal static DateTime TicksToDateTime(long ticks, DateTimeKind kind) { return new DateTime(ticks, kind); } /// <summary> /// Converts a DateTime struct to a JulianDay double /// </summary> |
︙ | ︙ |
Changes to Tests/basic.eagle.
︙ | ︙ | |||
4033 4034 4035 4036 4037 4038 4039 4040 4041 4042 4043 4044 4045 4046 | unset -nocomplain result db fileName } -constraints {eagle command.object monoBug28 command.sql compile.DATA SQLite\ System.Data.SQLite} -result {{0 x 1 main t1 x INTEGER System.Int64} {1 y foo\ main t1 y TEXT System.String} {2 z 1234 main t1 z MYTYPE System.Int64} {0 x 1\ main t1 x INTEGER System.Int64} {1 y 5678 main t1 y TEXT System.String} {2 z\ bar main t1 z MYTYPE System.String}}} ############################################################################### reportSQLiteResources $test_channel ############################################################################### | > > > > > > > > > > > > > > > > > > > > > > | 4033 4034 4035 4036 4037 4038 4039 4040 4041 4042 4043 4044 4045 4046 4047 4048 4049 4050 4051 4052 4053 4054 4055 4056 4057 4058 4059 4060 4061 4062 4063 4064 4065 4066 4067 4068 | unset -nocomplain result db fileName } -constraints {eagle command.object monoBug28 command.sql compile.DATA SQLite\ System.Data.SQLite} -result {{0 x 1 main t1 x INTEGER System.Int64} {1 y foo\ main t1 y TEXT System.String} {2 z 1234 main t1 z MYTYPE System.Int64} {0 x 1\ main t1 x INTEGER System.Int64} {1 y 5678 main t1 y TEXT System.String} {2 z\ bar main t1 z MYTYPE System.String}}} ############################################################################### runTest {test data-1.79 {DateTime using Int64} -setup { setupDb [set fileName data-1.79.db] "" UnixEpoch } -body { set result [list] sql execute $db { CREATE TABLE t1(x INTEGER, y DATETIME); INSERT INTO t1 (x, y) VALUES(1, strftime('%s', '2038-01-20')); } sql execute -execute reader -format list -datetimeformat \ [getDateTimeFormat] $db "SELECT x, y FROM t1;" } -cleanup { cleanupDb $fileName unset -nocomplain db fileName } -constraints \ {eagle monoBug28 command.sql compile.DATA SQLite System.Data.SQLite} -result \ {1 {2038-01-20 00:00:00}}} ############################################################################### reportSQLiteResources $test_channel ############################################################################### |
︙ | ︙ |