t8y2/dbx · error
HiveServer2 metadata failed (%v); %s fallback failed: %w
Error message
HiveServer2 metadata failed (%v); %s fallback failed: %w
What it means
listTables first uses HiveServer2 JDBC metadata (GetHiveTables). If that fails, it falls back to SHOW TABLES / SHOW VIEWS SQL statements. This error fires when a required fallback statement also fails; the message names which fallback operation failed and embeds the original metadata error. SHOW VIEWS failures are tolerated (skipped) only when SHOW TABLES already succeeded and the error indicates the statement is unsupported on that engine.
Source
Thrown at agents/drivers/hive-go/metadata.go:358
}
if containsString(requestedTypes, "VIEW") || containsString(requestedTypes, "MATERIALIZED VIEW") {
fallbackQueries = append(fallbackQueries, fallbackQuery{
operation: "SHOW VIEWS",
statement: "SHOW VIEWS IN " + quoteHiveIdentifier(schema),
objectType: "VIEW",
})
}
objectsByName := make(map[string]tableInfo)
tableFallbackSucceeded := false
for _, fallback := range fallbackQueries {
result, err := server.executeQuery(queryOptions{SQL: fallback.statement, MaxRows: metadataQueryLimit})
if err != nil {
// Older Hive and Impala versions can list tables but do not support SHOW VIEWS.
// Keep the usable table result for mixed requests; explicit view requests still fail.
if fallback.objectType == "VIEW" && tableFallbackSucceeded && showViewsUnsupported(err) {
continue
}
return nil, fmt.Errorf("HiveServer2 metadata failed (%v); %s fallback failed: %w", metadataErr, fallback.operation, err)
}
if fallback.objectType == "TABLE" {
tableFallbackSucceeded = true
}
for _, row := range result.Rows {
name := showTablesRowName(result.Columns, row)
if name == "" || !metadataNameMatches(name, constraints.Filter) {
continue
}
candidate := tableInfo{Name: name, TableType: fallback.objectType, Comment: nil}
if existing, ok := objectsByName[name]; ok && existing.TableType == "VIEW" && candidate.TableType != "VIEW" {
continue
}
objectsByName[name] = candidate
}
}
values := make([]tableInfo, 0, len(objectsByName))
for _, value := range objectsByName {View on GitHub (pinned to c0390bff16)
Solutions
- Fix the metadata error shown first (usually permission or driver capability)
- If the failing fallback is SHOW VIEWS on an old engine, request tables and views separately or upgrade Hive
- Grant the user SHOW TABLES/SHOW VIEWS rights on the target schema
- Check schema name quoting — special characters must be properly escaped
Example fix
// before: requesting VIEW objects on an engine without SHOW VIEWS
{objectTypes: ["VIEW"]}
// after: request mixed types so the table fallback result is kept
{objectTypes: ["TABLE", "VIEW"]} Defensive patterns
Strategy: fallback
Try / catch
tables, err := server.listTables(schema, constraints)
if err != nil && strings.Contains(err.Error(), "SHOW VIEWS fallback failed") {
return server.listTables(schema, metadataListConstraints{ObjectTypes: []string{"TABLE"}})
} Prevention
- Avoid VIEW-only listings on Hive < 2.2 / Impala
- Confirm SHOW TABLES works in beeline as the connect user
- Align metadata and SQL permissions for the service account
When it happens
Trigger: Metadata API failure (permissions, unsupported driver path) combined with a failing SHOW TABLES or SHOW VIEWS — e.g. old Hive versions where SHOW VIEWS is unsupported for explicit view requests, or permission denial on the schema.
Common situations: Listing views on Hive 1.x/2.x or Impala that lacks SHOW VIEWS; schema-level permissions blocking both metadata and SHOW statements; quoting issues with special characters in the schema name.
Related errors
- SHOW DATABASES failed (%v); HiveServer2 metadata fallback fa
- HiveServer2 metadata failed (%v); %s fallback failed: %w
- HiveServer2 metadata failed (%v); DESCRIBE fallback failed:
- HiveServer2 table comment metadata failed (%v); table listin
- SHOW DATABASES failed (%v); HiveServer2 metadata fallback fa
AI-assisted analysis of t8y2/dbx@c0390bff16 (2026-09-05).
Data as JSON: /api/errors/e91c1692c94e4db6.
Report an issue: GitHub.