[CP] add ObSqlBitSet init check when create ObRawExpr
This commit is contained in:
@ -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;
|
||||
|
||||
Reference in New Issue
Block a user