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

Function classifyColumns

backend/plugin/parser/tidb/backup.go:897–953  ·  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

895}
896
897func classifyColumns(ctx context.Context, getDatabaseMetadataFunc base.GetDatabaseMetadataFunc, listDatabaseNamesFunc base.ListDatabaseNamesFunc, isCaseSensitive bool, instanceID string, table *TableReference) ([]string, []string, error) {
898 if getDatabaseMetadataFunc == nil {
899 return nil, nil, errors.New("GetDatabaseMetadataFunc is not set")
900 }
901
902 var dbMetadata *model.DatabaseMetadata
903 allDatabaseNames, err := listDatabaseNamesFunc(ctx, instanceID)
904 if err != nil {
905 return nil, nil, errors.Wrap(err, "failed to list databases names")
906 }
907 if !isCaseSensitive {
908 for _, db := range allDatabaseNames {
909 if strings.EqualFold(db, table.Database) {
910 _, dbMetadata, err = getDatabaseMetadataFunc(ctx, instanceID, db)
911 if err != nil {
912 return nil, nil, errors.Wrapf(err, "failed to get database metadata for database %q", db)
913 }
914 break
915 }
916 }
917 } else {
918 for _, db := range allDatabaseNames {
919 if db == table.Database {
920 _, dbMetadata, err = getDatabaseMetadataFunc(ctx, instanceID, db)
921 if err != nil {
922 return nil, nil, errors.Wrapf(err, "failed to get database metadata for database %q", db)
923 }
924 break
925 }
926 }
927 }
928 if dbMetadata == nil {
929 slog.Debug("failed to get database metadata", slog.String("instanceID", instanceID), slog.String("database", table.Database))
930 return nil, nil, errors.Errorf("failed to get database metadata for InstanceID %q, Database %q", instanceID, table.Database)
931 }
932
933 schema := dbMetadata.GetSchemaMetadata("")
934 if schema == nil {
935 return nil, nil, errors.New("failed to get schema metadata")
936 }
937
938 tableSchema := schema.GetTable(table.Table)
939 if tableSchema == nil {
940 return nil, nil, errors.Errorf("failed to get table metadata for table %q", table.Table)
941 }
942
943 var generatedColumns, normalColumns []string
944 for _, column := range tableSchema.GetProto().GetColumns() {
945 if column.GetGeneration() != nil {
946 generatedColumns = append(generatedColumns, column.GetName())
947 } else {
948 normalColumns = append(normalColumns, column.GetName())
949 }
950 }
951
952 return generatedColumns, normalColumns, nil
953}

Callers 3

generateSQLForMixedDMLFunction · 0.70
doGenerateFunction · 0.70

Calls 9

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

Tested by

no test coverage detected