(txn *sql.Tx, schemaName string)
| 618 | } |
| 619 | |
| 620 | func 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 | } |
no test coverage detected