diff --git a/pkg/param/binary_params.go b/pkg/param/binary_params.go index ce016f5016918..602f41e9aab1f 100644 --- a/pkg/param/binary_params.go +++ b/pkg/param/binary_params.go @@ -138,6 +138,7 @@ func ExecArgs(typectx types.Context, binaryParams []BinaryParam) (params []expre continue case mysql.TypeDuration: + fsp := 0 switch len(binaryParams[i].Val) { case 0: tmp = "0" @@ -155,13 +156,14 @@ func ExecArgs(typectx types.Context, binaryParams []BinaryParam) (params []expre return } _, tmp = binaryDurationWithMS(1, binaryParams[i].Val, isNegative) + fsp = types.MaxFsp default: err = mysql.ErrMalformPacket return } // TODO: generate the duration datum directly var dur types.Duration - dur, _, err = types.ParseDuration(typectx, tmp.(string), types.MaxFsp) + dur, _, err = types.ParseDuration(typectx, tmp.(string), fsp) err = typectx.HandleTruncate(err) if err != nil { return diff --git a/pkg/server/conn_stmt_params_test.go b/pkg/server/conn_stmt_params_test.go index beaa275692e52..61dd33ffcc935 100644 --- a/pkg/server/conn_stmt_params_test.go +++ b/pkg/server/conn_stmt_params_test.go @@ -214,7 +214,7 @@ func TestParseExecArgs(t *testing.T) { }, nil, types.ErrTruncatedWrongVal, - types.Duration{Duration: types.MinTime, Fsp: types.MaxFsp}, + types.Duration{Duration: types.MinTime, Fsp: 0}, }, { args{ @@ -226,7 +226,7 @@ func TestParseExecArgs(t *testing.T) { }, nil, nil, - types.Duration{Duration: time.Duration(0), Fsp: types.MaxFsp}, + types.Duration{Duration: time.Duration(0), Fsp: 0}, }, // For error test {