func()

in assessment/collectors/infoschema_collector.go [310:391]


func (c InfoSchemaCollector) ListColumnDefinitions() (map[string]utils.SrcColumnDetails, map[string]utils.SpColumnDetails) {
	srcColumnDetails := make(map[string]utils.SrcColumnDetails)
	spColumnDetails := make(map[string]utils.SpColumnDetails)
	for _, table := range c.conv.SrcSchema {
		for _, column := range table.ColDefs {
			pkOrder := -1
			for _, pk := range table.PrimaryKeys {
				if pk.ColId == column.Id {
					pkOrder = pk.Order
					break
				}
			}
			var foreignKeys []string
			for _, fk := range table.ForeignKeys {
				for _, col := range fk.ColIds {
					if col == column.Id {
						foreignKeys = append(foreignKeys, fk.Name)
						break
					}
				}
			}
			onInsertTimestampSet := false
			if column.DefaultValue.IsPresent && column.DefaultValue.Value.Statement == "CURRENT_TIMESTAMP" {
				onInsertTimestampSet = true
			}
			srcColumnDetails[column.Id] = utils.SrcColumnDetails{
				Id:                     column.Id,
				Name:                   column.Name,
				TableId:                table.Id,
				TableName:              table.Name,
				Datatype:               column.Type.Name,
				IsNull:                 !column.NotNull,
				Mods:                   column.Type.Mods,
				ArrayBounds:            column.Type.ArrayBounds,
				AutoGen:                column.AutoGen,
				DefaultValue:           column.DefaultValue,
				PrimaryKeyOrder:        pkOrder,
				ForeignKey:             foreignKeys,
				IsUnsigned:             c.tables[table.Id].ColumnAssessmentInfos[column.Id].IsUnsigned,
				MaxColumnSize:          c.tables[table.Id].ColumnAssessmentInfos[column.Id].MaxColumnSize,
				GeneratedColumn:        c.tables[table.Id].ColumnAssessmentInfos[column.Id].GeneratedColumn,
				IsOnUpdateTimestampSet: c.tables[table.Id].ColumnAssessmentInfos[column.Id].IsOnUpdateTimestampSet,
				IsOnInsertTimestampSet: onInsertTimestampSet,
			}
		}
	}
	for _, table := range c.conv.SpSchema {
		for _, column := range table.ColDefs {
			pkOrder := -1
			for _, pk := range table.PrimaryKeys {
				if pk.ColId == column.Id {
					pkOrder = pk.Order
					break
				}
			}
			var foreignKeys []string
			for _, fk := range table.ForeignKeys {
				for _, col := range fk.ColIds {
					if col == column.Id {
						foreignKeys = append(foreignKeys, fk.Name)
						break
					}
				}
			}
			spColumnDetails[column.Id] = utils.SpColumnDetails{
				Id:              column.Id,
				Name:            column.Name,
				TableId:         table.Id,
				TableName:       table.Name,
				Datatype:        column.T.Name,
				IsNull:          !column.NotNull,
				Len:             column.T.Len,
				IsArray:         column.T.IsArray,
				AutoGen:         column.AutoGen,
				DefaultValue:    column.DefaultValue,
				PrimaryKeyOrder: pkOrder,
				ForeignKey:      foreignKeys,
			}
		}
	}
	return srcColumnDetails, spColumnDetails
}