Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Update SQLite core library to the latest trunk code. Refer to the Win32-specific core library functions only when it is likely they will be available. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | win32heap |
Files: | files | file ages | folders |
SHA1: |
76131c4fc9d4c1fc42a43e8508bb65a8 |
User & Date: | mistachkin 2013-11-11 02:18:14.046 |
Context
2013-11-11
| ||
20:41 | Update SQLite to the latest trunk code. Add managed virtual table support for the estimatedRows field. Closed-Leaf check-in: dfa2a55bad user: mistachkin tags: win32heap | |
02:18 | Update SQLite core library to the latest trunk code. Refer to the Win32-specific core library functions only when it is likely they will be available. check-in: 76131c4fc9 user: mistachkin tags: win32heap | |
00:57 | Add tests for the static SQLiteConnection.ReleaseMemory method. check-in: 42c443e72c user: mistachkin tags: win32heap | |
Changes
Changes to SQLite.Interop/src/core/sqlite3.c.
︙ | ︙ | |||
133 134 135 136 137 138 139 | ** ** See also: [sqlite3_libversion()], ** [sqlite3_libversion_number()], [sqlite3_sourceid()], ** [sqlite_version()] and [sqlite_source_id()]. */ #define SQLITE_VERSION "3.8.2" #define SQLITE_VERSION_NUMBER 3008002 | | | 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 | ** ** See also: [sqlite3_libversion()], ** [sqlite3_libversion_number()], [sqlite3_sourceid()], ** [sqlite_version()] and [sqlite_source_id()]. */ #define SQLITE_VERSION "3.8.2" #define SQLITE_VERSION_NUMBER 3008002 #define SQLITE_SOURCE_ID "2013-11-11 01:42:10 aaed7d1d3ba0aef9f99fb157d3704b9f279aef71" /* ** CAPI3REF: Run-Time Library Version Numbers ** KEYWORDS: sqlite3_version, sqlite3_sourceid ** ** These interfaces provide the same information as the [SQLITE_VERSION], ** [SQLITE_VERSION_NUMBER], and [SQLITE_SOURCE_ID] C preprocessor macros |
︙ | ︙ | |||
30945 30946 30947 30948 30949 30950 30951 30952 30953 30954 30955 30956 30957 30958 30959 30960 30961 30962 30963 30964 30965 30966 30967 30968 30969 | ** Make sure at least one set of Win32 APIs is available. */ #if !defined(SQLITE_WIN32_HAS_ANSI) && !defined(SQLITE_WIN32_HAS_WIDE) # error "At least one of SQLITE_WIN32_HAS_ANSI and SQLITE_WIN32_HAS_WIDE\ must be defined." #endif /* ** Maximum pathname length (in chars) for Win32. This should normally be ** MAX_PATH. */ #ifndef SQLITE_WIN32_MAX_PATH_CHARS # define SQLITE_WIN32_MAX_PATH_CHARS (MAX_PATH) #endif /* ** Maximum pathname length (in chars) for WinNT. This should normally be ** UNICODE_STRING_MAX_CHARS. */ #ifndef SQLITE_WINNT_MAX_PATH_CHARS # define SQLITE_WINNT_MAX_PATH_CHARS (UNICODE_STRING_MAX_CHARS) #endif /* ** Maximum pathname length (in bytes) for Win32. The MAX_PATH macro is in | > > > > > > > > > > > > > > | | 30945 30946 30947 30948 30949 30950 30951 30952 30953 30954 30955 30956 30957 30958 30959 30960 30961 30962 30963 30964 30965 30966 30967 30968 30969 30970 30971 30972 30973 30974 30975 30976 30977 30978 30979 30980 30981 30982 30983 30984 30985 30986 30987 30988 30989 30990 30991 | ** Make sure at least one set of Win32 APIs is available. */ #if !defined(SQLITE_WIN32_HAS_ANSI) && !defined(SQLITE_WIN32_HAS_WIDE) # error "At least one of SQLITE_WIN32_HAS_ANSI and SQLITE_WIN32_HAS_WIDE\ must be defined." #endif /* ** This constant should already be defined (in the "WinDef.h" SDK file). */ #ifndef MAX_PATH # define MAX_PATH (260) #endif /* ** Maximum pathname length (in chars) for Win32. This should normally be ** MAX_PATH. */ #ifndef SQLITE_WIN32_MAX_PATH_CHARS # define SQLITE_WIN32_MAX_PATH_CHARS (MAX_PATH) #endif /* ** This constant should already be defined (in the "WinNT.h" SDK file). */ #ifndef UNICODE_STRING_MAX_CHARS # define UNICODE_STRING_MAX_CHARS (32767) #endif /* ** Maximum pathname length (in chars) for WinNT. This should normally be ** UNICODE_STRING_MAX_CHARS. */ #ifndef SQLITE_WINNT_MAX_PATH_CHARS # define SQLITE_WINNT_MAX_PATH_CHARS (UNICODE_STRING_MAX_CHARS) #endif /* ** Maximum pathname length (in bytes) for Win32. The MAX_PATH macro is in ** characters, so we allocate 4 bytes per character assuming worst-case of ** 4-bytes-per-character for UTF8. */ #ifndef SQLITE_WIN32_MAX_PATH_BYTES # define SQLITE_WIN32_MAX_PATH_BYTES (SQLITE_WIN32_MAX_PATH_CHARS*4) #endif /* |
︙ | ︙ | |||
32242 32243 32244 32245 32246 32247 32248 | SIZE_T n; winMemAssertMagic(); hHeap = winMemGetHeap(); assert( hHeap!=0 ); assert( hHeap!=INVALID_HANDLE_VALUE ); #if !SQLITE_OS_WINRT && defined(SQLITE_WIN32_MALLOC_VALIDATE) | | | 32256 32257 32258 32259 32260 32261 32262 32263 32264 32265 32266 32267 32268 32269 32270 | SIZE_T n; winMemAssertMagic(); hHeap = winMemGetHeap(); assert( hHeap!=0 ); assert( hHeap!=INVALID_HANDLE_VALUE ); #if !SQLITE_OS_WINRT && defined(SQLITE_WIN32_MALLOC_VALIDATE) assert( osHeapValidate(hHeap, SQLITE_WIN32_HEAP_FLAGS, p) ); #endif if( !p ) return 0; n = osHeapSize(hHeap, SQLITE_WIN32_HEAP_FLAGS, p); if( n==(SIZE_T)-1 ){ sqlite3_log(SQLITE_NOMEM, "failed to HeapSize block %p (%lu), heap=%p", p, osGetLastError(), (void*)hHeap); return 0; |
︙ | ︙ | |||
71171 71172 71173 71174 71175 71176 71177 | u.bt.pC = p->apCsr[pOp->p1]; assert( u.bt.pC!=0 ); u.bt.pCrsr = u.bt.pC->pCursor; if( pOp->p5 & OPFLAG_NCHANGE ) p->nChange++; if( ALWAYS(u.bt.pCrsr!=0) ){ u.bt.r.pKeyInfo = u.bt.pC->pKeyInfo; u.bt.r.nField = (u16)pOp->p3; | | | 71185 71186 71187 71188 71189 71190 71191 71192 71193 71194 71195 71196 71197 71198 71199 | u.bt.pC = p->apCsr[pOp->p1]; assert( u.bt.pC!=0 ); u.bt.pCrsr = u.bt.pC->pCursor; if( pOp->p5 & OPFLAG_NCHANGE ) p->nChange++; if( ALWAYS(u.bt.pCrsr!=0) ){ u.bt.r.pKeyInfo = u.bt.pC->pKeyInfo; u.bt.r.nField = (u16)pOp->p3; u.bt.r.flags = UNPACKED_PREFIX_MATCH; u.bt.r.aMem = &aMem[pOp->p2]; #ifdef SQLITE_DEBUG { int i; for(i=0; i<u.bt.r.nField; i++) assert( memIsValid(&u.bt.r.aMem[i]) ); } #endif rc = sqlite3BtreeMovetoUnpacked(u.bt.pCrsr, &u.bt.r, 0, 0, &u.bt.res); if( rc==SQLITE_OK && u.bt.res==0 ){ rc = sqlite3BtreeDelete(u.bt.pCrsr); |
︙ | ︙ |
Changes to SQLite.Interop/src/core/sqlite3.h.
︙ | ︙ | |||
105 106 107 108 109 110 111 | ** ** See also: [sqlite3_libversion()], ** [sqlite3_libversion_number()], [sqlite3_sourceid()], ** [sqlite_version()] and [sqlite_source_id()]. */ #define SQLITE_VERSION "3.8.2" #define SQLITE_VERSION_NUMBER 3008002 | | | 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 | ** ** See also: [sqlite3_libversion()], ** [sqlite3_libversion_number()], [sqlite3_sourceid()], ** [sqlite_version()] and [sqlite_source_id()]. */ #define SQLITE_VERSION "3.8.2" #define SQLITE_VERSION_NUMBER 3008002 #define SQLITE_SOURCE_ID "2013-11-11 01:42:10 aaed7d1d3ba0aef9f99fb157d3704b9f279aef71" /* ** CAPI3REF: Run-Time Library Version Numbers ** KEYWORDS: sqlite3_version, sqlite3_sourceid ** ** These interfaces provide the same information as the [SQLITE_VERSION], ** [SQLITE_VERSION_NUMBER], and [SQLITE_SOURCE_ID] C preprocessor macros |
︙ | ︙ |
Changes to System.Data.SQLite/SQLite3.cs.
︙ | ︙ | |||
553 554 555 556 557 558 559 | { SQLiteErrorCode rc = SQLiteErrorCode.Ok; int nFreeLocal = UnsafeNativeMethods.sqlite3_release_memory(nBytes); uint nLargestLocal = 0; bool resetOkLocal = false; | | | 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 | { SQLiteErrorCode rc = SQLiteErrorCode.Ok; int nFreeLocal = UnsafeNativeMethods.sqlite3_release_memory(nBytes); uint nLargestLocal = 0; bool resetOkLocal = false; #if !DEBUG && WINDOWS // NOTE: Should be "WIN32HEAP && !MEMDEBUG && WINDOWS" if ((rc == SQLiteErrorCode.Ok) && reset) { rc = UnsafeNativeMethods.sqlite3_win32_reset_heap(); if (rc == SQLiteErrorCode.Ok) resetOkLocal = true; } |
︙ | ︙ | |||
613 614 615 616 617 618 619 | rc = UnsafeNativeMethods.sqlite3_win32_set_directory(1, null); if (rc == SQLiteErrorCode.Ok) rc = UnsafeNativeMethods.sqlite3_win32_set_directory(2, null); #else #if !NET_COMPACT_20 && TRACE_CONNECTION Trace.WriteLine( | | | 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 | rc = UnsafeNativeMethods.sqlite3_win32_set_directory(1, null); if (rc == SQLiteErrorCode.Ok) rc = UnsafeNativeMethods.sqlite3_win32_set_directory(2, null); #else #if !NET_COMPACT_20 && TRACE_CONNECTION Trace.WriteLine( "Shutdown: Cannot reset directories on this platform."); #endif #endif } if (rc == SQLiteErrorCode.Ok) rc = UnsafeNativeMethods.sqlite3_shutdown(); |
︙ | ︙ |
Changes to System.Data.SQLite/UnsafeNativeMethods.cs.
︙ | ︙ | |||
1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 | #if WINDOWS #if !PLATFORM_COMPACTFRAMEWORK [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode)] #else [DllImport(SQLITE_DLL, CharSet = CharSet.Unicode)] #endif internal static extern SQLiteErrorCode sqlite3_win32_set_directory(uint type, string value); #if !PLATFORM_COMPACTFRAMEWORK [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)] #else [DllImport(SQLITE_DLL)] #endif internal static extern SQLiteErrorCode sqlite3_win32_reset_heap(); #if !PLATFORM_COMPACTFRAMEWORK [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)] #else [DllImport(SQLITE_DLL)] #endif internal static extern SQLiteErrorCode sqlite3_win32_compact_heap(ref uint largest); #endif #if !PLATFORM_COMPACTFRAMEWORK [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)] #else [DllImport(SQLITE_DLL)] #endif | > > > > > > > > > > > > > > > > > > > > | 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 | #if WINDOWS #if !PLATFORM_COMPACTFRAMEWORK [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode)] #else [DllImport(SQLITE_DLL, CharSet = CharSet.Unicode)] #endif // // NOTE: The "sqlite3_win32_set_directory" SQLite core library function is // only supported on Windows. // internal static extern SQLiteErrorCode sqlite3_win32_set_directory(uint type, string value); #if !DEBUG // NOTE: Should be "WIN32HEAP && !MEMDEBUG" #if !PLATFORM_COMPACTFRAMEWORK [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)] #else [DllImport(SQLITE_DLL)] #endif // // NOTE: The "sqlite3_win32_reset_heap" SQLite core library function is // only supported on Windows when the Win32 native allocator is in // use (i.e. by default, in "Release" builds of System.Data.SQLite // only). By default, in "Debug" builds of System.Data.SQLite, the // MEMDEBUG allocator is used. // internal static extern SQLiteErrorCode sqlite3_win32_reset_heap(); #if !PLATFORM_COMPACTFRAMEWORK [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)] #else [DllImport(SQLITE_DLL)] #endif // // NOTE: The "sqlite3_win32_compact_heap" SQLite core library function is // only supported on Windows when the Win32 native allocator is in // use (i.e. by default, in "Release" builds of System.Data.SQLite // only). By default, in "Debug" builds of System.Data.SQLite, the // MEMDEBUG allocator is used. // internal static extern SQLiteErrorCode sqlite3_win32_compact_heap(ref uint largest); #endif #endif #if !PLATFORM_COMPACTFRAMEWORK [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)] #else [DllImport(SQLITE_DLL)] #endif |
︙ | ︙ |
Changes to Tests/version.eagle.
︙ | ︙ | |||
198 199 200 201 202 203 204 205 206 | runTest {test version-1.15 {ProviderVersion} -body { object invoke System.Data.SQLite.SQLiteConnection ProviderVersion } -constraints {eagle System.Data.SQLite} -result $version(full)} ############################################################################### runTest {test version-1.16 {ProviderSourceId} -body { object invoke System.Data.SQLite.SQLiteConnection ProviderSourceId } -constraints {eagle System.Data.SQLite} -match regexp -result \ | > > > > | | 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 | runTest {test version-1.15 {ProviderVersion} -body { object invoke System.Data.SQLite.SQLiteConnection ProviderVersion } -constraints {eagle System.Data.SQLite} -result $version(full)} ############################################################################### runTest {test version-1.16 {ProviderSourceId} -body { # # NOTE: The ProviderSourceId property value may be null, which # would result in an empty string being returned here. # object invoke System.Data.SQLite.SQLiteConnection ProviderSourceId } -constraints {eagle System.Data.SQLite} -match regexp -result \ {^(?:|[0-9a-f]{40} \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} UTC)$}} ############################################################################### set patterns [list \ [appendArgs Version= [string map [list . \\.] $version(full)] ,] \ [appendArgs <version> [string map [list . \\.] $version(full)] \ </version>] \ |
︙ | ︙ |