fix:code check;json decimal rebuild
This commit is contained in:
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_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);
|
||||||
|
|||||||
@ -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))) {
|
||||||
|
|||||||
Reference in New Issue
Block a user