diff options
author | Ting-Wei Lan <tingwei.lan@cobinhood.com> | 2019-04-02 16:50:01 +0800 |
---|---|---|
committer | Jhih-Ming Huang <jm@dexon.org> | 2019-05-08 13:20:53 +0800 |
commit | 6008337f6e562af1e9cf4c6ab70fe2c09d993c62 (patch) | |
tree | 9c066ce7df5f49301844c98d06c919e979eff549 /core/vm/sqlvm/schema | |
parent | 682e15d8212cc376509f8f2ef854adf48efb64ef (diff) | |
download | dexon-6008337f6e562af1e9cf4c6ab70fe2c09d993c62.tar dexon-6008337f6e562af1e9cf4c6ab70fe2c09d993c62.tar.gz dexon-6008337f6e562af1e9cf4c6ab70fe2c09d993c62.tar.bz2 dexon-6008337f6e562af1e9cf4c6ab70fe2c09d993c62.tar.lz dexon-6008337f6e562af1e9cf4c6ab70fe2c09d993c62.tar.xz dexon-6008337f6e562af1e9cf4c6ab70fe2c09d993c62.tar.zst dexon-6008337f6e562af1e9cf4c6ab70fe2c09d993c62.zip |
core: vm: sqlvm: return a bool from DecimalEncode and DecimalDecode
Instead of returning a fixed error code, we can return a boolean here
because the only possibility of an error is invalid arguments. Callers
of these functions must know where invalid arguments come from, and
correctly handle it by converting it to an error struct or panicking.
Diffstat (limited to 'core/vm/sqlvm/schema')
-rw-r--r-- | core/vm/sqlvm/schema/schema.go | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/core/vm/sqlvm/schema/schema.go b/core/vm/sqlvm/schema/schema.go index 1ebb96fa3..1e87d88cf 100644 --- a/core/vm/sqlvm/schema/schema.go +++ b/core/vm/sqlvm/schema/schema.go @@ -14,8 +14,10 @@ import ( // Error defines for encode and decode. var ( - ErrEncodeUnexpectedType = errors.New("encode unexpected type") - ErrDecodeUnexpectedType = errors.New("decode unexpected type") + ErrEncodeUnexpectedDataType = errors.New("encode unexpected data type") + ErrEncodeUnexpectedDefaultType = errors.New("encode unexpected default type") + ErrDecodeUnexpectedDataType = errors.New("decode unexpected data type") + ErrDecodeUnexpectedDefaultType = errors.New("decode unexpected default type") ) // ColumnAttr defines bit flags for describing column attribute. @@ -208,13 +210,13 @@ func (c Column) EncodeRLP(w io.Writer) error { case []byte: c.Rest = d case decimal.Decimal: - var err error - c.Rest, err = ast.DecimalEncode(c.Type, d) - if err != nil { - return err + var ok bool + c.Rest, ok = ast.DecimalEncode(c.Type, d) + if !ok { + return ErrEncodeUnexpectedDataType } default: - return ErrEncodeUnexpectedType + return ErrEncodeUnexpectedDefaultType } } else { c.Rest = nil @@ -249,14 +251,14 @@ func (c *Column) DecodeRLP(s *rlp.Stream) error { case ast.DataTypeMajorFixedBytes, ast.DataTypeMajorDynamicBytes: c.Default = rest default: - d, err := ast.DecimalDecode(c.Type, rest) - if err != nil { - return err + d, ok := ast.DecimalDecode(c.Type, rest) + if !ok { + return ErrDecodeUnexpectedDataType } c.Default = d } default: - return ErrDecodeUnexpectedType + return ErrDecodeUnexpectedDefaultType } return nil |