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

Function buildTablesMetadata

backend/store/model/database.go:823–867  ·  view source on GitHub ↗
(table *storepb.TableMetadata, tableCatalog *storepb.TableCatalog, isDetailCaseSensitive bool)

Source from the content-addressed store, hash-verified

821}
822
823func buildTablesMetadata(table *storepb.TableMetadata, tableCatalog *storepb.TableCatalog, isDetailCaseSensitive bool) ([]*TableMetadata, []string) {
824 if table == nil {
825 return nil, nil
826 }
827
828 // Build a map of column catalogs
829 columnCatalogMap := make(map[string]*storepb.ColumnCatalog)
830 if tableCatalog != nil {
831 for _, columnCatalog := range tableCatalog.Columns {
832 columnCatalogMap[columnCatalog.Name] = columnCatalog
833 }
834 }
835
836 var result []*TableMetadata
837 var name []string
838 tableMetadata := &TableMetadata{
839 isDetailCaseSensitive: isDetailCaseSensitive,
840 internalColumn: make(map[string]*ColumnMetadata),
841 internalIndexes: make(map[string]*IndexMetadata),
842 proto: table,
843 config: tableCatalog,
844 }
845 for _, column := range table.Columns {
846 columnCatalog := columnCatalogMap[column.Name]
847 columnID := normalizeNameByCaseSensitivity(column.Name, isDetailCaseSensitive)
848 tableMetadata.internalColumn[columnID] = &ColumnMetadata{
849 proto: column,
850 config: columnCatalog,
851 }
852 }
853 indexes := buildIndexesMetadata(table)
854 for _, index := range indexes {
855 indexID := normalizeNameByCaseSensitivity(index.proto.Name, isDetailCaseSensitive)
856 tableMetadata.internalIndexes[indexID] = index
857 }
858 result = append(result, tableMetadata)
859 name = append(name, table.Name)
860
861 if table.Partitions != nil {
862 partitionTables, partitionNames := buildTablesMetadataRecursive(table.Columns, columnCatalogMap, table.Partitions, tableMetadata, table, isDetailCaseSensitive)
863 result = append(result, partitionTables...)
864 name = append(name, partitionNames...)
865 }
866 return result, name
867}
868
869func buildIndexesMetadata(table *storepb.TableMetadata) []*IndexMetadata {
870 if table == nil {

Callers 3

NewDatabaseMetadataFunction · 0.85
TestBuildTablesMetadataFunction · 0.85

Calls 3

buildIndexesMetadataFunction · 0.85

Tested by 2

TestBuildTablesMetadataFunction · 0.68