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

Function classifyColumns

backend/plugin/parser/mysql/backup.go:636–702  ·  view source on GitHub ↗
(ctx context.Context, getDatabaseMetadataFunc base.GetDatabaseMetadataFunc, listDatabaseNamesFunc base.ListDatabaseNamesFunc, isCaseSensitive bool, instanceID string, table *TableReference)

Source from the content-addressed store, hash-verified

634}
635
636func classifyColumns(ctx context.Context, getDatabaseMetadataFunc base.GetDatabaseMetadataFunc, listDatabaseNamesFunc base.ListDatabaseNamesFunc, isCaseSensitive bool, instanceID string, table *TableReference) ([]string, []string, error) {
637 if getDatabaseMetadataFunc == nil {
638 return nil, nil, errors.New("GetDatabaseMetadataFunc is not set")
639 }
640
641 var dbMetadata *model.DatabaseMetadata
642 allDatabaseNames, err := listDatabaseNamesFunc(ctx, instanceID)
643 if err != nil {
644 return nil, nil, errors.Wrap(err, "failed to list databases names")
645 }
646 if !isCaseSensitive {
647 for _, db := range allDatabaseNames {
648 if strings.EqualFold(db, table.Database) {
649 _, dbMetadata, err = getDatabaseMetadataFunc(ctx, instanceID, db)
650 if err != nil {
651 return nil, nil, errors.Wrapf(err, "failed to get database metadata for database %q", db)
652 }
653 break
654 }
655 }
656 } else {
657 for _, db := range allDatabaseNames {
658 if db == table.Database {
659 _, dbMetadata, err = getDatabaseMetadataFunc(ctx, instanceID, db)
660 if err != nil {
661 return nil, nil, errors.Wrapf(err, "failed to get database metadata for database %q", db)
662 }
663 break
664 }
665 }
666 }
667 if dbMetadata == nil {
668 slog.Debug("failed to get database metadata", slog.String("instanceID", instanceID), slog.String("database", table.Database))
669 return nil, nil, errors.Errorf("failed to get database metadata for InstanceID %q, Database %q", instanceID, table.Database)
670 }
671
672 schema := dbMetadata.GetSchemaMetadata("")
673 if schema == nil {
674 return nil, nil, errors.New("failed to get schema metadata")
675 }
676
677 var tableSchema *model.TableMetadata
678 if !isCaseSensitive {
679 for _, tableName := range schema.ListTableNames() {
680 if strings.EqualFold(tableName, table.Table) {
681 tableSchema = schema.GetTable(tableName)
682 break
683 }
684 }
685 } else {
686 tableSchema = schema.GetTable(table.Table)
687 }
688 if tableSchema == nil {
689 return nil, nil, errors.Errorf("table %s not found in schema", table.Table)
690 }
691
692 var generatedColumns, normalColumns []string
693 for _, column := range tableSchema.GetProto().GetColumns() {

Callers 2

generateSQLForTableFunction · 0.70
doGenerateFunction · 0.70

Calls 10

GetSchemaMetadataMethod · 0.95
GetProtoMethod · 0.95
DebugMethod · 0.80
ErrorfMethod · 0.80
ListTableNamesMethod · 0.80
StringMethod · 0.65
GetTableMethod · 0.45
GetColumnsMethod · 0.45
GetGenerationMethod · 0.45
GetNameMethod · 0.45

Tested by

no test coverage detected