diff --git a/parser/parser.go b/parser/parser.go index 227962f8f5c98..3e77d36715aff 100644 --- a/parser/parser.go +++ b/parser/parser.go @@ -16766,6 +16766,10 @@ yynewstate: // TODO: check flen 0 x := types.NewFieldType(yyS[yypt-2].item.(byte)) x.Flen = yyS[yypt-1].item.(int) + if yyS[yypt-1].item.(int) != types.UnspecifiedLength { + yylex.AppendError(yylex.Errorf("Integer display width is deprecated and will be removed in a future release.")) + parser.lastErrorAsWarn() + } for _, o := range yyS[yypt-0].item.([]*ast.TypeOpt) { if o.IsUnsigned { x.Flag |= mysql.UnsignedFlag diff --git a/parser/parser.y b/parser/parser.y index 6ea96e7f09da3..834aa260c757e 100644 --- a/parser/parser.y +++ b/parser/parser.y @@ -9791,6 +9791,10 @@ NumericType: // TODO: check flen 0 x := types.NewFieldType($1.(byte)) x.Flen = $2.(int) + if $2.(int) != types.UnspecifiedLength { + yylex.AppendError(yylex.Errorf("Integer display width is deprecated and will be removed in a future release.")) + parser.lastErrorAsWarn() + } for _, o := range $3.([]*ast.TypeOpt) { if o.IsUnsigned { x.Flag |= mysql.UnsignedFlag diff --git a/parser/yy_parser.go b/parser/yy_parser.go index bab5f86a744ca..24ccb7dc0be49 100644 --- a/parser/yy_parser.go +++ b/parser/yy_parser.go @@ -49,6 +49,10 @@ var ( ErrUnknownAlterAlgorithm = terror.ClassParser.New(mysql.ErrUnknownAlterAlgorithm, mysql.MySQLErrName[mysql.ErrUnknownAlterAlgorithm]) // ErrWrongValue returns for wrong value ErrWrongValue = terror.ClassParser.New(mysql.ErrWrongValue, mysql.MySQLErrName[mysql.ErrWrongValue]) + // ErrWarnDeprecatedSyntaxNoReplacement return when the syntax was deprecated and there is no replacement. + ErrWarnDeprecatedSyntaxNoReplacement = terror.ClassParser.New(mysql.ErrWarnDeprecatedSyntaxNoReplacement, mysql.MySQLErrName[mysql.ErrWarnDeprecatedSyntaxNoReplacement]) + // ErrWarnDeprecatedIntegerDisplayWidth share the same code 1681, and it will be returned when length is specified in integer. + ErrWarnDeprecatedIntegerDisplayWidth = terror.ClassParser.New(mysql.ErrWarnDeprecatedSyntaxNoReplacement, "Integer display width is deprecated and will be removed in a future release.") // SpecFieldPattern special result field pattern SpecFieldPattern = regexp.MustCompile(`(\/\*!(M?[0-9]{5,6})?|\*\/)`) specCodeStart = regexp.MustCompile(`^\/\*!(M?[0-9]{5,6})?[ \t]*`)