t8y2/dbx · error
Hive driver does not expose HiveServer2 metadata RPCs
Error message
Hive driver does not expose HiveServer2 metadata RPCs
What it means
The driver wraps the underlying gohive connection via connection.Raw and expects it to implement gohive.MetadataProvider to run HiveServer2 metadata RPCs (GetHiveColumns, GetHiveTables, etc.). If the raw driver connection does not implement that interface, this error is returned — meaning the installed gohive version or underlying driver cannot expose HiveServer2 metadata RPCs.
Source
Thrown at agents/drivers/argo-go/metadata.go:188
}
func normalizeMetadataColumn(value string) string {
return strings.NewReplacer("_", "", "-", "", " ", "").Replace(strings.ToUpper(strings.TrimSpace(value)))
}
func (server *server) hiveMetadata(operation func(context.Context, gohive.MetadataProvider) (gohive.MetadataResult, error)) (gohive.MetadataResult, error) {
connection, err := server.requireConnection()
if err != nil {
return gohive.MetadataResult{}, err
}
ctx, cancel := context.WithCancel(context.Background())
server.setActiveOperation(cancel)
defer server.clearActiveOperation(cancel)
var result gohive.MetadataResult
err = connection.Raw(func(rawConnection any) error {
provider, ok := rawConnection.(gohive.MetadataProvider)
if !ok {
return errors.New("Hive driver does not expose HiveServer2 metadata RPCs")
}
var operationErr error
result, operationErr = operation(ctx, provider)
return operationErr
})
return result, err
}
func (server *server) connectionInfo() (map[string]any, error) {
version := ""
if result, err := server.executeQuery(queryOptions{SQL: "SELECT VERSION()", MaxRows: 1, TimeoutSecs: 5}); err == nil && len(result.Rows) > 0 && len(result.Rows[0]) > 0 {
version = stringValue(result.Rows[0][0])
}
username := server.config.Username
if result, err := server.executeQuery(queryOptions{SQL: "SELECT CURRENT_USER()", MaxRows: 1, TimeoutSecs: 5}); err == nil && len(result.Rows) > 0 && len(result.Rows[0]) > 0 {
if current := stringValue(result.Rows[0][0]); current != "" {
username = current
}View on GitHub (pinned to c0390bff16)
Solutions
- Upgrade the gohive dependency to a version that implements gohive.MetadataProvider
- Remove or bypass any wrapper around the driver connection so Raw returns the actual gohive connection
- Verify the connection is genuinely a gohive Hive connection, not another driver type
- Add a fallback metadata path (SHOW queries) when the interface is unavailable
Example fix
// before _ = "github.com/beltran/gohive v0.x (no MetadataProvider)" // after import "github.com/beltran/gohive" // go.mod updated to a version with gohive.MetadataProvider // go get github.com/beltran/gohive@latest
Defensive patterns
Strategy: type-guard
Type guard
func supportsMetadata(raw any) bool {
_, ok := raw.(gohive.MetadataProvider)
return ok
}
// usage:
// var raw any
// _ = connection.Raw(func(r any) error { raw = r; return nil })
// if !supportsMetadata(raw) { /* fall back to SHOW-based metadata */ } Try / catch
result, err := server.getColumns(schema, table)
if err != nil && strings.Contains(err.Error(), "does not expose HiveServer2 metadata RPCs") {
// fall back to DESCRIBE-formatted / SHOW COLUMNS queries
} Prevention
- Pin gohive to a version implementing gohive.MetadataProvider
- Do not wrap the gohive connection with decorators that break the type assertion
- Test metadata RPC availability at startup
- Implement SHOW-query fallbacks for older drivers
When it happens
Trigger: Calling any metadata function that funnels through hiveMetadata (getColumns, getTableComment, listTables metadata paths) when the raw connection obtained from connection.Raw fails the gohive.MetadataProvider type assertion.
Common situations: Using an older gohive version that predates the MetadataProvider interface; a wrapped/proxied driver (tracing middleware, database/sql decorator) that hides the real gohive connection type; wrong dialect connection stored on the server.
Related errors
- Object source is not supported
- Object source is not supported
- Object source is not supported
- JDBC physical operation failed: <operation>
- Unsupported object type: {objectType}
AI-assisted analysis of t8y2/dbx@c0390bff16 (2026-09-05).
Data as JSON: /api/errors/bc0d384dbee8203e.
Report an issue: GitHub.