2121using AdbcDrivers . Databricks . Reader . CloudFetch ;
2222using Apache . Arrow . Adbc ;
2323using Apache . Arrow . Adbc . Tests ;
24+ using Apache . Arrow . Ipc ;
2425using Xunit ;
2526using Xunit . Abstractions ;
2627
@@ -47,6 +48,7 @@ public ChunkMetricsReaderTests(ITestOutputHelper? outputHelper)
4748 public async Task Reader_GetChunkMetrics_ReturnsNonNull ( )
4849 {
4950 AdbcConnection ? connection = null ;
51+ Apache . Arrow . Ipc . IArrowArrayStream ? reader = null ;
5052
5153 try
5254 {
@@ -67,7 +69,7 @@ public async Task Reader_GetChunkMetrics_ReturnsNonNull()
6769 statement . SqlQuery = "SELECT * FROM range(1000000)" ;
6870
6971 var result = statement . ExecuteQuery ( ) ;
70- var reader = result . Stream ;
72+ reader = result . Stream ;
7173
7274 // Consume at least one batch to ensure chunks are downloaded
7375 var batch = await reader . ReadNextRecordBatchAsync ( ) ;
@@ -87,11 +89,10 @@ public async Task Reader_GetChunkMetrics_ReturnsNonNull()
8789
8890 Assert . NotNull ( chunkMetrics ) ;
8991 OutputHelper ? . WriteLine ( $ "ChunkMetrics retrieved successfully from reader") ;
90-
91- reader ? . Dispose ( ) ;
9292 }
9393 finally
9494 {
95+ reader ? . Dispose ( ) ;
9596 connection ? . Dispose ( ) ;
9697 }
9798 }
@@ -104,6 +105,7 @@ public async Task Reader_GetChunkMetrics_ReturnsNonNull()
104105 public async Task Reader_GetChunkMetrics_MatchesDownloaderValues ( )
105106 {
106107 AdbcConnection ? connection = null ;
108+ Apache . Arrow . Ipc . IArrowArrayStream ? reader = null ;
107109
108110 try
109111 {
@@ -121,7 +123,7 @@ public async Task Reader_GetChunkMetrics_MatchesDownloaderValues()
121123 statement . SqlQuery = "SELECT * FROM range(1000000)" ;
122124
123125 var result = statement . ExecuteQuery ( ) ;
124- var reader = result . Stream ;
126+ reader = result . Stream ;
125127
126128 // Consume several batches to ensure multiple chunks are processed
127129 int batchCount = 0 ;
@@ -166,11 +168,10 @@ public async Task Reader_GetChunkMetrics_MatchesDownloaderValues()
166168 OutputHelper ? . WriteLine ( $ " InitialChunkLatencyMs: { initialChunkLatencyMs } ") ;
167169 OutputHelper ? . WriteLine ( $ " SlowestChunkLatencyMs: { slowestChunkLatencyMs } ") ;
168170 OutputHelper ? . WriteLine ( $ " SumChunksDownloadTimeMs: { sumChunksDownloadTimeMs } ") ;
169-
170- reader ? . Dispose ( ) ;
171171 }
172172 finally
173173 {
174+ reader ? . Dispose ( ) ;
174175 connection ? . Dispose ( ) ;
175176 }
176177 }
@@ -183,6 +184,7 @@ public async Task Reader_GetChunkMetrics_MatchesDownloaderValues()
183184 public async Task Reader_GetChunkMetrics_AvailableAfterBatchConsumption ( )
184185 {
185186 AdbcConnection ? connection = null ;
187+ Apache . Arrow . Ipc . IArrowArrayStream ? reader = null ;
186188
187189 try
188190 {
@@ -200,7 +202,7 @@ public async Task Reader_GetChunkMetrics_AvailableAfterBatchConsumption()
200202 statement . SqlQuery = "SELECT * FROM range(1000000)" ;
201203
202204 var result = statement . ExecuteQuery ( ) ;
203- var reader = result . Stream ;
205+ reader = result . Stream ;
204206
205207 // Act - Consume all batches
206208 int totalBatches = 0 ;
@@ -235,11 +237,10 @@ public async Task Reader_GetChunkMetrics_AvailableAfterBatchConsumption()
235237 OutputHelper ? . WriteLine ( $ "Metrics available after full consumption:") ;
236238 OutputHelper ? . WriteLine ( $ " TotalChunksPresent: { totalChunksPresent } ") ;
237239 OutputHelper ? . WriteLine ( $ " TotalChunksIterated: { totalChunksIterated } ") ;
238-
239- reader ? . Dispose ( ) ;
240240 }
241241 finally
242242 {
243+ reader ? . Dispose ( ) ;
243244 connection ? . Dispose ( ) ;
244245 }
245246 }
@@ -253,6 +254,7 @@ public async Task Reader_GetChunkMetrics_AvailableAfterBatchConsumption()
253254 public async Task Reader_GetChunkMetrics_ReflectsPartialConsumption ( )
254255 {
255256 AdbcConnection ? connection = null ;
257+ Apache . Arrow . Ipc . IArrowArrayStream ? reader = null ;
256258
257259 try
258260 {
@@ -270,7 +272,7 @@ public async Task Reader_GetChunkMetrics_ReflectsPartialConsumption()
270272 statement . SqlQuery = "SELECT * FROM range(2000000)" ; // Large enough to ensure multiple chunks
271273
272274 var result = statement . ExecuteQuery ( ) ;
273- var reader = result . Stream ;
275+ reader = result . Stream ;
274276
275277 // Act - Consume only a few batches, not all
276278 int batchesToConsume = 3 ;
@@ -306,11 +308,10 @@ public async Task Reader_GetChunkMetrics_ReflectsPartialConsumption()
306308 OutputHelper ? . WriteLine ( $ " Batches consumed: { batchCount } ") ;
307309 OutputHelper ? . WriteLine ( $ " TotalChunksPresent: { totalChunksPresent } ") ;
308310 OutputHelper ? . WriteLine ( $ " TotalChunksIterated: { totalChunksIterated } ") ;
309-
310- reader ? . Dispose ( ) ;
311311 }
312312 finally
313313 {
314+ reader ? . Dispose ( ) ;
314315 connection ? . Dispose ( ) ;
315316 }
316317 }
@@ -323,6 +324,7 @@ public async Task Reader_GetChunkMetrics_ReflectsPartialConsumption()
323324 public async Task Reader_GetChunkMetrics_ConsistentAcrossMultipleCalls ( )
324325 {
325326 AdbcConnection ? connection = null ;
327+ Apache . Arrow . Ipc . IArrowArrayStream ? reader = null ;
326328
327329 try
328330 {
@@ -338,7 +340,7 @@ public async Task Reader_GetChunkMetrics_ConsistentAcrossMultipleCalls()
338340 statement . SqlQuery = "SELECT * FROM range(1000000)" ;
339341
340342 var result = statement . ExecuteQuery ( ) ;
341- var reader = result . Stream ;
343+ reader = result . Stream ;
342344
343345 // Consume some batches
344346 var batch = await reader . ReadNextRecordBatchAsync ( ) ;
@@ -367,11 +369,10 @@ public async Task Reader_GetChunkMetrics_ConsistentAcrossMultipleCalls()
367369 Assert . Equal ( iterated1 , iterated2 ) ;
368370
369371 OutputHelper ? . WriteLine ( "Metrics are consistent across multiple calls" ) ;
370-
371- reader ? . Dispose ( ) ;
372372 }
373373 finally
374374 {
375+ reader ? . Dispose ( ) ;
375376 connection ? . Dispose ( ) ;
376377 }
377378 }
0 commit comments