Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

stmtctx: remove OverflowAsWarning flag #49122

Merged
merged 1 commit into from
Dec 14, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions br/pkg/lightning/backend/kv/session.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ import (
"github.com/pingcap/tidb/pkg/parser/model"
"github.com/pingcap/tidb/pkg/sessionctx"
"github.com/pingcap/tidb/pkg/sessionctx/variable"
"github.com/pingcap/tidb/pkg/types"
"github.com/pingcap/tidb/pkg/util/topsql/stmtstats"
"go.uber.org/zap"
)
Expand Down Expand Up @@ -287,7 +286,6 @@ func NewSession(options *encode.SessionOptions, logger log.Logger) *Session {
vars.StmtCtx.InInsertStmt = true
vars.StmtCtx.BatchCheck = true
vars.StmtCtx.BadNullAsWarning = !sqlMode.HasStrictMode()
vars.StmtCtx.OverflowAsWarning = !sqlMode.HasStrictMode()
vars.SQLMode = sqlMode

typeFlags := vars.StmtCtx.TypeFlags().
Expand Down Expand Up @@ -315,7 +313,6 @@ func NewSession(options *encode.SessionOptions, logger log.Logger) *Session {
}
}
vars.StmtCtx.SetTimeZone(vars.Location())
vars.StmtCtx.SetTypeFlags(types.StrictFlags)
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This line is introduced in #47842. I think it's a bug, right? @lcwangchao Please confirm.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems to be a mistake, but introduced in previous PR: #47543 . In #47543 it overrides the type context settings before it...

if err := vars.SetSystemVar("timestamp", strconv.FormatInt(options.Timestamp, 10)); err != nil {
logger.Warn("new session: failed to set timestamp",
log.ShortError(err))
Expand Down
3 changes: 0 additions & 3 deletions pkg/ddl/backfilling_scheduler.go
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,6 @@ func initSessCtx(
}
sessCtx.GetSessionVars().StmtCtx.SetTimeZone(sessCtx.GetSessionVars().Location())
sessCtx.GetSessionVars().StmtCtx.BadNullAsWarning = !sqlMode.HasStrictMode()
sessCtx.GetSessionVars().StmtCtx.OverflowAsWarning = !sqlMode.HasStrictMode()
sessCtx.GetSessionVars().StmtCtx.DividedByZeroAsWarning = !sqlMode.HasStrictMode()

typeFlags := types.StrictFlags.
Expand Down Expand Up @@ -196,7 +195,6 @@ func restoreSessCtx(sessCtx sessionctx.Context) func(sessCtx sessionctx.Context)
timezone = &tz
}
badNullAsWarn := sv.StmtCtx.BadNullAsWarning
overflowAsWarn := sv.StmtCtx.OverflowAsWarning
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here we remove OverflowAsWarning, do we need to add WithTruncateAsWarning?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

WithTruncateAsWarning is part of typeFlags. Here we restored the typeFlags, so it's fine to just remove OverflowAsWarning.

