From 49c0f74a1f1b132aa73e58803cf4584d616e973e Mon Sep 17 00:00:00 2001 From: chrislu Date: Mon, 1 Sep 2025 08:31:58 -0700 Subject: [PATCH] Update describe.go --- weed/query/engine/describe.go | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/weed/query/engine/describe.go b/weed/query/engine/describe.go index b25c5d33c..5e21fe87b 100644 --- a/weed/query/engine/describe.go +++ b/weed/query/engine/describe.go @@ -83,22 +83,31 @@ func (e *SQLEngine) executeShowStatementWithDescribe(ctx context.Context, stmt * // Add support for DESCRIBE as a separate statement type // This would be called from ExecuteSQL if we detect a DESCRIBE statement func (e *SQLEngine) handleDescribeCommand(ctx context.Context, sql string) (*QueryResult, error) { - // Simple parsing for "DESCRIBE table_name" format - // TODO: Use proper SQL parser for more robust parsing + // Simple parsing for "DESCRIBE [TABLE] table_name" format + // Handle both "DESCRIBE table_name" and "DESCRIBE TABLE table_name" parts := strings.Fields(strings.TrimSpace(sql)) if len(parts) < 2 { err := fmt.Errorf("DESCRIBE requires a table name") return &QueryResult{Error: err}, err } - tableName := parts[1] + var tableName string + // Check if "TABLE" keyword is used + if len(parts) >= 3 && strings.ToUpper(parts[1]) == "TABLE" { + // "DESCRIBE TABLE table_name" format + tableName = parts[2] + } else { + // "DESCRIBE table_name" format + tableName = parts[1] + } + database := "" // Handle database.table format if strings.Contains(tableName, ".") { - parts := strings.SplitN(tableName, ".", 2) - database = parts[0] - tableName = parts[1] + dbTableParts := strings.SplitN(tableName, ".", 2) + database = dbTableParts[0] + tableName = dbTableParts[1] } return e.executeDescribeStatement(ctx, tableName, database)