Fix part join filter report -4021
This commit is contained in:
		| @ -72,6 +72,7 @@ public: | ||||
|         fq_type_(TableItem::NOT_USING), | ||||
|         fq_read_tx_uncommitted_(false), | ||||
|         bf_info_(), | ||||
|         part_join_filter_allocated_(false), | ||||
|         group_id_expr_(nullptr), | ||||
|         use_batch_(false), | ||||
|         access_path_(NULL), | ||||
| @ -436,6 +437,8 @@ public: | ||||
|   inline const AccessPath* get_access_path() const { return access_path_; } | ||||
|   void set_tablet_id_expr(ObOpPseudoColumnRawExpr *expr) { tablet_id_expr_ = expr; } | ||||
|   void set_trans_info_expr(ObOpPseudoColumnRawExpr *expr) { trans_info_expr_ = expr; } | ||||
|   void set_part_join_filter_created(bool flag) { part_join_filter_allocated_ = flag; } | ||||
|   bool is_part_join_filter_created() { return part_join_filter_allocated_; } | ||||
|   ObOpPseudoColumnRawExpr *get_tablet_id_expr() const { return tablet_id_expr_; } | ||||
|   ObRawExpr *get_trans_info_expr() const { return trans_info_expr_; } | ||||
|   void set_tablet_id_type(int64_t type) { tablet_id_type_ = type; } | ||||
| @ -574,8 +577,9 @@ protected: // memeber variables | ||||
|   ObRawExpr* fq_expr_; //flashback query expr | ||||
|   TableItem::FlashBackQueryType fq_type_; //flashback query type | ||||
|   bool fq_read_tx_uncommitted_; // whether flashback query read uncommitted changes in transaction | ||||
|  | ||||
|   ObPxBFStaticInfo bf_info_; // for join partition filter | ||||
|    // for join partition filter | ||||
|   ObPxBFStaticInfo bf_info_; | ||||
|   bool part_join_filter_allocated_; | ||||
|   // end for partition join filter | ||||
|   ObRawExpr *group_id_expr_; | ||||
|   bool use_batch_; | ||||
|  | ||||
| @ -4654,6 +4654,9 @@ int ObLogicalOperator::allocate_partition_join_filter(const ObIArray<JoinFilterI | ||||
|     } else if (log_op_def::LOG_TABLE_SCAN != node->get_type()) { | ||||
|       ret = OB_ERR_UNEXPECTED; | ||||
|       LOG_WARN("unexpect operator type", K(ret)); | ||||
|     } else if (FALSE_IT(scan_op = static_cast<ObLogTableScan*>(node))) { | ||||
|     } else if (scan_op->is_part_join_filter_created()) { | ||||
|       /*do nothing*/ | ||||
|     } else if (OB_ISNULL(filter_create = factory.allocate(*(get_plan()), LOG_JOIN_FILTER))) { | ||||
|       ret = OB_ALLOCATE_MEMORY_FAILED; | ||||
|       LOG_ERROR("failed to allocate exchange nodes", K(ret)); | ||||
| @ -4662,7 +4665,6 @@ int ObLogicalOperator::allocate_partition_join_filter(const ObIArray<JoinFilterI | ||||
|       LOG_WARN("fail to add parttition join filter info", K(ret)); | ||||
|     } else { | ||||
|       bool is_shared_hash_join = static_cast<ObLogJoin*>(this)->is_shared_hash_join(); | ||||
|       scan_op = static_cast<ObLogTableScan*>(node); | ||||
|       ObPxBFStaticInfo bf_info; | ||||
|       join_filter_create = static_cast<ObLogJoinFilter *>(filter_create); | ||||
|       join_filter_create->set_is_create_filter(true); | ||||
| @ -4687,6 +4689,7 @@ int ObLogicalOperator::allocate_partition_join_filter(const ObIArray<JoinFilterI | ||||
|           join_filter_create->get_p2p_sequence_ids().at(0), | ||||
|           right_has_exchange)); | ||||
|       scan_op->set_join_filter_info(bf_info); | ||||
|       scan_op->set_part_join_filter_created(true); | ||||
|       filter_id++; | ||||
|       for (int j = 0; j < info.lexprs_.count() && OB_SUCC(ret); ++j) { | ||||
|         ObRawExpr *expr = info.lexprs_.at(j); | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 qianchanger
					qianchanger