dividedZeroAsWarn := sv.StmtCtx.DividedByZeroAsWarning
typeFlags := sv.StmtCtx.TypeFlags()
resGroupName := sv.ResourceGroupName
Expand All @@ -206,7 +204,6 @@ func restoreSessCtx(sessCtx sessionctx.Context) func(sessCtx sessionctx.Context)
uv.SQLMode = sqlMode
uv.TimeZone = timezone
uv.StmtCtx.BadNullAsWarning = badNullAsWarn
uv.StmtCtx.OverflowAsWarning = overflowAsWarn
uv.StmtCtx.DividedByZeroAsWarning = dividedZeroAsWarn
uv.StmtCtx.SetTypeFlags(typeFlags)
uv.ResourceGroupName = resGroupName
Expand Down
2 changes: 0 additions & 2 deletions pkg/errctx/context.go
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,4 @@ func init() {
for _, errCode := range truncateErrCodes {
errGroupMap[errCode] = ErrGroupTruncate
}

errGroupMap[errno.ErrDataOutOfRange] = ErrGroupOverflow
}
2 changes: 1 addition & 1 deletion pkg/errctx/context_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ func TestContext(t *testing.T) {
require.Equal(t, ctx.HandleErrorWithAlias(testInternalErr, testErr, testWarn), testErr)

// set level to "warn"
newCtx := ctx.WithErrGroupLevel(errctx.ErrGroupOverflow, errctx.LevelWarn)
newCtx := ctx.WithErrGroupLevel(errctx.ErrGroupTruncate, errctx.LevelWarn)
// ctx is not affected
require.Equal(t, ctx.HandleErrorWithAlias(testInternalErr, testErr, testWarn), testErr)
// newCtx will handle the error as a warn
Expand Down
9 changes: 0 additions & 9 deletions pkg/executor/executor.go
Original file line number Diff line number Diff line change
Expand Up @@ -2116,8 +2116,6 @@ func ResetContextOfStmt(ctx sessionctx.Context, s ast.StmtNode) (err error) {
// but should not make DupKeyAsWarning.
sc.DupKeyAsWarning = stmt.IgnoreErr
sc.BadNullAsWarning = !vars.StrictSQLMode || stmt.IgnoreErr
// see https://dev.mysql.com/doc/refman/8.0/en/out-of-range-and-overflow.html
sc.OverflowAsWarning = !vars.StrictSQLMode || stmt.IgnoreErr
sc.IgnoreNoPartition = stmt.IgnoreErr
sc.ErrAutoincReadFailedAsWarning = stmt.IgnoreErr
sc.DividedByZeroAsWarning = !vars.StrictSQLMode || stmt.IgnoreErr
Expand All @@ -2144,12 +2142,6 @@ func ResetContextOfStmt(ctx sessionctx.Context, s ast.StmtNode) (err error) {
case *ast.SelectStmt:
sc.InSelectStmt = true

// see https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sql-mode-strict
// said "For statements such as SELECT that do not change data, invalid values
// generate a warning in strict mode, not an error."
// and https://dev.mysql.com/doc/refman/5.7/en/out-of-range-and-overflow.html
sc.OverflowAsWarning = true

// Return warning for truncate error in selection.
sc.SetTypeFlags(sc.TypeFlags().
WithTruncateAsWarning(true).
Expand All @@ -2162,7 +2154,6 @@ func ResetContextOfStmt(ctx sessionctx.Context, s ast.StmtNode) (err error) {
sc.WeakConsistency = isWeakConsistencyRead(ctx, stmt)
case *ast.SetOprStmt:
sc.InSelectStmt = true
sc.OverflowAsWarning = true
sc.SetTypeFlags(sc.TypeFlags().
WithTruncateAsWarning(true).
WithIgnoreZeroInDate(true).
Expand Down
2 changes: 1 addition & 1 deletion pkg/expression/builtin_arithmetic.go
Original file line number Diff line number Diff line change
Expand Up @@ -843,7 +843,7 @@ func (s *builtinArithmeticIntDivideDecimalSig) evalInt(ctx EvalContext, row chun
}
if err == types.ErrOverflow {
newErr := errTruncatedWrongValue.GenWithStackByArgs("DECIMAL", c)
err = sc.HandleOverflow(newErr, newErr)
err = sc.HandleError(newErr)
}
if err != nil {
return 0, true, err
Expand Down
2 changes: 1 addition & 1 deletion pkg/expression/builtin_arithmetic_vec.go
Original file line number Diff line number Diff line change
Expand Up @@ -620,7 +620,7 @@ func (b *builtinArithmeticIntDivideDecimalSig) vecEvalInt(ctx EvalContext, input
err = sc.HandleTruncate(errTruncatedWrongValue.GenWithStackByArgs("DECIMAL", c))
} else if err == types.ErrOverflow {
newErr := errTruncatedWrongValue.GenWithStackByArgs("DECIMAL", c)
err = sc.HandleOverflow(newErr, newErr)
err = sc.HandleError(newErr)
}
if err != nil {
return err
Expand Down
28 changes: 14 additions & 14 deletions pkg/expression/builtin_cast.go
Original file line number Diff line number Diff line change
Expand Up @@ -542,7 +542,7 @@ func convertJSON2Tp(evalType types.EvalType) func(*stmtctx.StatementContext, typ
return nil, ErrInvalidJSONForFuncIndex
}
jsonToInt, err := types.ConvertJSONToInt(sc.TypeCtx(), item, mysql.HasUnsignedFlag(tp.GetFlag()), tp.GetType())
err = sc.HandleOverflow(err, err)
err = sc.HandleError(err)
if mysql.HasUnsignedFlag(tp.GetFlag()) {
return uint64(jsonToInt), err
}
Expand Down Expand Up @@ -705,7 +705,7 @@ func (b *builtinCastIntAsDecimalSig) evalDecimal(ctx EvalContext, row chunk.Row)
}
sc := ctx.GetSessionVars().StmtCtx
res, err = types.ProduceDecWithSpecifiedTp(sc.TypeCtx(), res, b.tp)
err = sc.HandleOverflow(err, err)
err = sc.HandleError(err)
return res, isNull, err
}

Expand Down Expand Up @@ -790,7 +790,7 @@ func (b *builtinCastIntAsDurationSig) evalDuration(ctx EvalContext, row chunk.Ro
dur, err := types.NumberToDuration(val, b.tp.GetDecimal())
if err != nil {
if types.ErrOverflow.Equal(err) {
err = ctx.GetSessionVars().StmtCtx.HandleOverflow(err, err)
err = ctx.GetSessionVars().StmtCtx.HandleError(err)
}
if types.ErrTruncatedWrongVal.Equal(err) {
err = ctx.GetSessionVars().StmtCtx.HandleTruncate(err)
Expand Down Expand Up @@ -987,7 +987,7 @@ func (b *builtinCastRealAsIntSig) evalInt(ctx EvalContext, row chunk.Row) (res i
res = int64(uintVal)
}
if types.ErrOverflow.Equal(err) {
err = ctx.GetSessionVars().StmtCtx.HandleOverflow(err, err)
err = ctx.GetSessionVars().StmtCtx.HandleError(err)
}
return res, isNull, err
}
Expand All @@ -1012,7 +1012,7 @@ func (b *builtinCastRealAsDecimalSig) evalDecimal(ctx EvalContext, row chunk.Row
err = res.FromFloat64(val)
if types.ErrOverflow.Equal(err) {
warnErr := types.ErrTruncatedWrongVal.GenWithStackByArgs("DECIMAL", b.args[0])
err = ctx.GetSessionVars().StmtCtx.HandleOverflow(err, warnErr)
err = ctx.GetSessionVars().StmtCtx.HandleErrorWithAlias(err, err, warnErr)
} else if types.ErrTruncated.Equal(err) {
// This behavior is consistent with MySQL.
err = nil
Expand All @@ -1023,7 +1023,7 @@ func (b *builtinCastRealAsDecimalSig) evalDecimal(ctx EvalContext, row chunk.Row
}
sc := ctx.GetSessionVars().StmtCtx
res, err = types.ProduceDecWithSpecifiedTp(sc.TypeCtx(), res, b.tp)
err = sc.HandleOverflow(err, err)
err = sc.HandleError(err)
return res, false, err
}

Expand Down Expand Up @@ -1136,7 +1136,7 @@ func (b *builtinCastDecimalAsDecimalSig) evalDecimal(ctx EvalContext, row chunk.
}
sc := ctx.GetSessionVars().StmtCtx
res, err = types.ProduceDecWithSpecifiedTp(sc.TypeCtx(), res, b.tp)
err = sc.HandleOverflow(err, err)
err = sc.HandleError(err)
return res, false, err
}

Expand Down Expand Up @@ -1175,7 +1175,7 @@ func (b *builtinCastDecimalAsIntSig) evalInt(ctx EvalContext, row chunk.Row) (re

if types.ErrOverflow.Equal(err) {
warnErr := types.ErrTruncatedWrongVal.GenWithStackByArgs("DECIMAL", val)
err = ctx.GetSessionVars().StmtCtx.HandleOverflow(err, warnErr)
err = ctx.GetSessionVars().StmtCtx.HandleErrorWithAlias(err, err, warnErr)
}

return res, false, err
Expand Down Expand Up @@ -1343,7 +1343,7 @@ func (*builtinCastStringAsIntSig) handleOverflow(ctx EvalContext, origRes int64,
res = int64(uval)
}
warnErr := types.ErrTruncatedWrongVal.GenWithStackByArgs("INTEGER", origStr)
err = sc.HandleOverflow(origErr, warnErr)
err = sc.HandleErrorWithAlias(origErr, origErr, warnErr)
}
return
}
Expand Down Expand Up @@ -1461,7 +1461,7 @@ func (b *builtinCastStringAsDecimalSig) evalDecimal(ctx EvalContext, row chunk.R
}
}
res, err = types.ProduceDecWithSpecifiedTp(sc.TypeCtx(), res, b.tp)
err = sc.HandleOverflow(err, err)
err = sc.HandleError(err)
return res, false, err
}

Expand Down Expand Up @@ -1607,7 +1607,7 @@ func (b *builtinCastTimeAsDecimalSig) evalDecimal(ctx EvalContext, row chunk.Row
}
sc := ctx.GetSessionVars().StmtCtx
res, err = types.ProduceDecWithSpecifiedTp(sc.TypeCtx(), val.ToNumber(), b.tp)
err = sc.HandleOverflow(err, err)
err = sc.HandleError(err)
return res, false, err
}

Expand Down Expand Up @@ -1747,7 +1747,7 @@ func (b *builtinCastDurationAsDecimalSig) evalDecimal(ctx EvalContext, row chunk
}
sc := ctx.GetSessionVars().StmtCtx
res, err = types.ProduceDecWithSpecifiedTp(sc.TypeCtx(), val.ToNumber(), b.tp)
err = sc.HandleOverflow(err, err)
err = sc.HandleError(err)
return res, false, err
}

Expand Down Expand Up @@ -1850,7 +1850,7 @@ func (b *builtinCastJSONAsIntSig) evalInt(ctx EvalContext, row chunk.Row) (res i
}
sc := ctx.GetSessionVars().StmtCtx
res, err = types.ConvertJSONToInt64(sc.TypeCtx(), val, mysql.HasUnsignedFlag(b.tp.GetFlag()))
err = sc.HandleOverflow(err, err)
err = sc.HandleError(err)
return
}

Expand Down Expand Up @@ -1895,7 +1895,7 @@ func (b *builtinCastJSONAsDecimalSig) evalDecimal(ctx EvalContext, row chunk.Row
return res, false, err
}
res, err = types.ProduceDecWithSpecifiedTp(sc.TypeCtx(), res, b.tp)
err = sc.HandleOverflow(err, err)
err = sc.HandleError(err)
return res, false, err
}

Expand Down
1 change: 0 additions & 1 deletion pkg/expression/builtin_cast_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,6 @@ func TestCastFunctions(t *testing.T) {
defer func() {
sc.InSelectStmt = oldInSelectStmt
}()
sc.OverflowAsWarning = true

// cast('18446744073709551616' as unsigned);
tp1 := types.NewFieldTypeBuilder().SetType(mysql.TypeLonglong).SetFlag(mysql.BinaryFlag).SetFlen(mysql.MaxIntWidth).SetCharset(charset.CharsetBin).SetCollate(charset.CollationBin).BuildP()
Expand Down
28 changes: 14 additions & 14 deletions pkg/expression/builtin_cast_vec.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ func (b *builtinCastIntAsDurationSig) vecEvalDuration(ctx EvalContext, input *ch
dur, err := types.NumberToDuration(i64s[i], b.tp.GetDecimal())
if err != nil {
if types.ErrOverflow.Equal(err) {
err = ctx.GetSessionVars().StmtCtx.HandleOverflow(err, err)
err = ctx.GetSessionVars().StmtCtx.HandleError(err)
}
if types.ErrTruncatedWrongVal.Equal(err) {
err = ctx.GetSessionVars().StmtCtx.HandleTruncate(err)
Expand Down Expand Up @@ -308,7 +308,7 @@ func (b *builtinCastTimeAsDecimalSig) vecEvalDecimal(ctx EvalContext, input *chu
*dec = types.MyDecimal{}
times[i].FillNumber(dec)
dec, err = types.ProduceDecWithSpecifiedTp(sc.TypeCtx(), dec, b.tp)
if err = sc.HandleOverflow(err, err); err != nil {
if err = sc.HandleError(err); err != nil {
return err
}
decs[i] = *dec
Expand Down Expand Up @@ -632,7 +632,7 @@ func (b *builtinCastDecimalAsDecimalSig) vecEvalDecimal(ctx EvalContext, input *
*dec = decs[i]
}
dec, err := types.ProduceDecWithSpecifiedTp(sc.TypeCtx(), dec, b.tp)
if err = sc.HandleOverflow(err, err); err != nil {
if err = sc.HandleError(err); err != nil {
return err
}
decs[i] = *dec
Expand Down Expand Up @@ -778,7 +778,7 @@ func (b *builtinCastRealAsIntSig) vecEvalInt(ctx EvalContext, input *chunk.Chunk
i64s[i] = int64(uintVal)
}
if types.ErrOverflow.Equal(err) {
err = ctx.GetSessionVars().StmtCtx.HandleOverflow(err, err)
err = ctx.GetSessionVars().StmtCtx.HandleError(err)
}
if err != nil {
return err
Expand Down Expand Up @@ -812,7 +812,7 @@ func (b *builtinCastTimeAsRealSig) vecEvalReal(ctx EvalContext, input *chunk.Chu
f64, err := times[i].ToNumber().ToFloat64()
if err != nil {
if types.ErrOverflow.Equal(err) {
err = ctx.GetSessionVars().StmtCtx.HandleOverflow(err, err)
err = ctx.GetSessionVars().StmtCtx.HandleError(err)
}
if err != nil {
return err
Expand Down Expand Up @@ -916,7 +916,7 @@ func (b *builtinCastRealAsDecimalSig) vecEvalDecimal(ctx EvalContext, input *chu
if err = resdecimal[i].FromFloat64(bufreal[i]); err != nil {
if types.ErrOverflow.Equal(err) {
warnErr := types.ErrTruncatedWrongVal.GenWithStackByArgs("DECIMAL", b.args[0])
err = ctx.GetSessionVars().StmtCtx.HandleOverflow(err, warnErr)
err = ctx.GetSessionVars().StmtCtx.HandleErrorWithAlias(err, err, warnErr)
} else if types.ErrTruncated.Equal(err) {
// This behavior is consistent with MySQL.
err = nil
Expand All @@ -927,7 +927,7 @@ func (b *builtinCastRealAsDecimalSig) vecEvalDecimal(ctx EvalContext, input *chu
}
}
dec, err := types.ProduceDecWithSpecifiedTp(sc.TypeCtx(), &resdecimal[i], b.tp)
if err = sc.HandleOverflow(err, err); err != nil {
if err = sc.HandleError(err); err != nil {
return err
}
resdecimal[i] = *dec
Expand Down Expand Up @@ -1068,7 +1068,7 @@ func (b *builtinCastDurationAsDecimalSig) vecEvalDecimal(ctx EvalContext, input
duration.Duration = ds[i]
duration.Fsp = fsp
res, err := types.ProduceDecWithSpecifiedTp(sc.TypeCtx(), duration.ToNumber(), b.tp)
if err = sc.HandleOverflow(err, err); err != nil {
if err = sc.HandleError(err); err != nil {
return err
}
d64s[i] = *res
Expand Down Expand Up @@ -1114,7 +1114,7 @@ func (b *builtinCastIntAsDecimalSig) vecEvalDecimal(ctx EvalContext, input *chun
}

dec, err = types.ProduceDecWithSpecifiedTp(sc.TypeCtx(), dec, b.tp)
if err = sc.HandleOverflow(err, err); err != nil {
if err = sc.HandleError(err); err != nil {
return err
}
decs[i] = *dec
Expand Down Expand Up @@ -1269,7 +1269,7 @@ func (b *builtinCastJSONAsIntSig) vecEvalInt(ctx EvalContext, input *chunk.Chunk
continue
}
i64s[i], err = types.ConvertJSONToInt64(tc, buf.GetJSON(i), mysql.HasUnsignedFlag(b.tp.GetFlag()))
if err = sc.HandleOverflow(err, err); err != nil {
if err = sc.HandleError(err); err != nil {
return err
}
}
Expand Down Expand Up @@ -1455,7 +1455,7 @@ func (b *builtinCastDecimalAsRealSig) vecEvalReal(ctx EvalContext, input *chunk.
res, err := d[i].ToFloat64()
if err != nil {
if types.ErrOverflow.Equal(err) {
err = ctx.GetSessionVars().StmtCtx.HandleOverflow(err, err)
err = ctx.GetSessionVars().StmtCtx.HandleError(err)
}
if err != nil {
return err
Expand Down Expand Up @@ -1654,7 +1654,7 @@ func (b *builtinCastJSONAsDecimalSig) vecEvalDecimal(ctx EvalContext, input *chu
return err
}
tempres, err = types.ProduceDecWithSpecifiedTp(sc.TypeCtx(), tempres, b.tp)
if err = sc.HandleOverflow(err, err); err != nil {
if err = sc.HandleError(err); err != nil {
return err
}
res[i] = *tempres
Expand Down Expand Up @@ -1744,7 +1744,7 @@ func (b *builtinCastStringAsDecimalSig) vecEvalDecimal(ctx EvalContext, input *c
return err
}
dec, err := types.ProduceDecWithSpecifiedTp(stmtCtx.TypeCtx(), dec, b.tp)
if err = stmtCtx.HandleOverflow(err, err); err != nil {
if err = stmtCtx.HandleError(err); err != nil {
return err
}
res[i] = *dec
Expand Down Expand Up @@ -1848,7 +1848,7 @@ func (b *builtinCastDecimalAsIntSig) vecEvalInt(ctx EvalContext, input *chunk.Ch

if types.ErrOverflow.Equal(err) {
warnErr := types.ErrTruncatedWrongVal.GenWithStackByArgs("DECIMAL", d64s[i])
err = ctx.GetSessionVars().StmtCtx.HandleOverflow(err, warnErr)
err = ctx.GetSessionVars().StmtCtx.HandleErrorWithAlias(err, err, warnErr)
}

if err != nil {
Expand Down
6 changes: 3 additions & 3 deletions pkg/expression/typeinfer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -205,11 +205,11 @@ func (s *InferTypeSuite) createTestCase4Cast() []typeInferTestCase {
{"CAST(c_varchar AS DECIMAL)", mysql.TypeNewDecimal, charset.CharsetBin, mysql.BinaryFlag, 10, 0},
{"CAST(\"123456789.0123456789\" AS DECIMAL)", mysql.TypeNewDecimal, charset.CharsetBin, mysql.NotNullFlag | mysql.BinaryFlag, 10, 0}, // TODO: flen should be 11.
{"CAST(\"123456789.0123456789\" AS DECIMAL(10,0))", mysql.TypeNewDecimal, charset.CharsetBin, mysql.NotNullFlag | mysql.BinaryFlag, 10, 0}, // TODO: flen should be 11.
{"CAST(\"123456789.0123456789\" AS DECIMAL(5,5))", mysql.TypeNewDecimal, charset.CharsetBin, mysql.BinaryFlag, 5, 5}, // TODO: flen should be 7. flag should be mysql.NotNullFlag | mysql.BinaryFlag.
{"CAST(\"123456789.0123456789\" AS DECIMAL(6,5))", mysql.TypeNewDecimal, charset.CharsetBin, mysql.BinaryFlag, 6, 5}, // TODO: flen should be 8. flag should be mysql.NotNullFlag | mysql.BinaryFlag.
{"CAST(\"123456789.0123456789\" AS DECIMAL(5,5))", mysql.TypeNewDecimal, charset.CharsetBin, mysql.NotNullFlag | mysql.BinaryFlag, 5, 5}, // TODO: flen should be 7.
{"CAST(\"123456789.0123456789\" AS DECIMAL(6,5))", mysql.TypeNewDecimal, charset.CharsetBin, mysql.NotNullFlag | mysql.BinaryFlag, 6, 5}, // TODO: flen should be 8.
{"CAST(\"-123456789.0123456789\" AS DECIMAL(64,30))", mysql.TypeNewDecimal, charset.CharsetBin, mysql.NotNullFlag | mysql.BinaryFlag, 64, 30}, // TODO: flen should be 66.
{"CAST(\"-123456789.0123456789\" AS DECIMAL(10,0))", mysql.TypeNewDecimal, charset.CharsetBin, mysql.NotNullFlag | mysql.BinaryFlag, 10, 0}, // TODO: flen should be 11.
{"CAST(\"-123456789.0123456789\" AS DECIMAL(5,5))", mysql.TypeNewDecimal, charset.CharsetBin, mysql.BinaryFlag, 5, 5}, // TODO: flen should be 7. flag should be mysql.NotNullFlag | mysql.BinaryFlag.
{"CAST(\"-123456789.0123456789\" AS DECIMAL(5,5))", mysql.TypeNewDecimal, charset.CharsetBin, mysql.NotNullFlag | mysql.BinaryFlag, 5, 5}, // TODO: flen should be 7.
{"CAST(c_int_d AS JSON)", mysql.TypeJSON, charset.CharsetUTF8MB4, mysql.BinaryFlag | mysql.ParseToJSONFlag, 12582912 / 3, 0},
{"CAST(c_int_d AS SIGNED)", mysql.TypeLonglong, charset.CharsetBin, mysql.BinaryFlag, 22, 0}, // TODO: flen should be 11.
{"CAST(c_int_d AS SIGNED INTEGER)", mysql.TypeLonglong, charset.CharsetBin, mysql.BinaryFlag, 22, 0}, // TODO: flen should be 11.
Expand Down
Loading
Loading