GetTableColumns reads column list from given table
(db *gosql.DB, databaseName, tableName string)
| 211 | |
| 212 | // GetTableColumns reads column list from given table |
| 213 | func GetTableColumns(db *gosql.DB, databaseName, tableName string) (*sql.ColumnList, *sql.ColumnList, error) { |
| 214 | query := fmt.Sprintf(` |
| 215 | show columns from %s.%s |
| 216 | `, |
| 217 | sql.EscapeName(databaseName), |
| 218 | sql.EscapeName(tableName), |
| 219 | ) |
| 220 | columnNames := []string{} |
| 221 | virtualColumnNames := []string{} |
| 222 | err := sqlutils.QueryRowsMap(db, query, func(rowMap sqlutils.RowMap) error { |
| 223 | columnName := rowMap.GetString("Field") |
| 224 | columnNames = append(columnNames, columnName) |
| 225 | if strings.Contains(rowMap.GetString("Extra"), " GENERATED") { |
| 226 | log.Debugf("%s is a generated column", columnName) |
| 227 | virtualColumnNames = append(virtualColumnNames, columnName) |
| 228 | } |
| 229 | return nil |
| 230 | }) |
| 231 | if err != nil { |
| 232 | return nil, nil, err |
| 233 | } |
| 234 | if len(columnNames) == 0 { |
| 235 | return nil, nil, log.Errorf("found 0 columns on %s.%s. Bailing out", |
| 236 | sql.EscapeName(databaseName), |
| 237 | sql.EscapeName(tableName), |
| 238 | ) |
| 239 | } |
| 240 | return sql.NewColumnList(columnNames), sql.NewColumnList(virtualColumnNames), nil |
| 241 | } |
| 242 | |
| 243 | // Kill executes a KILL QUERY by connection id |
| 244 | func Kill(db *gosql.DB, connectionID string) error { |
no test coverage detected
searching dependent graphs…