fix expr tmp result allocator sanity check core
This commit is contained in:
		| @ -40,7 +40,7 @@ ObEvalCtx::ObEvalCtx(ObExecContext &exec_ctx) | |||||||
|     exec_ctx_(exec_ctx), |     exec_ctx_(exec_ctx), | ||||||
|     tmp_alloc_(exec_ctx.get_eval_tmp_allocator()), |     tmp_alloc_(exec_ctx.get_eval_tmp_allocator()), | ||||||
|     datum_caster_(NULL), |     datum_caster_(NULL), | ||||||
|     tmp_alloc_used_(false), |     tmp_alloc_used_(exec_ctx.get_tmp_alloc_used()), | ||||||
|     batch_idx_(0), |     batch_idx_(0), | ||||||
|     batch_size_(0), |     batch_size_(0), | ||||||
|     expr_res_alloc_(exec_ctx.get_eval_res_allocator()) |     expr_res_alloc_(exec_ctx.get_eval_res_allocator()) | ||||||
|  | |||||||
| @ -255,7 +255,7 @@ public: | |||||||
|   // Can not use allocator for expression result. (ObExpr::get_str_res_mem() is used for result). |   // Can not use allocator for expression result. (ObExpr::get_str_res_mem() is used for result). | ||||||
|   common::ObArenaAllocator &tmp_alloc_; |   common::ObArenaAllocator &tmp_alloc_; | ||||||
|   ObDatumCaster *datum_caster_; |   ObDatumCaster *datum_caster_; | ||||||
|   bool tmp_alloc_used_; |   bool &tmp_alloc_used_; | ||||||
| private: | private: | ||||||
|   int64_t batch_idx_; |   int64_t batch_idx_; | ||||||
|   int64_t batch_size_; |   int64_t batch_size_; | ||||||
|  | |||||||
| @ -121,7 +121,8 @@ ObExecContext::ObExecContext(ObIAllocator &allocator) | |||||||
|     parent_ctx_(nullptr), |     parent_ctx_(nullptr), | ||||||
|     nested_level_(0), |     nested_level_(0), | ||||||
|     is_ps_prepare_stage_(false), |     is_ps_prepare_stage_(false), | ||||||
|     register_op_id_(OB_INVALID_ID) |     register_op_id_(OB_INVALID_ID), | ||||||
|  |     tmp_alloc_used_(false) | ||||||
| { | { | ||||||
| } | } | ||||||
|  |  | ||||||
| @ -294,6 +295,7 @@ void ObExecContext::destroy_eval_allocator() | |||||||
| { | { | ||||||
|   eval_res_allocator_.reset(); |   eval_res_allocator_.reset(); | ||||||
|   eval_tmp_allocator_.reset(); |   eval_tmp_allocator_.reset(); | ||||||
|  |   tmp_alloc_used_ = false; | ||||||
| } | } | ||||||
|  |  | ||||||
| int ObExecContext::get_temp_expr_eval_ctx(const ObTempExpr &temp_expr, | int ObExecContext::get_temp_expr_eval_ctx(const ObTempExpr &temp_expr, | ||||||
|  | |||||||
| @ -286,6 +286,7 @@ public: | |||||||
|  |  | ||||||
|   bool has_non_trivial_expr_op_ctx() const { return has_non_trivial_expr_op_ctx_; } |   bool has_non_trivial_expr_op_ctx() const { return has_non_trivial_expr_op_ctx_; } | ||||||
|   void set_non_trivial_expr_op_ctx(bool v) { has_non_trivial_expr_op_ctx_ = v; } |   void set_non_trivial_expr_op_ctx(bool v) { has_non_trivial_expr_op_ctx_ = v; } | ||||||
|  |   inline bool &get_tmp_alloc_used() { return tmp_alloc_used_; } | ||||||
|  |  | ||||||
|   VIRTUAL_NEED_SERIALIZE_AND_DESERIALIZE; |   VIRTUAL_NEED_SERIALIZE_AND_DESERIALIZE; | ||||||
| protected: | protected: | ||||||
| @ -613,6 +614,8 @@ protected: | |||||||
|   bool is_ps_prepare_stage_; |   bool is_ps_prepare_stage_; | ||||||
|   // for sql plan monitor |   // for sql plan monitor | ||||||
|   int64_t register_op_id_; |   int64_t register_op_id_; | ||||||
|  |   // indicate if eval_tmp_allocator_ is used | ||||||
|  |   bool tmp_alloc_used_; | ||||||
|   // ------------------- |   // ------------------- | ||||||
| private: | private: | ||||||
|   DISALLOW_COPY_AND_ASSIGN(ObExecContext); |   DISALLOW_COPY_AND_ASSIGN(ObExecContext); | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 obdev
					obdev