This is an automated email from the ASF dual-hosted git repository.
CurtHagenlocher pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-adbc.git
The following commit(s) were added to refs/heads/main by this push:
new 645133081 fix(csharp): remove Foundry drivers from solution (#4323)
645133081 is described below
commit 6451330814db89232b03cf1b7584935e16f33498
Author: davidhcoe <[email protected]>
AuthorDate: Tue May 19 11:38:40 2026 -0400
fix(csharp): remove Foundry drivers from solution (#4323)
Removes the following drivers from the solution (but not yet from the
repo):
- Apache - moved to
https://github.com/adbc-drivers/hiveserver2/tree/main/csharp
- BigQuery - moved to
https://github.com/adbc-drivers/bigquery/tree/main/csharp
- Databricks - moved to
https://github.com/adbc-drivers/databricks/tree/main/csharp
- FlightSQL - displaced by the interop library
Apache.Arrow.Adbc.Drivers.Interop.FlightSql
---------
Co-authored-by: David Coe <>
---
ci/scripts/csharp_test.sh | 10 +-
csharp/Apache.Arrow.Adbc.sln | 64 +--
csharp/Benchmarks/Benchmarks.csproj | 2 -
csharp/Benchmarks/CloudFetchBenchmarkRunner.cs | 53 ---
.../Databricks/CloudFetchRealE2EBenchmark.cs | 461 ---------------------
csharp/Benchmarks/Databricks/README.md | 168 --------
.../Apache.Arrow.Adbc.Drivers.Databricks.csproj | 3 -
.../Apache.Arrow.Adbc.Tests.Drivers.Apache.csproj | 1 -
...Apache.Arrow.Adbc.Tests.Drivers.BigQuery.csproj | 1 -
...ache.Arrow.Adbc.Tests.Drivers.Databricks.csproj | 2 -
...pache.Arrow.Adbc.Tests.Drivers.FlightSql.csproj | 1 -
11 files changed, 8 insertions(+), 758 deletions(-)
diff --git a/ci/scripts/csharp_test.sh b/ci/scripts/csharp_test.sh
index da6ce98e2..2b9cac8f3 100755
--- a/ci/scripts/csharp_test.sh
+++ b/ci/scripts/csharp_test.sh
@@ -25,7 +25,9 @@ pushd ${source_dir}
dotnet test
popd
-source_dir=${1}/csharp/test/Drivers/Databricks
-pushd ${source_dir}
-dotnet test --filter
"FullyQualifiedName~Apache.Arrow.Adbc.Tests.Drivers.Databricks.Unit"
-popd
+# Databricks driver has been moved out of this repo; its tests are kept
+# on disk for now but are intentionally not built or run in CI.
+# source_dir=${1}/csharp/test/Drivers/Databricks
+# pushd ${source_dir}
+# dotnet test --filter
"FullyQualifiedName~Apache.Arrow.Adbc.Tests.Drivers.Databricks.Unit"
+# popd
diff --git a/csharp/Apache.Arrow.Adbc.sln b/csharp/Apache.Arrow.Adbc.sln
index 097b87ce3..61947d6a9 100644
--- a/csharp/Apache.Arrow.Adbc.sln
+++ b/csharp/Apache.Arrow.Adbc.sln
@@ -1,6 +1,6 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 17
-VisualStudioVersion = 17.4.33403.182
+# Visual Studio Version 18
+VisualStudioVersion = 18.5.11801.241 oobstable
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Apache.Arrow.Adbc",
"src\Apache.Arrow.Adbc\Apache.Arrow.Adbc.csproj",
"{232F2EC7-5FD3-4E0B-89FF-317A15CF698F}"
EndProject
@@ -16,28 +16,12 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") =
"Client", "Client", "{B61116
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") =
"Apache.Arrow.Adbc.Client", "src\Client\Apache.Arrow.Adbc.Client.csproj",
"{A405F4A0-5938-4139-B2DF-ED9A05EC3D7C}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") =
"Apache.Arrow.Adbc.Drivers.BigQuery",
"src\Drivers\BigQuery\Apache.Arrow.Adbc.Drivers.BigQuery.csproj",
"{A748041C-EF9A-4E88-B6FB-9F2D6CB79170}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") =
"Apache.Arrow.Adbc.Tests.Drivers.BigQuery",
"test\Drivers\BigQuery\Apache.Arrow.Adbc.Tests.Drivers.BigQuery.csproj",
"{EA43BB7C-BC00-4701-BDF4-367880C2495C}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") =
"Apache.Arrow.Adbc.Drivers.Apache",
"src\Drivers\Apache\Apache.Arrow.Adbc.Drivers.Apache.csproj",
"{6C0D8BE1-4A23-4C2F-88B1-D2FBEA0B1903}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") =
"Apache.Arrow.Adbc.Tests.Drivers.Apache",
"test\Drivers\Apache\Apache.Arrow.Adbc.Tests.Drivers.Apache.csproj",
"{714F0BD2-3A92-4D1A-8FAC-D0C0599BE3E3}"
-EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") =
"Apache.Arrow.Adbc.Drivers.Interop.FlightSql",
"src\Drivers\Interop\FlightSql\Apache.Arrow.Adbc.Drivers.Interop.FlightSql.csproj",
"{4076D7E9-728D-4DF4-999F-658784957648}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") =
"Apache.Arrow.Adbc.Tests.Drivers.Interop.FlightSql",
"test\Drivers\Interop\FlightSql\Apache.Arrow.Adbc.Tests.Drivers.Interop.FlightSql.csproj",
"{C5503227-C5A7-406F-83AA-681F292EA61F}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") =
"Apache.Arrow.Adbc.Drivers.FlightSql",
"src\Drivers\FlightSql\Apache.Arrow.Adbc.Drivers.FlightSql.csproj",
"{77D5A92F-4136-4DE7-81F4-43B981223280}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") =
"Apache.Arrow.Adbc.Tests.Drivers.FlightSql",
"test\Drivers\FlightSql\Apache.Arrow.Adbc.Tests.Drivers.FlightSql.csproj",
"{5B27FB02-D4AE-4ACB-AD88-5E64EEB61729}"
-EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Benchmarks",
"Benchmarks\Benchmarks.csproj", "{BAF2CF14-BA77-429E-AF54-A34B978E9F5C}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") =
"Apache.Arrow.Adbc.Drivers.Databricks",
"src\Drivers\Databricks\Apache.Arrow.Adbc.Drivers.Databricks.csproj",
"{25042111-6B86-8B75-7EF6-5BFAA36F72B1}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") =
"Apache.Arrow.Adbc.Tests.Drivers.Databricks",
"test\Drivers\Databricks\Apache.Arrow.Adbc.Tests.Drivers.Databricks.csproj",
"{BA07EB2C-5246-EB72-153C-493C7E7412D2}"
-EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Telemetry", "Telemetry",
"{02EA681E-C7D8-13C7-8484-4AC65E1B71E8}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Traces", "Traces",
"{22EF23A3-1566-446F-B696-9323F3B6F56C}"
@@ -80,26 +64,6 @@ Global
{A405F4A0-5938-4139-B2DF-ED9A05EC3D7C}.Debug|Any CPU.Build.0 =
Debug|Any CPU
{A405F4A0-5938-4139-B2DF-ED9A05EC3D7C}.Release|Any
CPU.ActiveCfg = Release|Any CPU
{A405F4A0-5938-4139-B2DF-ED9A05EC3D7C}.Release|Any CPU.Build.0
= Release|Any CPU
- {A748041C-EF9A-4E88-B6FB-9F2D6CB79170}.Debug|Any CPU.ActiveCfg
= Debug|Any CPU
- {A748041C-EF9A-4E88-B6FB-9F2D6CB79170}.Debug|Any CPU.Build.0 =
Debug|Any CPU
- {A748041C-EF9A-4E88-B6FB-9F2D6CB79170}.Release|Any
CPU.ActiveCfg = Release|Any CPU
- {A748041C-EF9A-4E88-B6FB-9F2D6CB79170}.Release|Any CPU.Build.0
= Release|Any CPU
- {EA43BB7C-BC00-4701-BDF4-367880C2495C}.Debug|Any CPU.ActiveCfg
= Debug|Any CPU
- {EA43BB7C-BC00-4701-BDF4-367880C2495C}.Debug|Any CPU.Build.0 =
Debug|Any CPU
- {EA43BB7C-BC00-4701-BDF4-367880C2495C}.Release|Any
CPU.ActiveCfg = Release|Any CPU
- {EA43BB7C-BC00-4701-BDF4-367880C2495C}.Release|Any CPU.Build.0
= Release|Any CPU
- {8BE1EECC-3ACF-41B2-AF7D-1A67196FF6C7}.Debug|Any CPU.ActiveCfg
= Debug|Any CPU
- {8BE1EECC-3ACF-41B2-AF7D-1A67196FF6C7}.Debug|Any CPU.Build.0 =
Debug|Any CPU
- {8BE1EECC-3ACF-41B2-AF7D-1A67196FF6C7}.Release|Any
CPU.ActiveCfg = Release|Any CPU
- {8BE1EECC-3ACF-41B2-AF7D-1A67196FF6C7}.Release|Any CPU.Build.0
= Release|Any CPU
- {6C0D8BE1-4A23-4C2F-88B1-D2FBEA0B1903}.Debug|Any CPU.ActiveCfg
= Debug|Any CPU
- {6C0D8BE1-4A23-4C2F-88B1-D2FBEA0B1903}.Debug|Any CPU.Build.0 =
Debug|Any CPU
- {6C0D8BE1-4A23-4C2F-88B1-D2FBEA0B1903}.Release|Any
CPU.ActiveCfg = Release|Any CPU
- {6C0D8BE1-4A23-4C2F-88B1-D2FBEA0B1903}.Release|Any CPU.Build.0
= Release|Any CPU
- {714F0BD2-3A92-4D1A-8FAC-D0C0599BE3E3}.Debug|Any CPU.ActiveCfg
= Debug|Any CPU
- {714F0BD2-3A92-4D1A-8FAC-D0C0599BE3E3}.Debug|Any CPU.Build.0 =
Debug|Any CPU
- {714F0BD2-3A92-4D1A-8FAC-D0C0599BE3E3}.Release|Any
CPU.ActiveCfg = Release|Any CPU
- {714F0BD2-3A92-4D1A-8FAC-D0C0599BE3E3}.Release|Any CPU.Build.0
= Release|Any CPU
{4076D7E9-728D-4DF4-999F-658784957648}.Debug|Any CPU.ActiveCfg
= Debug|Any CPU
{4076D7E9-728D-4DF4-999F-658784957648}.Debug|Any CPU.Build.0 =
Debug|Any CPU
{4076D7E9-728D-4DF4-999F-658784957648}.Release|Any
CPU.ActiveCfg = Release|Any CPU
@@ -108,26 +72,10 @@ Global
{C5503227-C5A7-406F-83AA-681F292EA61F}.Debug|Any CPU.Build.0 =
Debug|Any CPU
{C5503227-C5A7-406F-83AA-681F292EA61F}.Release|Any
CPU.ActiveCfg = Release|Any CPU
{C5503227-C5A7-406F-83AA-681F292EA61F}.Release|Any CPU.Build.0
= Release|Any CPU
- {77D5A92F-4136-4DE7-81F4-43B981223280}.Debug|Any CPU.ActiveCfg
= Debug|Any CPU
- {77D5A92F-4136-4DE7-81F4-43B981223280}.Debug|Any CPU.Build.0 =
Debug|Any CPU
- {77D5A92F-4136-4DE7-81F4-43B981223280}.Release|Any
CPU.ActiveCfg = Release|Any CPU
- {77D5A92F-4136-4DE7-81F4-43B981223280}.Release|Any CPU.Build.0
= Release|Any CPU
- {5B27FB02-D4AE-4ACB-AD88-5E64EEB61729}.Debug|Any CPU.ActiveCfg
= Debug|Any CPU
- {5B27FB02-D4AE-4ACB-AD88-5E64EEB61729}.Debug|Any CPU.Build.0 =
Debug|Any CPU
- {5B27FB02-D4AE-4ACB-AD88-5E64EEB61729}.Release|Any
CPU.ActiveCfg = Release|Any CPU
- {5B27FB02-D4AE-4ACB-AD88-5E64EEB61729}.Release|Any CPU.Build.0
= Release|Any CPU
{BAF2CF14-BA77-429E-AF54-A34B978E9F5C}.Debug|Any CPU.ActiveCfg
= Debug|Any CPU
{BAF2CF14-BA77-429E-AF54-A34B978E9F5C}.Debug|Any CPU.Build.0 =
Debug|Any CPU
{BAF2CF14-BA77-429E-AF54-A34B978E9F5C}.Release|Any
CPU.ActiveCfg = Release|Any CPU
{BAF2CF14-BA77-429E-AF54-A34B978E9F5C}.Release|Any CPU.Build.0
= Release|Any CPU
- {25042111-6B86-8B75-7EF6-5BFAA36F72B1}.Debug|Any CPU.ActiveCfg
= Debug|Any CPU
- {25042111-6B86-8B75-7EF6-5BFAA36F72B1}.Debug|Any CPU.Build.0 =
Debug|Any CPU
- {25042111-6B86-8B75-7EF6-5BFAA36F72B1}.Release|Any
CPU.ActiveCfg = Release|Any CPU
- {25042111-6B86-8B75-7EF6-5BFAA36F72B1}.Release|Any CPU.Build.0
= Release|Any CPU
- {BA07EB2C-5246-EB72-153C-493C7E7412D2}.Debug|Any CPU.ActiveCfg
= Debug|Any CPU
- {BA07EB2C-5246-EB72-153C-493C7E7412D2}.Debug|Any CPU.Build.0 =
Debug|Any CPU
- {BA07EB2C-5246-EB72-153C-493C7E7412D2}.Release|Any
CPU.ActiveCfg = Release|Any CPU
- {BA07EB2C-5246-EB72-153C-493C7E7412D2}.Release|Any CPU.Build.0
= Release|Any CPU
{85D2EC10-F461-02F4-83B6-E4FC320C244F}.Debug|Any CPU.ActiveCfg
= Debug|Any CPU
{85D2EC10-F461-02F4-83B6-E4FC320C244F}.Debug|Any CPU.Build.0 =
Debug|Any CPU
{85D2EC10-F461-02F4-83B6-E4FC320C244F}.Release|Any
CPU.ActiveCfg = Release|Any CPU
@@ -152,17 +100,9 @@ Global
{00C143BA-F1CF-4117-9DE6-E73DC4D208F8} =
{5BD04C26-CE52-4893-8C1A-479705195CEF}
{C7290227-E925-47E7-8B6B-A8B171645D58} =
{5BD04C26-CE52-4893-8C1A-479705195CEF}
{A405F4A0-5938-4139-B2DF-ED9A05EC3D7C} =
{B6111602-2DC4-4B2F-9598-E3EE1972D3E4}
- {A748041C-EF9A-4E88-B6FB-9F2D6CB79170} =
{FEB257A0-4FD3-495E-9A47-9E1649755445}
- {EA43BB7C-BC00-4701-BDF4-367880C2495C} =
{C7290227-E925-47E7-8B6B-A8B171645D58}
- {6C0D8BE1-4A23-4C2F-88B1-D2FBEA0B1903} =
{FEB257A0-4FD3-495E-9A47-9E1649755445}
- {714F0BD2-3A92-4D1A-8FAC-D0C0599BE3E3} =
{C7290227-E925-47E7-8B6B-A8B171645D58}
{4076D7E9-728D-4DF4-999F-658784957648} =
{FEB257A0-4FD3-495E-9A47-9E1649755445}
{C5503227-C5A7-406F-83AA-681F292EA61F} =
{C7290227-E925-47E7-8B6B-A8B171645D58}
- {77D5A92F-4136-4DE7-81F4-43B981223280} =
{FEB257A0-4FD3-495E-9A47-9E1649755445}
- {5B27FB02-D4AE-4ACB-AD88-5E64EEB61729} =
{C7290227-E925-47E7-8B6B-A8B171645D58}
{BAF2CF14-BA77-429E-AF54-A34B978E9F5C} =
{5BD04C26-CE52-4893-8C1A-479705195CEF}
- {25042111-6B86-8B75-7EF6-5BFAA36F72B1} =
{FEB257A0-4FD3-495E-9A47-9E1649755445}
- {BA07EB2C-5246-EB72-153C-493C7E7412D2} =
{C7290227-E925-47E7-8B6B-A8B171645D58}
{22EF23A3-1566-446F-B696-9323F3B6F56C} =
{02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
{4A0C233A-90A0-42ED-8D8A-F21E7D5BB7EB} =
{22EF23A3-1566-446F-B696-9323F3B6F56C}
{85D2EC10-F461-02F4-83B6-E4FC320C244F} =
{4A0C233A-90A0-42ED-8D8A-F21E7D5BB7EB}
diff --git a/csharp/Benchmarks/Benchmarks.csproj
b/csharp/Benchmarks/Benchmarks.csproj
index 16b3b8d23..4facaca10 100644
--- a/csharp/Benchmarks/Benchmarks.csproj
+++ b/csharp/Benchmarks/Benchmarks.csproj
@@ -7,7 +7,6 @@
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<ProcessArchitecture>$([System.Runtime.InteropServices.RuntimeInformation]::ProcessArchitecture.ToString().ToLowerInvariant())</ProcessArchitecture>
-
<StartupObject>Apache.Arrow.Adbc.Benchmarks.CloudFetchBenchmarkRunner</StartupObject>
</PropertyGroup>
<ItemGroup>
@@ -23,7 +22,6 @@
<ItemGroup>
<ProjectReference
Include="..\src\Apache.Arrow.Adbc\Apache.Arrow.Adbc.csproj" />
<ProjectReference Include="..\src\Client\Apache.Arrow.Adbc.Client.csproj"
/>
- <ProjectReference
Include="..\src\Drivers\Databricks\Apache.Arrow.Adbc.Drivers.Databricks.csproj"
/>
<ProjectReference
Include="..\test\Apache.Arrow.Adbc.Tests\Apache.Arrow.Adbc.Testing.csproj" />
</ItemGroup>
diff --git a/csharp/Benchmarks/CloudFetchBenchmarkRunner.cs
b/csharp/Benchmarks/CloudFetchBenchmarkRunner.cs
deleted file mode 100644
index fc081bcb5..000000000
--- a/csharp/Benchmarks/CloudFetchBenchmarkRunner.cs
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
-* Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements. See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You under the Apache License, Version 2.0
-* (the "License"); you may not use this file except in compliance with
-* the License. You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-using Apache.Arrow.Adbc.Benchmarks.Databricks;
-using BenchmarkDotNet.Columns;
-using BenchmarkDotNet.Configs;
-using BenchmarkDotNet.Running;
-#if NET472
-using System.Net;
-#endif
-
-namespace Apache.Arrow.Adbc.Benchmarks
-{
- /// <summary>
- /// Standalone runner for CloudFetch benchmarks only.
- /// Usage: dotnet run -c Release --framework net8.0
CloudFetchBenchmarkRunner
- /// </summary>
- public class CloudFetchBenchmarkRunner
- {
- public static void Main(string[] args)
- {
-#if NET472
- // Enable TLS 1.2/1.3 for .NET Framework 4.7.2 (required for
modern HTTPS endpoints)
- ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
| SecurityProtocolType.Tls11 | (SecurityProtocolType)3072; // 3072 = Tls13
-#endif
- // Configure to include custom metric columns and hide confusing
error column
- var config = DefaultConfig.Instance
- .AddColumn(new PeakMemoryColumn())
- .AddColumn(new TotalRowsColumn())
- .AddColumn(new TotalBatchesColumn())
- .HideColumns("Error", "StdDev"); // Hide statistical columns
that are confusing with few iterations
-
- // Run only the real E2E CloudFetch benchmark
- var summary = BenchmarkSwitcher.FromTypes(new[] {
- typeof(CloudFetchRealE2EBenchmark) // Real E2E with
Databricks (requires credentials)
- }).Run(args, config);
- }
- }
-}
diff --git a/csharp/Benchmarks/Databricks/CloudFetchRealE2EBenchmark.cs
b/csharp/Benchmarks/Databricks/CloudFetchRealE2EBenchmark.cs
deleted file mode 100644
index 05c0bcb51..000000000
--- a/csharp/Benchmarks/Databricks/CloudFetchRealE2EBenchmark.cs
+++ /dev/null
@@ -1,461 +0,0 @@
-/*
-* Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements. See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You under the Apache License, Version 2.0
-* (the "License"); you may not use this file except in compliance with
-* the License. You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-using System;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.IO;
-using System.Text.Json;
-using System.Threading;
-using System.Threading.Tasks;
-using Apache.Arrow.Adbc.Drivers.Apache.Spark;
-using Apache.Arrow.Adbc.Drivers.Databricks;
-using Apache.Arrow.Ipc;
-using BenchmarkDotNet.Attributes;
-using BenchmarkDotNet.Columns;
-using BenchmarkDotNet.Reports;
-using BenchmarkDotNet.Running;
-#if NET472
-using System.Net;
-#endif
-
-namespace Apache.Arrow.Adbc.Benchmarks.Databricks
-{
- /// <summary>
- /// Custom column to display peak memory usage in the benchmark results
table.
- /// </summary>
- public class PeakMemoryColumn : IColumn
- {
- public string Id => nameof(PeakMemoryColumn);
- public string ColumnName => "Peak Memory (MB)";
- public string Legend => "Peak working set memory during benchmark
execution";
- public UnitType UnitType => UnitType.Size;
- public bool AlwaysShow => true;
- public ColumnCategory Category => ColumnCategory.Custom;
- public int PriorityInCategory => 0;
- public bool IsNumeric => true;
- public bool IsAvailable(Summary summary) => true;
- public bool IsDefault(Summary summary, BenchmarkCase benchmarkCase) =>
false;
-
- public string GetValue(Summary summary, BenchmarkCase benchmarkCase)
- {
- // Try CloudFetchRealE2EBenchmark (includes parameters in key)
- if (benchmarkCase.Descriptor.Type ==
typeof(CloudFetchRealE2EBenchmark))
- {
- try
- {
- // Extract ReadDelayMs parameter
- var readDelayParam =
benchmarkCase.Parameters["ReadDelayMs"];
- string key = $"ExecuteLargeQuery_{readDelayParam}";
-
- // Read metrics from temp file
- string metricsFilePath = Path.Combine(Path.GetTempPath(),
"cloudfetch_benchmark_metrics.json");
- if (File.Exists(metricsFilePath))
- {
- string json = File.ReadAllText(metricsFilePath);
- var allMetrics =
JsonSerializer.Deserialize<Dictionary<string, BenchmarkMetrics>>(json);
- if (allMetrics != null && allMetrics.TryGetValue(key,
out var metrics))
- {
- return $"{metrics.PeakMemoryMB:F2}";
- }
- }
- }
- catch (Exception ex)
- {
- return $"Error: {ex.Message}";
- }
- }
-
- return "See previous console output";
- }
-
- public string GetValue(Summary summary, BenchmarkCase benchmarkCase,
SummaryStyle style)
- {
- return GetValue(summary, benchmarkCase);
- }
-
- public override string ToString() => ColumnName;
- }
-
- /// <summary>
- /// Custom column to display total rows processed in the benchmark results
table.
- /// </summary>
- public class TotalRowsColumn : IColumn
- {
- public string Id => nameof(TotalRowsColumn);
- public string ColumnName => "Total Rows";
- public string Legend => "Total number of rows processed during
benchmark execution";
- public UnitType UnitType => UnitType.Dimensionless;
- public bool AlwaysShow => true;
- public ColumnCategory Category => ColumnCategory.Custom;
- public int PriorityInCategory => 1;
- public bool IsNumeric => true;
- public bool IsAvailable(Summary summary) => true;
- public bool IsDefault(Summary summary, BenchmarkCase benchmarkCase) =>
false;
-
- public string GetValue(Summary summary, BenchmarkCase benchmarkCase)
- {
- if (benchmarkCase.Descriptor.Type ==
typeof(CloudFetchRealE2EBenchmark))
- {
- try
- {
- var readDelayParam =
benchmarkCase.Parameters["ReadDelayMs"];
- string key = $"ExecuteLargeQuery_{readDelayParam}";
-
- string metricsFilePath = Path.Combine(Path.GetTempPath(),
"cloudfetch_benchmark_metrics.json");
- if (File.Exists(metricsFilePath))
- {
- string json = File.ReadAllText(metricsFilePath);
- var allMetrics =
JsonSerializer.Deserialize<Dictionary<string, BenchmarkMetrics>>(json);
- if (allMetrics != null && allMetrics.TryGetValue(key,
out var metrics))
- {
- return $"{metrics.TotalRows:N0}";
- }
- }
- }
- catch (Exception ex)
- {
- return $"Error: {ex.Message}";
- }
- }
-
- return "N/A";
- }
-
- public string GetValue(Summary summary, BenchmarkCase benchmarkCase,
SummaryStyle style)
- {
- return GetValue(summary, benchmarkCase);
- }
-
- public override string ToString() => ColumnName;
- }
-
- /// <summary>
- /// Custom column to display total batches processed in the benchmark
results table.
- /// </summary>
- public class TotalBatchesColumn : IColumn
- {
- public string Id => nameof(TotalBatchesColumn);
- public string ColumnName => "Total Batches";
- public string Legend => "Total number of record batches processed
during benchmark execution";
- public UnitType UnitType => UnitType.Dimensionless;
- public bool AlwaysShow => true;
- public ColumnCategory Category => ColumnCategory.Custom;
- public int PriorityInCategory => 2;
- public bool IsNumeric => true;
- public bool IsAvailable(Summary summary) => true;
- public bool IsDefault(Summary summary, BenchmarkCase benchmarkCase) =>
false;
-
- public string GetValue(Summary summary, BenchmarkCase benchmarkCase)
- {
- if (benchmarkCase.Descriptor.Type ==
typeof(CloudFetchRealE2EBenchmark))
- {
- try
- {
- var readDelayParam =
benchmarkCase.Parameters["ReadDelayMs"];
- string key = $"ExecuteLargeQuery_{readDelayParam}";
-
- string metricsFilePath = Path.Combine(Path.GetTempPath(),
"cloudfetch_benchmark_metrics.json");
- if (File.Exists(metricsFilePath))
- {
- string json = File.ReadAllText(metricsFilePath);
- var allMetrics =
JsonSerializer.Deserialize<Dictionary<string, BenchmarkMetrics>>(json);
- if (allMetrics != null && allMetrics.TryGetValue(key,
out var metrics))
- {
- return $"{metrics.TotalBatches:N0}";
- }
- }
- }
- catch (Exception ex)
- {
- return $"Error: {ex.Message}";
- }
- }
-
- return "N/A";
- }
-
- public string GetValue(Summary summary, BenchmarkCase benchmarkCase,
SummaryStyle style)
- {
- return GetValue(summary, benchmarkCase);
- }
-
- public override string ToString() => ColumnName;
- }
-
- /// <summary>
- /// Configuration model for Databricks test configuration JSON file.
- /// </summary>
- internal class DatabricksTestConfig
- {
- public string? uri { get; set; }
- public string? token { get; set; }
- public string? query { get; set; }
- public string? type { get; set; }
- public string? catalog { get; set; }
- public string? schema { get; set; }
- }
-
- /// <summary>
- /// Benchmark metrics captured during execution.
- /// </summary>
- internal class BenchmarkMetrics
- {
- public double PeakMemoryMB { get; set; }
- public long TotalRows { get; set; }
- public long TotalBatches { get; set; }
- }
-
- /// <summary>
- /// Real E2E performance benchmark for Databricks CloudFetch with actual
cluster.
- ///
- /// Prerequisites:
- /// - Set DATABRICKS_TEST_CONFIG_FILE environment variable
- /// - Config file should contain cluster connection details
- ///
- /// Run with: dotnet run -c Release --project Benchmarks/Benchmarks.csproj
--framework net8.0 -- --filter "*CloudFetchRealE2E*" --job dry
- ///
- /// Measures:
- /// - Peak memory usage
- /// - Total allocations
- /// - GC collections
- /// - Query execution time
- /// - Row processing throughput
- ///
- /// Parameters:
- /// - ReadDelayMs: Fixed at 5 milliseconds per 10K rows to simulate Power
BI consumption
- /// </summary>
- [MemoryDiagnoser]
- [GcServer(true)]
- [SimpleJob(warmupCount: 1, iterationCount: 3)]
- [MinColumn, MaxColumn, MeanColumn, MedianColumn]
- public class CloudFetchRealE2EBenchmark
- {
- // Static dictionary to store peak memory results for the custom column
- public static readonly Dictionary<string, double> PeakMemoryResults =
new Dictionary<string, double>();
-
- private AdbcConnection? _connection;
- private Process _currentProcess = null!;
- private long _peakMemoryBytes;
- private DatabricksTestConfig _testConfig = null!;
- private string _hostname = null!;
- private string _httpPath = null!;
- private long _totalRows;
- private long _totalBatches;
- private static readonly string _metricsFilePath =
Path.Combine(Path.GetTempPath(), "cloudfetch_benchmark_metrics.json");
-
- [Params(5)] // Read delay in milliseconds per 10K rows (5 = simulate
Power BI)
- public int ReadDelayMs { get; set; }
-
- [GlobalSetup]
- public void GlobalSetup()
- {
-#if NET472
- // Enable TLS 1.2/1.3 for .NET Framework 4.7.2 (required for
modern HTTPS endpoints)
- ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
| SecurityProtocolType.Tls11 | (SecurityProtocolType)3072; // 3072 = Tls13
-#endif
- // Check if Databricks config is available
- string? configFile =
Environment.GetEnvironmentVariable("DATABRICKS_TEST_CONFIG_FILE");
- if (string.IsNullOrEmpty(configFile))
- {
- throw new InvalidOperationException(
- "DATABRICKS_TEST_CONFIG_FILE environment variable must be
set. " +
- "Set it to the path of your Databricks test configuration
JSON file.");
- }
-
- // Read and parse config file
- string configJson = File.ReadAllText(configFile);
- _testConfig =
JsonSerializer.Deserialize<DatabricksTestConfig>(configJson)
- ?? throw new InvalidOperationException("Failed to parse config
file");
-
- if (string.IsNullOrEmpty(_testConfig.uri) ||
string.IsNullOrEmpty(_testConfig.token))
- {
- throw new InvalidOperationException("Config file must contain
'uri' and 'token' fields");
- }
-
- if (string.IsNullOrEmpty(_testConfig.query))
- {
- throw new InvalidOperationException("Config file must contain
'query' field");
- }
-
- // Parse URI to extract hostname and http_path
- // Format: https://hostname/sql/1.0/warehouses/xxx
- var uri = new Uri(_testConfig.uri);
- _hostname = uri.Host;
- _httpPath = uri.PathAndQuery;
-
- _currentProcess = Process.GetCurrentProcess();
- Console.WriteLine($"Loaded config from: {configFile}");
- Console.WriteLine($"Hostname: {_hostname}");
- Console.WriteLine($"HTTP Path: {_httpPath}");
- Console.WriteLine($"Query: {_testConfig.query}");
- Console.WriteLine($"Benchmark will test CloudFetch with
{ReadDelayMs}ms per 10K rows read delay");
- }
-
- [IterationSetup]
- public void IterationSetup()
- {
- // Create connection for this iteration using config values
- var parameters = new Dictionary<string, string>
- {
- [AdbcOptions.Uri] = _testConfig.uri!,
- [SparkParameters.Token] = _testConfig.token!,
- [DatabricksParameters.UseCloudFetch] = "true",
- [DatabricksParameters.EnableDirectResults] = "true",
- [DatabricksParameters.CanDecompressLz4] = "true",
- [DatabricksParameters.MaxBytesPerFile] = "10485760", // 10MB
per file
- };
-
- var driver = new DatabricksDriver();
- var database = driver.Open(parameters);
- _connection = database.Connect(parameters);
-
- // Reset peak memory tracking
- GC.Collect(2, GCCollectionMode.Forced, blocking: true, compacting:
false);
- GC.WaitForPendingFinalizers();
- GC.Collect(2, GCCollectionMode.Forced, blocking: true, compacting:
false);
- _currentProcess.Refresh();
- _peakMemoryBytes = _currentProcess.WorkingSet64;
- }
-
- [IterationCleanup]
- public void IterationCleanup()
- {
- _connection?.Dispose();
- _connection = null;
-
- // Calculate and print metrics for this iteration
- double peakMemoryMB = _peakMemoryBytes / 1024.0 / 1024.0;
- Console.WriteLine($"CloudFetch E2E [Delay={ReadDelayMs}ms/10K
rows] - Peak memory: {peakMemoryMB:F2} MB, Total rows: {_totalRows:N0}, Total
batches: {_totalBatches:N0}");
-
- // Store in static dictionary for the custom column (key includes
parameter)
- string key = $"ExecuteLargeQuery_{ReadDelayMs}";
- PeakMemoryResults[key] = peakMemoryMB;
-
- // Write metrics to temp file for custom columns to read
- try
- {
- // Read existing metrics file if it exists
- Dictionary<string, BenchmarkMetrics> allMetrics;
- if (File.Exists(_metricsFilePath))
- {
- string existingJson = File.ReadAllText(_metricsFilePath);
- allMetrics = JsonSerializer.Deserialize<Dictionary<string,
BenchmarkMetrics>>(existingJson)
- ?? new Dictionary<string, BenchmarkMetrics>();
- }
- else
- {
- allMetrics = new Dictionary<string, BenchmarkMetrics>();
- }
-
- // Add or update metrics for this benchmark run
- allMetrics[key] = new BenchmarkMetrics
- {
- PeakMemoryMB = peakMemoryMB,
- TotalRows = _totalRows,
- TotalBatches = _totalBatches
- };
-
- // Write back to file
- string json = JsonSerializer.Serialize(allMetrics, new
JsonSerializerOptions { WriteIndented = true });
- File.WriteAllText(_metricsFilePath, json);
- Console.WriteLine($"Metrics written to: {_metricsFilePath}");
- }
- catch (Exception ex)
- {
- Console.WriteLine($"Warning: Failed to write metrics file:
{ex.Message}");
- }
- }
-
- /// <summary>
- /// Execute a large query against Databricks and consume all result
batches.
- /// Simulates client behavior like Power BI reading data.
- /// Uses the query from the config file.
- /// </summary>
- [Benchmark]
- public async Task<long> ExecuteLargeQuery()
- {
- if (_connection == null)
- {
- throw new InvalidOperationException("Connection not
initialized");
- }
-
- // Execute query from config file
- var statement = _connection.CreateStatement();
- statement.SqlQuery = _testConfig.query;
-
- var result = await statement.ExecuteQueryAsync();
- if (result.Stream == null)
- {
- throw new InvalidOperationException("Result stream is null");
- }
-
- // Read all batches and track peak memory
- _totalRows = 0;
- _totalBatches = 0;
- RecordBatch? batch;
-
- while ((batch = await result.Stream.ReadNextRecordBatchAsync()) !=
null)
- {
- _totalRows += batch.Length;
- _totalBatches++;
-
- // Track peak memory periodically
- if (_totalBatches % 10 == 0)
- {
- TrackPeakMemory();
- }
-
- // Simulate Power BI processing delay if configured
- // Delay is proportional to batch size: ReadDelayMs per 10K
rows
- if (ReadDelayMs > 0)
- {
- int delayForBatch = (int)((batch.Length / 10000.0) *
ReadDelayMs);
- if (delayForBatch > 0)
- {
- Thread.Sleep(delayForBatch);
- }
- }
-
- batch.Dispose();
- }
-
- // Final peak memory check
- TrackPeakMemory();
-
- statement.Dispose();
- return _totalRows;
- }
-
- private void TrackPeakMemory()
- {
- _currentProcess.Refresh();
- long currentMemory = _currentProcess.WorkingSet64;
- if (currentMemory > _peakMemoryBytes)
- {
- _peakMemoryBytes = currentMemory;
- }
- }
-
- [GlobalCleanup]
- public void GlobalCleanup()
- {
- GC.Collect(2, GCCollectionMode.Forced, blocking: true, compacting:
true);
- GC.WaitForPendingFinalizers();
- }
- }
-}
diff --git a/csharp/Benchmarks/Databricks/README.md
b/csharp/Benchmarks/Databricks/README.md
deleted file mode 100644
index ad2ca6f0d..000000000
--- a/csharp/Benchmarks/Databricks/README.md
+++ /dev/null
@@ -1,168 +0,0 @@
-<!---
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
--->
-
-# Databricks CloudFetch E2E Benchmark
-
-Real end-to-end benchmark for measuring memory usage and performance of the
Databricks CloudFetch implementation against an actual Databricks cluster.
-
-## Overview
-
-This benchmark tests the complete CloudFetch flow with real queries against a
Databricks warehouse:
-- Full end-to-end CloudFetch flow (query execution, downloads, LZ4
decompression, batch consumption)
-- Real data from Databricks tables
-- Memory usage with actual network I/O
-- Power BI consumption simulation with batch-proportional delays
-
-## Benchmark
-
-### CloudFetchRealE2EBenchmark
-
-**Real end-to-end benchmark against actual Databricks cluster:**
-
-**Parameters:**
-- `ReadDelayMs`: Fixed at 5ms per 10K rows to simulate Power BI processing
delays
-
-**Method:**
-- `ExecuteLargeQuery`: Executes the query specified in the config file, reads
all batches with Power BI-like processing delays
-
-**Prerequisites:**
-- Set `DATABRICKS_TEST_CONFIG_FILE` environment variable pointing to your
config JSON
-- Config file must contain:
- - `uri`: Full Databricks warehouse URI (e.g.,
`https://hostname/sql/1.0/warehouses/xxx`)
- - `token`: Databricks access token
- - `query`: SQL query to execute (this will be run by the benchmark)
-
-## Running the Benchmark
-
-### Run the CloudFetch E2E benchmark on .NET 8.0:
-```bash
-cd csharp
-export DATABRICKS_TEST_CONFIG_FILE=/path/to/databricks-config.json
-dotnet run -c Release --project Benchmarks/Benchmarks.csproj --framework
net8.0 -- --filter "*CloudFetchRealE2E*"
-```
-
-### Run the CloudFetch E2E benchmark on .NET Framework 4.7.2 (Windows only,
simulates Power BI):
-```powershell
-cd csharp
-$env:DATABRICKS_TEST_CONFIG_FILE="C:\path\to\databricks-config.json"
-dotnet run -c Release --project Benchmarks/Benchmarks.csproj --framework
net472 -- --filter "*CloudFetchRealE2E*"
-```
-
-**Note**: .NET Framework 4.7.2 is only available on Windows. This target is
useful for testing CloudFetch behavior in Power BI-like environments, as Power
BI Desktop runs on .NET Framework 4.7.2.
-
-### Real E2E Benchmark Configuration
-
-Create a JSON config file with your Databricks cluster details:
-
-```json
-{
- "uri": "https://your-workspace.cloud.databricks.com/sql/1.0/warehouses/xxx",
- "token": "dapi...",
- "query": "select * from main.tpcds_sf1_delta.catalog_sales",
- "type": "databricks"
-}
-```
-
-Then set the environment variable:
-```bash
-export DATABRICKS_TEST_CONFIG_FILE=/path/to/databricks-config.json
-```
-
-**Note**: The `query` field specifies the SQL query that will be executed
during the benchmark. Use a query that returns a large result set to properly
test CloudFetch performance.
-
-## Understanding the Results
-
-### Key Metrics:
-
-- **Peak Memory (MB)**: Maximum working set memory during execution
- - Displayed in the summary table via custom column
- - Printed to console output during each benchmark iteration
- - Shows the real memory footprint during CloudFetch operations
- - Stored in temp file for accurate reporting across BenchmarkDotNet processes
-
-- **Total Rows**: Total number of rows processed during the benchmark
- - Displayed in the summary table via custom column
- - Shows the actual data volume processed
-
-- **Total Batches**: Total number of Arrow RecordBatch objects processed
- - Displayed in the summary table via custom column
- - Indicates how data was chunked by CloudFetch
- - Useful for understanding batch size and network operation counts
-
-- **Allocated**: Total managed memory allocated during the operation
- - Lower is better for memory efficiency
-
-- **Gen0/Gen1/Gen2**: Number of garbage collections
- - Gen0: Frequent, low cost (short-lived objects)
- - Gen1/Gen2: Less frequent, higher cost (longer-lived objects)
- - LOH: Part of Gen2, objects >85KB
-
-- **Mean/Median**: Execution time statistics
- - Shows the end-to-end time including query execution, CloudFetch downloads,
LZ4 decompression, and batch consumption
-
-### Example Output
-
-**Console output during benchmark execution:**
-```
-Loaded config from: /path/to/databricks-config.json
-Hostname: adb-6436897454825492.12.azuredatabricks.net
-HTTP Path: /sql/1.0/warehouses/2f03dd43e35e2aa0
-Query: select * from main.tpcds_sf1_delta.catalog_sales
-Benchmark will test CloudFetch with 5ms per 10K rows read delay
-
-// Warmup
-CloudFetch E2E [Delay=5ms/10K rows] - Peak memory: 272.97 MB, Total rows:
1,441,548, Total batches: 145
-Metrics written to: /tmp/cloudfetch_benchmark_metrics.json
-WorkloadWarmup 1: 1 op, 11566591709.00 ns, 11.5666 s/op
-
-// Actual iterations
-CloudFetch E2E [Delay=5ms/10K rows] - Peak memory: 249.11 MB, Total rows:
1,441,548, Total batches: 145
-Metrics written to: /tmp/cloudfetch_benchmark_metrics.json
-WorkloadResult 1: 1 op, 8752445353.00 ns, 8.7524 s/op
-
-CloudFetch E2E [Delay=5ms/10K rows] - Peak memory: 261.95 MB, Total rows:
1,441,548, Total batches: 145
-Metrics written to: /tmp/cloudfetch_benchmark_metrics.json
-WorkloadResult 2: 1 op, 9794630771.00 ns, 9.7946 s/op
-
-CloudFetch E2E [Delay=5ms/10K rows] - Peak memory: 258.39 MB, Total rows:
1,441,548, Total batches: 145
-Metrics written to: /tmp/cloudfetch_benchmark_metrics.json
-WorkloadResult 3: 1 op, 9017280271.00 ns, 9.0173 s/op
-```
-
-**Summary table:**
-```
-BenchmarkDotNet v0.15.5, macOS Sequoia 15.7.1 (24G231) [Darwin 24.6.0]
-Apple M1 Max, 1 CPU, 10 logical and 10 physical cores
-.NET SDK 8.0.407
- [Host] : .NET 8.0.19 (8.0.19, 8.0.1925.36514), Arm64 RyuJIT armv8.0-a
-
-| Method | ReadDelayMs | Mean | Min | Max | Median |
Peak Memory (MB) | Total Rows | Total Batches | Gen0 | Gen1 | Gen2
| Allocated |
-|------------------ |------------
|--------:|--------:|--------:|--------:|-----------------:|-----------:|--------------:|-----------:|-----------:|-----------:|----------:|
-| ExecuteLargeQuery | 5 | 9.19 s | 8.75 s | 9.79 s | 9.02 s |
256.48 | 1,441,548 | 145 | 28000.0000 | 28000.0000 |
28000.0000 | 1.78 GB |
-```
-
-**Key Metrics:**
-- **E2E Time**: 8.75-9.79 seconds (includes query execution, CloudFetch
downloads, LZ4 decompression, batch consumption)
-- **Peak Memory**: 256.48 MB (tracked via Process.WorkingSet64, displayed via
custom column)
-- **Total Rows**: 1,441,548 rows processed
-- **Total Batches**: 145 Arrow RecordBatch objects (average ~9,941 rows per
batch)
-- **Total Allocated**: 1.78 GB managed memory
-- **GC Collections**: 28K Gen0/Gen1/Gen2 collections
-
-**Note**: Metrics (Peak Memory, Total Rows, Total Batches) are stored in a
temporary JSON file (`/tmp/cloudfetch_benchmark_metrics.json` on Unix,
`%TEMP%\cloudfetch_benchmark_metrics.json` on Windows) during benchmark
execution. Custom BenchmarkDotNet columns read from this file to display
accurate values in the summary table.
diff --git
a/csharp/src/Drivers/Databricks/Apache.Arrow.Adbc.Drivers.Databricks.csproj
b/csharp/src/Drivers/Databricks/Apache.Arrow.Adbc.Drivers.Databricks.csproj
index 0c20f4f56..ab006361d 100644
--- a/csharp/src/Drivers/Databricks/Apache.Arrow.Adbc.Drivers.Databricks.csproj
+++ b/csharp/src/Drivers/Databricks/Apache.Arrow.Adbc.Drivers.Databricks.csproj
@@ -15,7 +15,4 @@
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
- <ItemGroup>
- <ProjectReference
Include="..\Apache\Apache.Arrow.Adbc.Drivers.Apache.csproj" />
- </ItemGroup>
</Project>
diff --git
a/csharp/test/Drivers/Apache/Apache.Arrow.Adbc.Tests.Drivers.Apache.csproj
b/csharp/test/Drivers/Apache/Apache.Arrow.Adbc.Tests.Drivers.Apache.csproj
index 76aaa01c9..ca6e6c189 100644
--- a/csharp/test/Drivers/Apache/Apache.Arrow.Adbc.Tests.Drivers.Apache.csproj
+++ b/csharp/test/Drivers/Apache/Apache.Arrow.Adbc.Tests.Drivers.Apache.csproj
@@ -18,7 +18,6 @@
</ItemGroup>
<ItemGroup>
- <ProjectReference
Include="..\..\..\src\Drivers\Apache\Apache.Arrow.Adbc.Drivers.Apache.csproj" />
<ProjectReference
Include="..\..\Apache.Arrow.Adbc.Tests\Apache.Arrow.Adbc.Testing.csproj" />
</ItemGroup>
diff --git
a/csharp/test/Drivers/BigQuery/Apache.Arrow.Adbc.Tests.Drivers.BigQuery.csproj
b/csharp/test/Drivers/BigQuery/Apache.Arrow.Adbc.Tests.Drivers.BigQuery.csproj
index ec5cff17d..c5aee9791 100644
---
a/csharp/test/Drivers/BigQuery/Apache.Arrow.Adbc.Tests.Drivers.BigQuery.csproj
+++
b/csharp/test/Drivers/BigQuery/Apache.Arrow.Adbc.Tests.Drivers.BigQuery.csproj
@@ -17,7 +17,6 @@
<ItemGroup>
<ProjectReference
Include="..\..\..\src\Apache.Arrow.Adbc\Apache.Arrow.Adbc.csproj" />
<ProjectReference
Include="..\..\..\src\Client\Apache.Arrow.Adbc.Client.csproj" />
- <ProjectReference
Include="..\..\..\src\Drivers\BigQuery\Apache.Arrow.Adbc.Drivers.BigQuery.csproj"
/>
<ProjectReference
Include="..\..\Apache.Arrow.Adbc.Tests\Apache.Arrow.Adbc.Testing.csproj" />
</ItemGroup>
<ItemGroup>
diff --git
a/csharp/test/Drivers/Databricks/Apache.Arrow.Adbc.Tests.Drivers.Databricks.csproj
b/csharp/test/Drivers/Databricks/Apache.Arrow.Adbc.Tests.Drivers.Databricks.csproj
index eedd1a230..ec04228d1 100644
---
a/csharp/test/Drivers/Databricks/Apache.Arrow.Adbc.Tests.Drivers.Databricks.csproj
+++
b/csharp/test/Drivers/Databricks/Apache.Arrow.Adbc.Tests.Drivers.Databricks.csproj
@@ -18,9 +18,7 @@
</ItemGroup>
<ItemGroup>
- <ProjectReference
Include="..\..\..\src\Drivers\Databricks\Apache.Arrow.Adbc.Drivers.Databricks.csproj"
/>
<ProjectReference
Include="..\..\Apache.Arrow.Adbc.Tests\Apache.Arrow.Adbc.Testing.csproj" />
- <ProjectReference
Include="..\Apache\Apache.Arrow.Adbc.Tests.Drivers.Apache.csproj" />
</ItemGroup>
<ItemGroup>
diff --git
a/csharp/test/Drivers/FlightSql/Apache.Arrow.Adbc.Tests.Drivers.FlightSql.csproj
b/csharp/test/Drivers/FlightSql/Apache.Arrow.Adbc.Tests.Drivers.FlightSql.csproj
index b17539ede..0876d7ecd 100644
---
a/csharp/test/Drivers/FlightSql/Apache.Arrow.Adbc.Tests.Drivers.FlightSql.csproj
+++
b/csharp/test/Drivers/FlightSql/Apache.Arrow.Adbc.Tests.Drivers.FlightSql.csproj
@@ -16,7 +16,6 @@
<ItemGroup>
<ProjectReference
Include="..\..\..\src\Apache.Arrow.Adbc\Apache.Arrow.Adbc.csproj" />
<ProjectReference
Include="..\..\..\src\Client\Apache.Arrow.Adbc.Client.csproj" />
- <ProjectReference
Include="..\..\..\src\Drivers\FlightSql\Apache.Arrow.Adbc.Drivers.FlightSql.csproj"
/>
<ProjectReference
Include="..\..\Apache.Arrow.Adbc.Tests\Apache.Arrow.Adbc.Testing.csproj" />
</ItemGroup>
<ItemGroup>