diff --git a/store/driver/txn/error.go b/store/driver/txn/error.go index 24b04d07a0..65f95c4dad 100644 --- a/store/driver/txn/error.go +++ b/store/driver/txn/error.go @@ -156,6 +156,10 @@ func toTiDBErr(err error) error { return kv.ErrNotExist } + if errors.ErrorEqual(err, tikverr.ErrCannotSetNilValue) { + return kv.ErrCannotSetNilValue + } + if e, ok := err.(*tikverr.ErrEntryTooLarge); ok { return kv.ErrEntryTooLarge.GenWithStackByArgs(e.Limit, e.Size) } diff --git a/store/tikv/error/error.go b/store/tikv/error/error.go index 3446025ead..f961738629 100644 --- a/store/tikv/error/error.go +++ b/store/tikv/error/error.go @@ -29,6 +29,8 @@ var ( ErrTiDBShuttingDown = errors.New("tidb server shutting down") // ErrNotExist means the related data not exist. ErrNotExist = errors.New("not exist") + // ErrCannotSetNilValue is the error when sets an empty value. + ErrCannotSetNilValue = errors.New("can not set nil value") // ErrInvalidTxn is the error when commits or rollbacks in an invalid transaction. ErrInvalidTxn = errors.New("invalid transaction") ) diff --git a/store/tikv/unionstore/memdb.go b/store/tikv/unionstore/memdb.go index 5eeb2e08b7..fa2f8dad77 100644 --- a/store/tikv/unionstore/memdb.go +++ b/store/tikv/unionstore/memdb.go @@ -217,7 +217,7 @@ func (db *MemDB) UpdateFlags(key []byte, ops ...kv.FlagsOp) { // v must NOT be nil or empty, otherwise it returns ErrCannotSetNilValue. func (db *MemDB) Set(key []byte, value []byte) error { if len(value) == 0 { - return tidbkv.ErrCannotSetNilValue + return tikverr.ErrCannotSetNilValue } return db.set(key, value) } @@ -225,7 +225,7 @@ func (db *MemDB) Set(key []byte, value []byte) error { // SetWithFlags put key-value into the last active staging buffer with the given KeyFlags. func (db *MemDB) SetWithFlags(key []byte, value []byte, ops ...kv.FlagsOp) error { if len(value) == 0 { - return tidbkv.ErrCannotSetNilValue + return tikverr.ErrCannotSetNilValue } return db.set(key, value, ops...) }