Skip to content

Commit c9fa98f

Browse files
committed
Add fallback when query execution fails
1 parent 7d83b75 commit c9fa98f

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed

csharp/src/Drivers/Databricks/DatabricksStatement.cs

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
using System;
1919
using System.Collections.Generic;
20+
using System.Diagnostics;
2021
using System.Text.Json;
2122
using System.Threading;
2223
using System.Threading.Tasks;
@@ -514,17 +515,28 @@ protected override async Task<QueryResult> GetColumnsExtendedAsync(CancellationT
514515
string? fullTableName = BuildTableName();
515516
var canUseDescTableExtended = ((DatabricksConnection)Connection).CanUseDescTableExtended;
516517

517-
if (!canUseDescTableExtended || fullTableName == null)
518+
if (!canUseDescTableExtended || string.IsNullOrEmpty(fullTableName))
518519
{
519-
// When fullTableName is null, we cannot use metadata SQL query to get the info,
520+
// When fullTableName is empty, we cannot use metadata SQL query to get the info,
520521
// so fallback to base class implementation
521522
return await base.GetColumnsExtendedAsync(cancellationToken);
522523
}
523524

524525
string query = $"DESC TABLE EXTENDED {fullTableName} AS JSON";
525526
var descStmt = Connection.CreateStatement();
526527
descStmt.SqlQuery = query;
527-
var descResult = await descStmt.ExecuteQueryAsync();
528+
QueryResult descResult;
529+
530+
try
531+
{
532+
descResult = await descStmt.ExecuteQueryAsync();
533+
}
534+
catch (HiveServer2Exception ex) when (ex.Message.Contains("Error running query"))
535+
{
536+
// Fallback to base implementation
537+
Debug.WriteLine($"[ERROR] Failed to run {query}. Fallback to base::GetColumnsExtendedAsync.Error message:{ex.Message}");
538+
return await base.GetColumnsExtendedAsync(cancellationToken);
539+
}
528540

529541
var columnMetadataSchema = CreateColumnMetadataSchema();
530542

0 commit comments

Comments
 (0)