Browse Source

Update describe.go

pull/7185/head
chrislu 1 month ago
parent
commit
49c0f74a1f
  1. 21
      weed/query/engine/describe.go

21
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 // Add support for DESCRIBE as a separate statement type
// This would be called from ExecuteSQL if we detect a DESCRIBE statement // This would be called from ExecuteSQL if we detect a DESCRIBE statement
func (e *SQLEngine) handleDescribeCommand(ctx context.Context, sql string) (*QueryResult, error) { 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)) parts := strings.Fields(strings.TrimSpace(sql))
if len(parts) < 2 { if len(parts) < 2 {
err := fmt.Errorf("DESCRIBE requires a table name") err := fmt.Errorf("DESCRIBE requires a table name")
return &QueryResult{Error: err}, err 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 := "" database := ""
// Handle database.table format // Handle database.table format
if strings.Contains(tableName, ".") { 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) return e.executeDescribeStatement(ctx, tableName, database)

Loading…
Cancel
Save