diff --git a/src/LightningDB.Tests/TransactionTests.cs b/src/LightningDB.Tests/TransactionTests.cs index 5fde364..c66fc72 100644 --- a/src/LightningDB.Tests/TransactionTests.cs +++ b/src/LightningDB.Tests/TransactionTests.cs @@ -294,7 +294,7 @@ public void can_get_transaction_id() env.RunTransactionScenario((tx, _) => { - tx.Id.ShouldBeGreaterThan(0); + tx.Id.ShouldBeGreaterThan((nuint)0); }); } diff --git a/src/LightningDB/LightningCursor.cs b/src/LightningDB/LightningCursor.cs index 20cd388..6f8f8d6 100644 --- a/src/LightningDB/LightningCursor.cs +++ b/src/LightningDB/LightningCursor.cs @@ -521,9 +521,11 @@ public MDBResultCode Renew(LightningTransaction txn) /// /// Output parameter where the duplicate count will be stored. /// Returns - public MDBResultCode Count(out int value) + public MDBResultCode Count(out long value) { - return mdb_cursor_count(_handle, out value); + var result = mdb_cursor_count(_handle, out var count); + value = checked((long)count); + return result; } private bool ShouldCloseCursor() diff --git a/src/LightningDB/LightningTransaction.cs b/src/LightningDB/LightningTransaction.cs index 20afd6e..09fb122 100644 --- a/src/LightningDB/LightningTransaction.cs +++ b/src/LightningDB/LightningTransaction.cs @@ -422,7 +422,7 @@ public Stats GetStats(LightningDatabase db) /// /// Gets the transaction ID. /// - public int Id => mdb_txn_id(_handle); + public nuint Id => mdb_txn_id(_handle); /// /// Compares two data items according to the database's key comparison function. diff --git a/src/LightningDB/Native/Lmdb.cs b/src/LightningDB/Native/Lmdb.cs index 5278a3b..50d5d5a 100644 --- a/src/LightningDB/Native/Lmdb.cs +++ b/src/LightningDB/Native/Lmdb.cs @@ -229,7 +229,7 @@ public static partial class Lmdb /// The transaction ID [LibraryImport(MDB_DLL_NAME)] [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - public static partial int mdb_txn_id(nint txn); + public static partial nuint mdb_txn_id(nint txn); /// /// Commits all the operations of a transaction into the database. @@ -388,7 +388,7 @@ public static partial class Lmdb /// A result code indicating success or failure [LibraryImport(MDB_DLL_NAME)] [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - public static partial MDBResultCode mdb_cursor_count(nint cursor, out int countp); + public static partial MDBResultCode mdb_cursor_count(nint cursor, out nuint countp); /// /// Stores key/data pairs in a database. @@ -872,7 +872,7 @@ internal static MDBResultCode mdb_env_open(nint env, string path, EnvironmentOpe /// A transaction handle /// The transaction ID [DllImport(MDB_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] - public static extern int mdb_txn_id(nint txn); + public static extern nuint mdb_txn_id(nint txn); /// /// Commits all the operations of a transaction into the database. @@ -1040,7 +1040,7 @@ public static MDBResultCode mdb_env_copy2(nint env, string path, EnvironmentCopy /// Address where the count will be stored /// A result code indicating success or failure [DllImport(MDB_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] - public static extern MDBResultCode mdb_cursor_count(nint cursor, out int countp); + public static extern MDBResultCode mdb_cursor_count(nint cursor, out nuint countp); /// /// Stores key/data pairs in a database.