diff --git a/src/sql/code_generator/ob_tsc_cg_service.cpp b/src/sql/code_generator/ob_tsc_cg_service.cpp index 8b18ec2d6c..d1f98fa4ad 100644 --- a/src/sql/code_generator/ob_tsc_cg_service.cpp +++ b/src/sql/code_generator/ob_tsc_cg_service.cpp @@ -1081,7 +1081,7 @@ int ObTscCgService::generate_table_loc_meta(uint64_t table_loc_id, } if (OB_SUCC(ret) && !table_schema.is_global_index_table()) { TableLocRelInfo *rel_info = nullptr; - ObTableID data_table_id = table_schema.is_index_table() ? + ObTableID data_table_id = table_schema.is_index_table() && !table_schema.is_rowkey_doc_id() ? table_schema.get_data_table_id() : real_table_id; rel_info = cg_.opt_ctx_->get_loc_rel_info_by_id(table_loc_id, data_table_id); diff --git a/src/sql/resolver/dml/ob_dml_resolver.cpp b/src/sql/resolver/dml/ob_dml_resolver.cpp index 814798a73a..f8d0a2c82d 100755 --- a/src/sql/resolver/dml/ob_dml_resolver.cpp +++ b/src/sql/resolver/dml/ob_dml_resolver.cpp @@ -17417,8 +17417,8 @@ int ObDMLResolver::try_add_join_table_for_fts(const TableItem *left_table, Table right_table->database_name_ = left_table->database_name_; if (OB_FAIL(get_stmt()->add_table_item(session_info_, right_table))) { STORAGE_FTS_LOG(WARN, "fail to add right table item", K(ret), K(right_table)); - } else if (OB_FAIL(get_stmt()->set_part_expr(right_table->table_id_, right_table->ref_id_, part_expr, subpart_expr))) { - STORAGE_FTS_LOG(WARN, "fail to set right table partition expr", K(ret), KPC(right_table), KPC(left_table)); + } else if (OB_FAIL(resolve_table_partition_expr(*right_table, *table_schema))) { + STORAGE_FTS_LOG(WARN, "fail to resolve table partition expr", K(ret), KPC(right_table), KPC(table_schema)); } else if (OB_FAIL(create_joined_table_item(ObJoinType::INNER_JOIN, left_table, right_table, joined_table))) { STORAGE_FTS_LOG(WARN, "fail to create joined table item", K(ret), KPC(left_table), KPC(right_table)); } else if (OB_FAIL(add_all_rowkey_columns_to_stmt(*left_table, left_column_exprs))) { diff --git a/src/sql/rewrite/ob_transformer_impl.cpp b/src/sql/rewrite/ob_transformer_impl.cpp index 4a368b83d1..1dfb1ff2b0 100644 --- a/src/sql/rewrite/ob_transformer_impl.cpp +++ b/src/sql/rewrite/ob_transformer_impl.cpp @@ -428,6 +428,11 @@ int ObTransformerImpl::choose_rewrite_rules(ObDMLStmt *stmt, uint64_t &need_type func.contain_fulltext_search_ || func.contain_dml_with_doc_id_) { disable_list = ObTransformRule::ALL_TRANSFORM_RULES; } + if (func.contain_dml_with_doc_id_) { + uint64_t dml_with_doc_id_enable_list = 0; + ObTransformRule::add_trans_type(dml_with_doc_id_enable_list, PREDICATE_MOVE_AROUND); + disable_list &= (~dml_with_doc_id_enable_list); + } if (func.contain_sequence_) { ObTransformRule::add_trans_type(disable_list, WIN_MAGIC); }