Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Make sure that null is passed to the native sqlite3session_table_filter() API when the callback is null. Also, fix type signature of the session extension xFilter native delegate. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | sessions |
Files: | files | file ages | folders |
SHA1: |
f8d3d924537f2526e605a7e9e2fd4598 |
User & Date: | mistachkin 2017-10-11 03:29:49.020 |
Original Comment: | Fix type signature of the session extension xFilter native delegate. |
Context
2017-10-11
| ||
03:34 | More work on tests. check-in: a40c3117c6 user: mistachkin tags: sessions | |
03:29 | Make sure that null is passed to the native sqlite3session_table_filter() API when the callback is null. Also, fix type signature of the session extension xFilter native delegate. check-in: f8d3d92453 user: mistachkin tags: sessions | |
00:32 | More work on tests. check-in: e9782935e2 user: mistachkin tags: sessions | |
Changes
Changes to System.Data.SQLite/SQLiteSession.cs.
︙ | ︙ | |||
1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 | if (rc != SQLiteErrorCode.Ok) throw new SQLiteException(rc, "sqlite3session_create"); } /////////////////////////////////////////////////////////////////////// #region Native Callback Methods private int xFilter( IntPtr context, /* NOT USED */ | > > > > > > > > > > > > > > | | | 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 | if (rc != SQLiteErrorCode.Ok) throw new SQLiteException(rc, "sqlite3session_create"); } /////////////////////////////////////////////////////////////////////// private UnsafeNativeMethods.xSessionFilter ApplyTableFilter( SessionTableFilterCallback callback, /* in: NULL OK */ object clientData /* in: NULL OK */ ) { this.tableFilterCallback = callback; this.tableFilterClientData = clientData; return (callback != null) ? xFilter : (UnsafeNativeMethods.xSessionFilter)null; } /////////////////////////////////////////////////////////////////////// #region Native Callback Methods private int xFilter( IntPtr context, /* NOT USED */ IntPtr pTblName ) { return tableFilterCallback(tableFilterClientData, SQLiteString.StringFromUtf8IntPtr(pTblName)) ? 1 : 0; } #endregion #endregion /////////////////////////////////////////////////////////////////////// #region ISQLiteSession Members |
︙ | ︙ | |||
1389 1390 1391 1392 1393 1394 1395 | SessionTableFilterCallback callback, /* in: NULL OK */ object clientData /* in: NULL OK */ ) { CheckDisposed(); CheckHandle(); | < < < | | 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 | SessionTableFilterCallback callback, /* in: NULL OK */ object clientData /* in: NULL OK */ ) { CheckDisposed(); CheckHandle(); UnsafeNativeMethods.sqlite3session_table_filter( session, ApplyTableFilter(callback, clientData), IntPtr.Zero); } /////////////////////////////////////////////////////////////////////// public void CreateChangeSet( ref byte[] rawData ) |
︙ | ︙ | |||
1645 1646 1647 1648 1649 1650 1651 | { if (tableFilterCallback == null) return null; UnsafeNativeMethods.xSessionFilter xFilter; xFilter = new UnsafeNativeMethods.xSessionFilter( | | | | | 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 | { if (tableFilterCallback == null) return null; UnsafeNativeMethods.xSessionFilter xFilter; xFilter = new UnsafeNativeMethods.xSessionFilter( delegate(IntPtr context, IntPtr pTblName) { try { string name = SQLiteString.StringFromUtf8IntPtr( pTblName); return tableFilterCallback(clientData, name) ? 1 : 0; } catch (Exception e) { try { |
︙ | ︙ |
Changes to System.Data.SQLite/UnsafeNativeMethods.cs.
︙ | ︙ | |||
3802 3803 3804 3805 3806 3807 3808 | /////////////////////////////////////////////////////////////////////////// #region session extension #if INTEROP_SESSION_EXTENSION #if !PLATFORM_COMPACTFRAMEWORK [UnmanagedFunctionPointer(CallingConvention.Cdecl)] #endif | | | 3802 3803 3804 3805 3806 3807 3808 3809 3810 3811 3812 3813 3814 3815 3816 | /////////////////////////////////////////////////////////////////////////// #region session extension #if INTEROP_SESSION_EXTENSION #if !PLATFORM_COMPACTFRAMEWORK [UnmanagedFunctionPointer(CallingConvention.Cdecl)] #endif internal delegate int xSessionFilter(IntPtr context, IntPtr pTblName); #if !PLATFORM_COMPACTFRAMEWORK [UnmanagedFunctionPointer(CallingConvention.Cdecl)] #endif internal delegate SQLiteChangeSetConflictResult xSessionConflict(IntPtr context, SQLiteChangeSetConflictType type, IntPtr iterator); #if !PLATFORM_COMPACTFRAMEWORK |
︙ | ︙ |