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

Function getOuterSchemaRColumns

backend/plugin/db/oracle/sync.go:580–618  ·  view source on GitHub ↗
(txn *sql.Tx, outerRTableMap map[db.ConstraintKey]string, outerRColumnMap map[db.ConstraintKey][]string, schemaName, constraintName string)

Source from the content-addressed store, hash-verified

578}
579
580func getOuterSchemaRColumns(txn *sql.Tx, outerRTableMap map[db.ConstraintKey]string, outerRColumnMap map[db.ConstraintKey][]string, schemaName, constraintName string) (string, []string, error) {
581 queryColumns := fmt.Sprintf(`
582 SELECT
583 TABLE_NAME,
584 CONSTRAINT_NAME,
585 COLUMN_NAME
586 FROM
587 SYS.ALL_CONS_COLUMNS
588 WHERE
589 OWNER = '%s'
590 ORDER BY TABLE_NAME, CONSTRAINT_NAME, POSITION`, schemaName)
591
592 slog.Debug("running get outer schema reference columns query")
593 rows, err := txn.Query(queryColumns)
594 if err != nil {
595 return "", nil, util.FormatErrorWithQuery(err, queryColumns)
596 }
597 defer rows.Close()
598
599 for rows.Next() {
600 var tableName, constraintName string
601 var columnName sql.NullString
602 if err := rows.Scan(&tableName, &constraintName, &columnName); err != nil {
603 return "", nil, err
604 }
605 if !columnName.Valid {
606 continue
607 }
608 key := db.ConstraintKey{Schema: schemaName, Constraint: constraintName}
609 outerRTableMap[key] = tableName
610 outerRColumnMap[key] = append(outerRColumnMap[key], columnName.String)
611 }
612 if err := rows.Err(); err != nil {
613 return "", nil, util.FormatErrorWithQuery(err, queryColumns)
614 }
615
616 constraintKey := db.ConstraintKey{Schema: schemaName, Constraint: constraintName}
617 return outerRTableMap[constraintKey], outerRColumnMap[constraintKey], nil
618}
619
620func getConstraints(txn *sql.Tx, schemaName string) (
621 map[db.TableKey][]*storepb.IndexMetadata,

Callers 1

getConstraintsFunction · 0.85

Calls 6

FormatErrorWithQueryFunction · 0.92
DebugMethod · 0.80
ScanMethod · 0.80
QueryMethod · 0.65
CloseMethod · 0.65
NextMethod · 0.45

Tested by

no test coverage detected