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

Function getConstraints

backend/plugin/db/oracle/sync.go:620–762  ·  view source on GitHub ↗
(txn *sql.Tx, schemaName string)

Source from the content-addressed store, hash-verified

618}
619
620func getConstraints(txn *sql.Tx, schemaName string) (
621 map[db.TableKey][]*storepb.IndexMetadata,
622 map[db.TableKey][]*storepb.CheckConstraintMetadata,
623 map[db.TableKey][]*storepb.ForeignKeyMetadata,
624 map[db.IndexKey]bool,
625 error,
626) {
627 queryConstraintColumns := fmt.Sprintf(`
628 SELECT
629 TABLE_NAME,
630 CONSTRAINT_NAME,
631 COLUMN_NAME
632 FROM SYS.ALL_CONS_COLUMNS
633 WHERE OWNER = '%s'
634 ORDER BY TABLE_NAME, CONSTRAINT_NAME, POSITION`, schemaName)
635
636 slog.Debug("running get constraint columns query")
637 constraintColumnRows, err := txn.Query(queryConstraintColumns)
638 if err != nil {
639 return nil, nil, nil, nil, util.FormatErrorWithQuery(err, queryConstraintColumns)
640 }
641 defer constraintColumnRows.Close()
642 constraintColumnMap := make(map[db.ConstraintKey][]string)
643 constraintTableMap := make(map[db.ConstraintKey]string)
644 for constraintColumnRows.Next() {
645 var tableName, constraintName string
646 var columnName sql.NullString
647 if err := constraintColumnRows.Scan(&tableName, &constraintName, &columnName); err != nil {
648 return nil, nil, nil, nil, err
649 }
650 key := db.ConstraintKey{Schema: schemaName, Constraint: constraintName}
651 if columnName.Valid {
652 constraintColumnMap[key] = append(constraintColumnMap[key], columnName.String)
653 }
654 constraintTableMap[key] = tableName
655 }
656 if err := constraintColumnRows.Err(); err != nil {
657 return nil, nil, nil, nil, util.FormatErrorWithQuery(err, queryConstraintColumns)
658 }
659
660 queryConstraints := fmt.Sprintf(`
661 SELECT
662 TABLE_NAME,
663 CONSTRAINT_NAME,
664 CONSTRAINT_TYPE,
665 SEARCH_CONDITION,
666 R_OWNER,
667 R_CONSTRAINT_NAME,
668 DELETE_RULE
669 FROM SYS.ALL_CONSTRAINTS
670 WHERE OWNER = '%s'
671 ORDER BY TABLE_NAME, CONSTRAINT_NAME`, schemaName)
672
673 slog.Debug("running get constraints query")
674 constraintRows, err := txn.Query(queryConstraints)
675 if err != nil {
676 return nil, nil, nil, nil, util.FormatErrorWithQuery(err, queryConstraints)
677 }

Callers 1

getIndexesAndConstraintsFunction · 0.85

Calls 7

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

Tested by

no test coverage detected