From 0d2e53044a097e13d408b88ba62e530d37d75ef1 Mon Sep 17 00:00:00 2001 From: Theodore Tsirpanis Date: Thu, 8 May 2025 22:22:27 +0300 Subject: [PATCH 1/6] Regenerate bindings for 2.28. --- sources/TileDB.CSharp/Interop/Methods.cs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/sources/TileDB.CSharp/Interop/Methods.cs b/sources/TileDB.CSharp/Interop/Methods.cs index 41b95884..6e79a0f0 100644 --- a/sources/TileDB.CSharp/Interop/Methods.cs +++ b/sources/TileDB.CSharp/Interop/Methods.cs @@ -1333,6 +1333,10 @@ public static int tiledb_status([NativeTypeName("capi_return_t")] int x) [return: NativeTypeName("int32_t")] public static extern int tiledb_stats_disable(); + [DllImport("tiledb", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] + [return: NativeTypeName("int32_t")] + public static extern int tiledb_stats_is_enabled([NativeTypeName("uint8_t *")] byte* enabled); + [DllImport("tiledb", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] [return: NativeTypeName("int32_t")] public static extern int tiledb_stats_reset(); @@ -1428,6 +1432,10 @@ public static int tiledb_status([NativeTypeName("capi_return_t")] int x) [return: NativeTypeName("capi_return_t")] public static extern int tiledb_enumeration_get_offsets(tiledb_ctx_t* ctx, tiledb_enumeration_t* enumeration, [NativeTypeName("const void **")] void** offsets, [NativeTypeName("uint64_t *")] ulong* offsets_size); + [DllImport("tiledb", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] + [return: NativeTypeName("capi_return_t")] + public static extern int tiledb_enumeration_get_value_index(tiledb_ctx_t* ctx, tiledb_enumeration_t* enumeration, [NativeTypeName("const void *")] void* value, [NativeTypeName("uint64_t")] ulong value_size, int* exist, [NativeTypeName("uint64_t *")] ulong* index); + [DllImport("tiledb", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] [return: NativeTypeName("int32_t")] public static extern int tiledb_enumeration_dump_str(tiledb_ctx_t* ctx, tiledb_enumeration_t* enumeration, tiledb_string_t** @out); @@ -1508,6 +1516,10 @@ public static int tiledb_status([NativeTypeName("capi_return_t")] int x) [return: NativeTypeName("capi_return_t")] public static extern int tiledb_current_domain_get_type(tiledb_ctx_t* ctx, [NativeTypeName("tiledb_current_domain_t *")] tiledb_current_domain_handle_t* current_domain, tiledb_current_domain_type_t* type); + [DllImport("tiledb", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] + [return: NativeTypeName("capi_return_t")] + public static extern int tiledb_array_schema_alloc_at_timestamp(tiledb_ctx_t* ctx, tiledb_array_type_t array_type, [NativeTypeName("uint64_t")] ulong timestamp, tiledb_array_schema_t** array_schema); + [DllImport("tiledb", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] [return: NativeTypeName("capi_return_t")] public static extern int tiledb_array_schema_timestamp_range(tiledb_ctx_t* ctx, tiledb_array_schema_t* array_schema, [NativeTypeName("uint64_t *")] ulong* lo, [NativeTypeName("uint64_t *")] ulong* hi); @@ -1608,6 +1620,10 @@ public static int tiledb_status([NativeTypeName("capi_return_t")] int x) [return: NativeTypeName("capi_return_t")] public static extern int tiledb_field_cell_val_num(tiledb_ctx_t* ctx, tiledb_query_field_t* field, [NativeTypeName("uint32_t *")] uint* cell_val_num); + [DllImport("tiledb", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] + [return: NativeTypeName("capi_return_t")] + public static extern int tiledb_field_get_nullable(tiledb_ctx_t* ctx, tiledb_query_field_t* field, [NativeTypeName("uint8_t *")] byte* nullable); + [DllImport("tiledb", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] [return: NativeTypeName("capi_return_t")] public static extern int tiledb_field_origin(tiledb_ctx_t* ctx, tiledb_query_field_t* field, tiledb_field_origin_t* origin); @@ -1624,6 +1640,10 @@ public static int tiledb_status([NativeTypeName("capi_return_t")] int x) [return: NativeTypeName("capi_return_t")] public static extern int tiledb_subarray_add_point_ranges(tiledb_ctx_t* ctx, tiledb_subarray_t* subarray, [NativeTypeName("uint32_t")] uint dim_idx, [NativeTypeName("const void *")] void* start, [NativeTypeName("uint64_t")] ulong count); + [DllImport("tiledb", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] + [return: NativeTypeName("capi_return_t")] + public static extern int tiledb_subarray_add_point_ranges_var(tiledb_ctx_t* ctx, tiledb_subarray_t* subarray, [NativeTypeName("uint32_t")] uint dim_idx, [NativeTypeName("const void *")] void* start, [NativeTypeName("uint64_t")] ulong start_size, [NativeTypeName("const uint64_t *")] ulong* start_offsets, [NativeTypeName("uint64_t")] ulong start_offsets_size); + [DllImport("tiledb", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] [return: NativeTypeName("capi_return_t")] public static extern int tiledb_vfs_ls_recursive(tiledb_ctx_t* ctx, tiledb_vfs_t* vfs, [NativeTypeName("const char *")] sbyte* path, [NativeTypeName("tiledb_ls_callback_t")] delegate* unmanaged[Cdecl] callback, void* data); From 1d76c5ce3794c268d084b0308235dc9940b93f75 Mon Sep 17 00:00:00 2001 From: Theodore Tsirpanis Date: Thu, 8 May 2025 22:33:06 +0300 Subject: [PATCH 2/6] Add new APIs. --- sources/TileDB.CSharp/QueryField.cs | 15 +++++++++++++++ sources/TileDB.CSharp/Stats.cs | 14 ++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/sources/TileDB.CSharp/QueryField.cs b/sources/TileDB.CSharp/QueryField.cs index 117ad057..8f75e9e1 100644 --- a/sources/TileDB.CSharp/QueryField.cs +++ b/sources/TileDB.CSharp/QueryField.cs @@ -53,6 +53,21 @@ public DataType DataType } } + /// + /// Gets whether the is nullable. + /// + public bool IsNullable + { + get + { + using var ctxHandle = _ctx.Handle.Acquire(); + using var handle = _handle.Acquire(); + byte result; + _ctx.handle_error(Methods.tiledb_field_get_nullable(ctxHandle, handle, &result)); + return result != 0; + } + } + /// /// Gets the origin of the . /// diff --git a/sources/TileDB.CSharp/Stats.cs b/sources/TileDB.CSharp/Stats.cs index f2be22e2..352c30ce 100644 --- a/sources/TileDB.CSharp/Stats.cs +++ b/sources/TileDB.CSharp/Stats.cs @@ -18,6 +18,20 @@ public static unsafe class Stats /// public static void Disable() => ErrorHandling.ThrowOnError(Methods.tiledb_stats_disable()); + /// + /// Gets whether statistics are enabled. + /// + /// + /// + public static bool IsEnabled + { + get { + byte val; + ErrorHandling.ThrowOnError(Methods.tiledb_stats_is_enabled(&val)); + return val != 0; + } + } + /// /// Resets all previously gathered statistics. /// From 7d8806592dc362ebbad902d619ac04c05026242d Mon Sep 17 00:00:00 2001 From: Theodore Tsirpanis Date: Tue, 22 Jul 2025 21:48:02 +0300 Subject: [PATCH 3/6] Add tests for the new APIs. --- tests/TileDB.CSharp.Test/AggregatesTest.cs | 1 + tests/TileDB.CSharp.Test/CoreUtilTest.cs | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/tests/TileDB.CSharp.Test/AggregatesTest.cs b/tests/TileDB.CSharp.Test/AggregatesTest.cs index c34a8f01..840cfc85 100644 --- a/tests/TileDB.CSharp.Test/AggregatesTest.cs +++ b/tests/TileDB.CSharp.Test/AggregatesTest.cs @@ -63,6 +63,7 @@ public unsafe void Test() Assert.AreEqual(DataType.UInt64, countField.DataType); Assert.AreEqual(1u, countField.ValuesPerCell); Assert.AreEqual(QueryFieldOrigin.Aggregate, countField.Origin); + Assert.IsFalse(countField.IsNullable); query.SetDataBuffer("a1", dataRead); query.SetValidityBuffer("a1", validityRead); diff --git a/tests/TileDB.CSharp.Test/CoreUtilTest.cs b/tests/TileDB.CSharp.Test/CoreUtilTest.cs index d478c659..c2a49372 100644 --- a/tests/TileDB.CSharp.Test/CoreUtilTest.cs +++ b/tests/TileDB.CSharp.Test/CoreUtilTest.cs @@ -12,4 +12,13 @@ public void BuildConfigurationNonEmpty() Assert.IsFalse(string.IsNullOrWhiteSpace(buildConfiguration)); } + + [TestMethod] + public void TestStats() + { + Stats.Disable(); + Assert.IsFalse(Stats.IsEnabled); + Stats.Enable(); + Assert.IsTrue(Stats.IsEnabled); + } } From 31b775e5f76d793a23d15d2e0fbf05626f373ec7 Mon Sep 17 00:00:00 2001 From: Theodore Tsirpanis Date: Tue, 22 Jul 2025 21:50:29 +0300 Subject: [PATCH 4/6] Update Core to 2.28.1. --- Directory.Packages.props | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 92490191..c6a12859 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -2,9 +2,7 @@ true TileDB.Native - 2 - 27 - [$(TileDBNativeVersionMajor).$(TileDBNativeVersionMinor).0,$(TileDBNativeVersionMajor).$([MSBuild]::Add($(TileDBNativeVersionMinor), 1)).0) + [2.28.1,2.29.0)