MCPcopy Create free account
hub / github.com/ajitpratap0/GoSQLX / Example_analyzeQuery

Function Example_analyzeQuery

pkg/gosqlx/example_test.go:602–631  ·  view source on GitHub ↗

Example_analyzeQuery demonstrates using extraction for query analysis.

()

Source from the content-addressed store, hash-verified

600
601// Example_analyzeQuery demonstrates using extraction for query analysis.
602func Example_analyzeQuery() {
603 sql := `SELECT
604 u.username,
605 COUNT(o.id) as total_orders,
606 SUM(o.amount) as total_spent,
607 UPPER(u.email) as email_upper
608 FROM users u
609 LEFT JOIN orders o ON u.id = o.user_id
610 WHERE u.active = true AND o.status = 'completed'
611 GROUP BY u.id, u.username, u.email
612 HAVING COUNT(o.id) > 10
613 ORDER BY total_spent DESC`
614
615 ast, err := gosqlx.Parse(sql)
616 if err != nil {
617 log.Fatal(err)
618 }
619
620 metadata := gosqlx.ExtractMetadata(ast)
621
622 fmt.Printf("Query Analysis:\n")
623 fmt.Printf("- Joins %d tables\n", len(metadata.Tables))
624 fmt.Printf("- References %d columns\n", len(metadata.Columns))
625 fmt.Printf("- Uses %d functions\n", len(metadata.Functions))
626 // Output:
627 // Query Analysis:
628 // - Joins 2 tables
629 // - References 8 columns
630 // - Uses 3 functions
631}
632
633// Example_extractFromCTE demonstrates extracting from queries with CTEs.
634func Example_extractFromCTE() {

Callers

nothing calls this directly

Calls 2

ParseFunction · 0.92
ExtractMetadataFunction · 0.92

Tested by

no test coverage detected