|
17 | 17 |
|
18 | 18 | using System; |
19 | 19 | using System.Collections.Generic; |
| 20 | +using System.Diagnostics; |
20 | 21 | using System.Text.Json; |
21 | 22 | using System.Threading; |
22 | 23 | using System.Threading.Tasks; |
@@ -514,17 +515,28 @@ protected override async Task<QueryResult> GetColumnsExtendedAsync(CancellationT |
514 | 515 | string? fullTableName = BuildTableName(); |
515 | 516 | var canUseDescTableExtended = ((DatabricksConnection)Connection).CanUseDescTableExtended; |
516 | 517 |
|
517 | | - if (!canUseDescTableExtended || fullTableName == null) |
| 518 | + if (!canUseDescTableExtended || string.IsNullOrEmpty(fullTableName)) |
518 | 519 | { |
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, |
520 | 521 | // so fallback to base class implementation |
521 | 522 | return await base.GetColumnsExtendedAsync(cancellationToken); |
522 | 523 | } |
523 | 524 |
|
524 | 525 | string query = $"DESC TABLE EXTENDED {fullTableName} AS JSON"; |
525 | 526 | var descStmt = Connection.CreateStatement(); |
526 | 527 | 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 | + } |
528 | 540 |
|
529 | 541 | var columnMetadataSchema = CreateColumnMetadataSchema(); |
530 | 542 |
|
|
0 commit comments