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

Function getAllMaterializedViewDependencies

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

getAllMaterializedViewDependencies gets all materialized view dependencies for a schema in a single query.

(txn *sql.Tx, schemaName string)

Source from the content-addressed store, hash-verified

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) {
1059 dependenciesMap := make(map[db.TableKey][]*storepb.DependencyColumn)
1060
1061 query := fmt.Sprintf(`
1062 SELECT
1063 NAME as mview_name,
1064 REFERENCED_OWNER as source_schema,
1065 REFERENCED_NAME as source_table,
1066 '*' as column_name
1067 FROM ALL_DEPENDENCIES
1068 WHERE OWNER = '%s'
1069 AND TYPE = 'MATERIALIZED VIEW'
1070 AND REFERENCED_TYPE IN ('TABLE', 'VIEW')
1071 ORDER BY NAME, REFERENCED_OWNER, REFERENCED_NAME
1072 `, schemaName)
1073
1074 rows, err := txn.Query(query)
1075 if err != nil {
1076 return nil, err
1077 }
1078 defer rows.Close()
1079
1080 for rows.Next() {
1081 var mviewName string
1082 dependencyColumn := &storepb.DependencyColumn{}
1083 if err := rows.Scan(&mviewName, &dependencyColumn.Schema, &dependencyColumn.Table, &dependencyColumn.Column); err != nil {
1084 return nil, err
1085 }
1086
1087 key := db.TableKey{Schema: schemaName, Table: mviewName}
1088 dependenciesMap[key] = append(dependenciesMap[key], dependencyColumn)
1089 }
1090 if err := rows.Err(); err != nil {
1091 return nil, err
1092 }
1093
1094 return dependenciesMap, nil
1095}
1096
1097// getMaterializedViews gets all materialized views of a database.
1098func getMaterializedViews(txn *sql.Tx, schemaName string, _ map[db.TableKey][]*storepb.ColumnMetadata) ([]*storepb.MaterializedViewMetadata, error) {

Callers 1

getMaterializedViewsFunction · 0.85

Calls 4

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

Tested by

no test coverage detected