MCPcopy Create free account
hub / github.com/bytebase/bytebase / getRoutines

Function getRoutines

backend/plugin/db/starrocks/dump.go:490–533  ·  view source on GitHub ↗

getRoutines gets all routines of a database.

(db *sql.DB, dbName string)

Source from the content-addressed store, hash-verified

488
489// getRoutines gets all routines of a database.
490func getRoutines(db *sql.DB, dbName string) ([]*routineSchema, error) {
491 var routines []*routineSchema
492 for _, routineType := range []string{"FUNCTION", "PROCEDURE"} {
493 if err := func() error {
494 query := fmt.Sprintf("SHOW %s STATUS WHERE Db = '%s';", routineType, dbName)
495 rows, err := db.Query(query)
496 if err != nil {
497 return errors.Wrapf(err, "failed query %q", query)
498 }
499 defer rows.Close()
500
501 cols, err := rows.Columns()
502 if err != nil {
503 return err
504 }
505 var values []any
506 for i := 0; i < len(cols); i++ {
507 values = append(values, new(any))
508 }
509 for rows.Next() {
510 var r routineSchema
511 if err := rows.Scan(values...); err != nil {
512 return err
513 }
514 r.name = fmt.Sprintf("%s", *values[1].(*any))
515 r.routineType = fmt.Sprintf("%s", *values[2].(*any))
516
517 routines = append(routines, &r)
518 }
519 return rows.Err()
520 }(); err != nil {
521 return nil, err
522 }
523 }
524
525 for _, r := range routines {
526 stmt, err := getRoutineStmt(db, dbName, r.name, r.routineType)
527 if err != nil {
528 return nil, errors.Wrapf(err, "failed to call getRoutineStmt(%q, %q, %q)", dbName, r.name, r.routineType)
529 }
530 r.statement = stmt
531 }
532 return routines, nil
533}
534
535// getRoutineStmt gets the create statement of a routine.
536func getRoutineStmt(db *sql.DB, dbName, routineName, routineType string) (string, error) {

Callers 1

DumpMethod · 0.70

Calls 6

getRoutineStmtFunction · 0.85
ColumnsMethod · 0.80
ScanMethod · 0.80
QueryMethod · 0.65
CloseMethod · 0.65
NextMethod · 0.45

Tested by

no test coverage detected