disable create index on a udf index
This commit is contained in:
		| @ -2804,59 +2804,62 @@ int ObRawExprUtils::resolve_gen_column_udf_expr(ObRawExpr *&udf_expr, | |||||||
|                                                 ) |                                                 ) | ||||||
| { | { | ||||||
|   int ret = OB_SUCCESS; |   int ret = OB_SUCCESS; | ||||||
|   ObRawExpr *expr = NULL; |   // ObRawExpr *expr = NULL; | ||||||
|   ObResolverParams params; |   // ObResolverParams params; | ||||||
|   ObStmtFactory stmt_factory(expr_factory.get_allocator()); |   // ObStmtFactory stmt_factory(expr_factory.get_allocator()); | ||||||
|   params.expr_factory_ = &expr_factory; |   // params.expr_factory_ = &expr_factory; | ||||||
|   params.allocator_ = &(expr_factory.get_allocator()); |   // params.allocator_ = &(expr_factory.get_allocator()); | ||||||
|   params.session_info_ = const_cast<ObSQLSessionInfo *>(&session_info); |   // params.session_info_ = const_cast<ObSQLSessionInfo *>(&session_info); | ||||||
|   params.schema_checker_ = const_cast<ObSchemaChecker *>(schema_checker); |   // params.schema_checker_ = const_cast<ObSchemaChecker *>(schema_checker); | ||||||
|   params.sql_proxy_ = GCTX.sql_proxy_; |   // params.sql_proxy_ = GCTX.sql_proxy_; | ||||||
|   params.stmt_factory_ = &stmt_factory; |   // params.stmt_factory_ = &stmt_factory; | ||||||
|   params.query_ctx_ = NULL; |   // params.query_ctx_ = NULL; | ||||||
|   // indicate not from pl scope; all symbol is searched inside schema |   // // indicate not from pl scope; all symbol is searched inside schema | ||||||
|   params.secondary_namespace_ = NULL; |   // params.secondary_namespace_ = NULL; | ||||||
|  |  | ||||||
|   CK (OB_NOT_NULL(schema_checker)); |   // CK (OB_NOT_NULL(schema_checker)); | ||||||
|   CK (OB_NOT_NULL(schema_checker->get_schema_guard())); |   // CK (OB_NOT_NULL(schema_checker->get_schema_guard())); | ||||||
|   if (OB_FAIL(ret)) { |   // if (OB_FAIL(ret)) { | ||||||
|     LOG_WARN("faile to check params, NULL schema guard", K(ret)); |   //   LOG_WARN("faile to check params, NULL schema guard", K(ret)); | ||||||
|   } else if (OB_FAIL(ObResolverUtils::resolve_external_symbol(*params.allocator_, |   // } else if (OB_FAIL(ObResolverUtils::resolve_external_symbol(*params.allocator_, | ||||||
|                                                         *params.expr_factory_, |   //                                                       *params.expr_factory_, | ||||||
|                                                         *params.session_info_, |   //                                                       *params.session_info_, | ||||||
|                                                         *params.schema_checker_->get_schema_guard(), |   //                                                       *params.schema_checker_->get_schema_guard(), | ||||||
|                                                         params.sql_proxy_, |   //                                                       params.sql_proxy_, | ||||||
|                                                         &(params.external_param_info_), |   //                                                       &(params.external_param_info_), | ||||||
|                                                         params.secondary_namespace_, |   //                                                       params.secondary_namespace_, | ||||||
|                                                         q_name, |   //                                                       q_name, | ||||||
|                                                         columns, |   //                                                       columns, | ||||||
|                                                         real_exprs, |   //                                                       real_exprs, | ||||||
|                                                         expr))) { |   //                                                       expr))) { | ||||||
|     LOG_WARN("failed to resolve var", K(q_name), K(ret)); |   //   LOG_WARN("failed to resolve var", K(q_name), K(ret)); | ||||||
|   } else if (OB_ISNULL(expr)) { |   // } else if (OB_ISNULL(expr)) { | ||||||
|     ret = OB_ERR_UNEXPECTED; |   //   ret = OB_ERR_UNEXPECTED; | ||||||
|     LOG_WARN("Invalid expr", K(expr), K(ret)); |   //   LOG_WARN("Invalid expr", K(expr), K(ret)); | ||||||
|   } else if (expr->is_udf_expr() && !expr->is_deterministic()) { |   // } else if (expr->is_udf_expr() && !expr->is_deterministic()) { | ||||||
|     ret = OB_ERR_USE_UDF_NOT_DETERMIN; |   //   ret = OB_ERR_USE_UDF_NOT_DETERMIN; | ||||||
|     LOG_WARN("generated column expect deterministic udf", K(q_name), K(ret)); |   //   LOG_WARN("generated column expect deterministic udf", K(q_name), K(ret)); | ||||||
|     LOG_USER_ERROR(OB_ERR_USE_UDF_NOT_DETERMIN); |   //   LOG_USER_ERROR(OB_ERR_USE_UDF_NOT_DETERMIN); | ||||||
|   } else if (expr->is_udf_expr()) { |   // } else if (expr->is_udf_expr()) { | ||||||
|     ObUDFRawExpr *udf1_expr = static_cast<ObUDFRawExpr*>(expr); |   //   ObUDFRawExpr *udf1_expr = static_cast<ObUDFRawExpr*>(expr); | ||||||
|     ObSchemaObjVersion udf_version; |   //   ObSchemaObjVersion udf_version; | ||||||
|     CK (OB_NOT_NULL(udf1_expr)); |   //   CK (OB_NOT_NULL(udf1_expr)); | ||||||
|     if (OB_SUCC(ret) && udf1_expr->need_add_dependency() && OB_NOT_NULL(stmt)) { |   //   if (OB_SUCC(ret) && udf1_expr->need_add_dependency() && OB_NOT_NULL(stmt)) { | ||||||
|       OZ (udf1_expr->get_schema_object_version(udf_version)); |   //     OZ (udf1_expr->get_schema_object_version(udf_version)); | ||||||
|       OZ (stmt->add_global_dependency_table(udf_version)); |   //     OZ (stmt->add_global_dependency_table(udf_version)); | ||||||
|     } |   //   } | ||||||
|     //for udf without params, we just set called_in_sql = true, |   //   //for udf without params, we just set called_in_sql = true, | ||||||
|     //if this expr go through pl :: build_raw_expr later, |   //   //if this expr go through pl :: build_raw_expr later, | ||||||
|     //the flag will change to false; |   //   //the flag will change to false; | ||||||
|     OX (expr->set_is_called_in_sql(true)); |   //   OX (expr->set_is_called_in_sql(true)); | ||||||
|     OX (udf_expr = expr); |   //   OX (udf_expr = expr); | ||||||
|   } else { |   // } else { | ||||||
|     ret = OB_ERR_UNEXPECTED; |   //   ret = OB_ERR_UNEXPECTED; | ||||||
|     LOG_WARN("unexpected expr, expect udf expr", K(ret), K(q_name)); |   //   LOG_WARN("unexpected expr, expect udf expr", K(ret), K(q_name)); | ||||||
|   } |   // } | ||||||
|  |   ret = OB_NOT_SUPPORTED; | ||||||
|  |   LOG_USER_ERROR(OB_NOT_SUPPORTED, "using udf as generated column"); | ||||||
|  |   LOG_WARN("using udf as generated column is not supported", K(ret)); | ||||||
|   return ret; |   return ret; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 jingtaoye35
					jingtaoye35