fix:code check;json decimal rebuild
This commit is contained in:
parent
dce95d4e1a
commit
3ff2d82e7c
10
deps/oblib/src/lib/json_type/ob_json_bin.cpp
vendored
10
deps/oblib/src/lib/json_type/ob_json_bin.cpp
vendored
@ -3862,9 +3862,15 @@ int ObJsonBin::rebuild_json_value(const char *data,
|
||||
}
|
||||
case ObJsonNodeType::J_DECIMAL:
|
||||
case ObJsonNodeType::J_ODECIMAL: {
|
||||
int64_t pos = 0;
|
||||
ObPrecision prec = -1;
|
||||
ObScale scale = -1;
|
||||
number::ObNumber temp_number;
|
||||
if (OB_FAIL(temp_number.deserialize(data, length, pos))) {
|
||||
int64_t pos = 0;
|
||||
if (OB_FAIL(serialization::decode_i16(data, length, pos, &prec))) {
|
||||
LOG_WARN("fail to deserialize decimal precision.", K(ret), K(length));
|
||||
} else if (OB_FAIL(serialization::decode_i16(data, length, pos, &scale))) {
|
||||
LOG_WARN("fail to deserialize decimal scale.", K(ret), K(length), K(prec));
|
||||
} else if (OB_FAIL(temp_number.deserialize(data, length, pos))) {
|
||||
LOG_WARN("failed to deserialize decimal data", K(ret));
|
||||
} else {
|
||||
ret = result.append(data, pos);
|
||||
|
@ -1824,10 +1824,10 @@ int ObExprJsonValue::get_on_mismatch(const ObExpr &expr,
|
||||
ObObjType val_type;
|
||||
ObDatum *json_datum = NULL;
|
||||
|
||||
uint32_t expr_size = expr.arg_cnt_;
|
||||
uint32_t pos = -1;
|
||||
uint32_t expr_count = expr.arg_cnt_;
|
||||
int32_t pos = -1;
|
||||
|
||||
for(uint32_t i = index; OB_SUCC(ret) && i < expr_size; i++) {
|
||||
for(uint32_t i = index; OB_SUCC(ret) && i < expr_count; i++) {
|
||||
json_arg = expr.args_[i];
|
||||
val_type = json_arg->datum_meta_.type_;
|
||||
if (OB_FAIL(json_arg->eval(ctx, json_datum))) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user