[CP] Fix wrong merge type between set and char
Co-authored-by: Larry955 <1412857955@qq.com>
This commit is contained in:
		| @ -1299,7 +1299,7 @@ static ObObjType MERGE_RESULT_TYPE[ObMaxType][ObMaxType] = { | ||||
|         ObLongTextType,   /* CharType=>ObLongTextType  */ | ||||
|         ObVarcharType,    /* CharType=>ObBitType  */ | ||||
|         ObVarcharType,    /* CharType=>ObEnumType  */ | ||||
|         ObCharType,       /* CharType=>ObSetType  */ | ||||
|         ObVarcharType,    /* CharType=>ObSetType  */ | ||||
|         ObMaxType,        /* CharType=>ObEnumInnerType  */ | ||||
|         ObMaxType,        /* CharType=>ObSetInnerType  */ | ||||
|         ObCharType,       /*CharType=>ObTimestampTZType  */ | ||||
| @ -1834,7 +1834,7 @@ static ObObjType MERGE_RESULT_TYPE[ObMaxType][ObMaxType] = { | ||||
|         ObVarcharType,    /*ObSetType=>TimeType  */ | ||||
|         ObVarcharType,    /*ObSetType=>YearType  */ | ||||
|         ObVarcharType,    /*ObSetType=>VarcharType  */ | ||||
|         ObCharType,       /*ObSetType=>CharType  */ | ||||
|         ObVarcharType,    /*ObSetType=>CharType  */ | ||||
|         ObVarcharType,    /*ObSetType=>HexStringType  */ | ||||
|         ObMaxType,        /*ObSetType=>ExtendType  */ | ||||
|         ObVarcharType,    /*ObSetType=>UnknownType  */ | ||||
|  | ||||
| @ -175,7 +175,20 @@ int ObRawExprWrapEnumSet::analyze_all_expr(ObDMLStmt &stmt) | ||||
|     LOG_WARN("get relation exprs failed", K(ret)); | ||||
|   } else if (OB_FAIL(stmt.get_child_stmts(child_stmts))) { | ||||
|     LOG_WARN("get child stmt failed", K(ret)); | ||||
|   } else {/*do nothing*/} | ||||
|   } else { | ||||
|     for (int64_t i = 0; OB_SUCC(ret) && i < stmt.get_table_size(); ++i) { | ||||
|       const TableItem *table_item = stmt.get_table_item(i); | ||||
|       if (OB_ISNULL(table_item)) { | ||||
|         ret = OB_ERR_UNEXPECTED; | ||||
|         LOG_WARN("table_item is null", K(i)); | ||||
|       } else if (table_item->is_temp_table()) { | ||||
|         if (OB_FAIL(child_stmts.push_back(table_item->ref_query_))) { | ||||
|           LOG_WARN("store child stmt failed", K(ret)); | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   for (int64_t i = 0; OB_SUCC(ret) && i < relation_exprs.count(); ++i) { | ||||
|     if (OB_FAIL(analyze_expr(relation_exprs.at(i)))) { | ||||
|       LOG_WARN("failed to analyze expr", K(ret)); | ||||
| @ -618,6 +631,7 @@ int ObRawExprWrapEnumSet::visit_right_expr(ObRawExpr &right_expr, int64_t row_di | ||||
|     ret = OB_ERR_UNEXPECTED; | ||||
|     LOG_ERROR("should not come here", K(right_expr), K(ret)); | ||||
|   } | ||||
|   LOG_TRACE("succeed to visit right expr", K(root_type), K(row_dimension), K(right_expr)); | ||||
|   return ret; | ||||
| } | ||||
|  | ||||
| @ -777,6 +791,7 @@ bool ObRawExprWrapEnumSet::can_wrap_type_to_str(const ObRawExpr &expr) const | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|   LOG_TRACE("succeed to check can wrap type to str", K(bret), K(expr)); | ||||
|   return bret; | ||||
| } | ||||
|  | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 hezuojiao
					hezuojiao