fix:code check;json decimal rebuild

This commit is contained in:
obdev
2024-02-05 05:12:25 +00:00
committed by ob-robot
parent bebcedd705
commit 34194c5ab0
2 changed files with 11 additions and 5 deletions

View File

@ -3862,9 +3862,15 @@ int ObJsonBin::rebuild_json_value(const char *data,
} }
case ObJsonNodeType::J_DECIMAL: case ObJsonNodeType::J_DECIMAL:
case ObJsonNodeType::J_ODECIMAL: { case ObJsonNodeType::J_ODECIMAL: {
int64_t pos = 0; ObPrecision prec = -1;
ObScale scale = -1;
number::ObNumber temp_number; 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)); LOG_WARN("failed to deserialize decimal data", K(ret));
} else { } else {
ret = result.append(data, pos); ret = result.append(data, pos);

View File

@ -1824,10 +1824,10 @@ int ObExprJsonValue::get_on_mismatch(const ObExpr &expr,
ObObjType val_type; ObObjType val_type;
ObDatum *json_datum = NULL; ObDatum *json_datum = NULL;
uint32_t expr_size = expr.arg_cnt_; uint32_t expr_count = expr.arg_cnt_;
uint32_t pos = -1; 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]; json_arg = expr.args_[i];
val_type = json_arg->datum_meta_.type_; val_type = json_arg->datum_meta_.type_;
if (OB_FAIL(json_arg->eval(ctx, json_datum))) { if (OB_FAIL(json_arg->eval(ctx, json_datum))) {