[CP] add ObSqlBitSet init check when create ObRawExpr

This commit is contained in:
chimyue
2023-08-25 12:43:58 +00:00
committed by ob-robot
parent 0d518748e6
commit 11a932c048

View File

@ -321,6 +321,7 @@ public:
int64_t bit_count() const { return static_cast<int64_t>(desc_.len_) * PER_BITSETWORD_BITS; }
bool is_empty() const { return 0 == num_members(); }
bool is_valid() const { return desc_.inited_; }
int get_init_err() const { return desc_.inited_ ? OB_SUCCESS : desc_.init_errcode_; }
void clear_all()
{
if (!is_valid()) {
@ -4663,7 +4664,12 @@ public:
raw_expr->set_allocator(allocator_);
raw_expr->set_expr_factory(*this);
raw_expr->set_expr_type(expr_type);
if (OB_FAIL(expr_store_.store_obj(raw_expr))) {
if (OB_FAIL(raw_expr->get_expr_info().get_init_err()) ||
OB_FAIL(raw_expr->get_relation_ids().get_init_err())) {
SQL_RESV_LOG(WARN, "failed to init ObSqlBitSet", K(ret));
raw_expr->~ExprType();
raw_expr = NULL;
} else if (OB_FAIL(expr_store_.store_obj(raw_expr))) {
SQL_RESV_LOG(WARN, "store raw expr failed", K(ret));
raw_expr->~ExprType();
raw_expr = NULL;