MCPcopy Index your code
hub / github.com/bytebase/bytebase / getAllViewDependencies

Function getAllViewDependencies

backend/plugin/db/oracle/sync.go:1018–1055  ·  view source on GitHub ↗

getAllViewDependencies gets all view dependencies for a schema in a single query.

(txn *sql.Tx, schemaName string)

Source from the content-addressed store, hash-verified

1016
1017// getAllViewDependencies gets all view dependencies for a schema in a single query.
1018func getAllViewDependencies(txn *sql.Tx, schemaName string) (map[db.TableKey][]*storepb.DependencyColumn, error) {
1019 dependenciesMap := make(map[db.TableKey][]*storepb.DependencyColumn)
1020
1021 query := fmt.Sprintf(`
1022 SELECT
1023 NAME as view_name,
1024 REFERENCED_OWNER as source_schema,
1025 REFERENCED_NAME as source_table,
1026 '*' as column_name
1027 FROM ALL_DEPENDENCIES
1028 WHERE OWNER = '%s'
1029 AND TYPE = 'VIEW'
1030 AND REFERENCED_TYPE IN ('TABLE', 'VIEW')
1031 ORDER BY NAME, REFERENCED_OWNER, REFERENCED_NAME
1032 `, schemaName)
1033
1034 rows, err := txn.Query(query)
1035 if err != nil {
1036 return nil, err
1037 }
1038 defer rows.Close()
1039
1040 for rows.Next() {
1041 var viewName string
1042 dependencyColumn := &storepb.DependencyColumn{}
1043 if err := rows.Scan(&viewName, &dependencyColumn.Schema, &dependencyColumn.Table, &dependencyColumn.Column); err != nil {
1044 return nil, err
1045 }
1046
1047 key := db.TableKey{Schema: schemaName, Table: viewName}
1048 dependenciesMap[key] = append(dependenciesMap[key], dependencyColumn)
1049 }
1050 if err := rows.Err(); err != nil {
1051 return nil, err
1052 }
1053
1054 return dependenciesMap, nil
1055}
1056
1057// getAllMaterializedViewDependencies gets all materialized view dependencies for a schema in a single query.
1058func getAllMaterializedViewDependencies(txn *sql.Tx, schemaName string) (map[db.TableKey][]*storepb.DependencyColumn, error) {

Callers 1

getViewsFunction · 0.85

Calls 4

ScanMethod · 0.80
QueryMethod · 0.65
CloseMethod · 0.65
NextMethod · 0.45

Tested by

no test coverage detected