From 5239f5593dc8bb155e9b03a09d4f29f20a66c945 Mon Sep 17 00:00:00 2001 From: Ariel Mashraki Date: Sat, 26 Aug 2023 00:06:25 +0300 Subject: [PATCH] sql/mysql: add table+column context to parse type errors --- sql/mysql/convert.go | 8 ++++---- sql/mysql/inspect.go | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/sql/mysql/convert.go b/sql/mysql/convert.go index 1c882978455..7d1bd4c5dfa 100644 --- a/sql/mysql/convert.go +++ b/sql/mysql/convert.go @@ -39,13 +39,13 @@ func FormatType(t schema.Type) (string, error) { } case *schema.DecimalType: if f = strings.ToLower(t.T); f != TypeDecimal && f != TypeNumeric { - return "", fmt.Errorf("mysql: unexpected decimal type: %q", t.T) + return "", fmt.Errorf("unexpected decimal type: %q", t.T) } switch p, s := t.Precision, t.Scale; { case p < 0 || s < 0: - return "", fmt.Errorf("mysql: decimal type must have precision > 0 and scale >= 0: %d, %d", p, s) + return "", fmt.Errorf("decimal type must have precision > 0 and scale >= 0: %d, %d", p, s) case p < s: - return "", fmt.Errorf("mysql: decimal type must have precision >= scale: %d < %d", p, s) + return "", fmt.Errorf("decimal type must have precision >= scale: %d < %d", p, s) case p == 0 && s == 0: // The default value for precision is 10 (i.e. decimal(0,0) = decimal(10)). p = 10 @@ -205,7 +205,7 @@ func ParseType(raw string) (schema.Type, error) { // github.com/mysql/mysql-server/blob/8.0/sql/field.cc#Field_enum::sql_type rv := strings.TrimSuffix(strings.TrimPrefix(raw, t+"("), ")") if rv == "" { - return nil, fmt.Errorf("mysql: unexpected enum type: %q", raw) + return nil, fmt.Errorf("unexpected enum type: %q", raw) } values := strings.Split(rv, "','") for i := range values { diff --git a/sql/mysql/inspect.go b/sql/mysql/inspect.go index 8ecb26f1501..4561ea2af8f 100644 --- a/sql/mysql/inspect.go +++ b/sql/mysql/inspect.go @@ -262,7 +262,7 @@ func (i *inspect) addColumn(s *schema.Schema, rows *sql.Rows) error { } ct, err := ParseType(c.Type.Raw) if err != nil { - return err + return fmt.Errorf("parse %q.%q type %q: %w", t.Name, c.Name, c.Type.Raw, err) } c.Type.Type = ct attr, err := parseExtra(extra.String)