fix:code check;json decimal rebuild

This commit is contained in:
obdev 2024-02-10 09:55:45 +00:00 committed by ob-robot
parent dce95d4e1a
commit 3ff2d82e7c
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_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);

View File

@ -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))) {