diff --git a/src/share/stat/ob_opt_stat_monitor_manager.cpp b/src/share/stat/ob_opt_stat_monitor_manager.cpp index 9872adeff2..3a64f5eda2 100644 --- a/src/share/stat/ob_opt_stat_monitor_manager.cpp +++ b/src/share/stat/ob_opt_stat_monitor_manager.cpp @@ -974,9 +974,9 @@ int ObOptStatMonitorManager::clean_useless_dml_stat_info(uint64_t tenant_id) share::OB_ALL_MONITOR_MODIFIED_TNAME, all_table_name, share::OB_ALL_DATABASE_TNAME, OB_MAX_INNER_TABLE_ID))) { LOG_WARN("failed to append fmt", K(ret)); - } else if (OB_FAIL(delete_part_sql.append_fmt("DELETE FROM %s m WHERE (tenant_id, table_id, tablet_id) IN ( "\ - "SELECT m.tenant_id, m.table_id, m.tablet_id FROM "\ - "%s m, %s t, %s db WHERE t.table_id = m.table_id AND t.tenant_id = m.tenant_id AND t.part_level > 0 "\ + } else if (OB_FAIL(delete_part_sql.append_fmt("DELETE /*+use_nl(m1)*/FROM %s m1 WHERE (tenant_id, table_id, tablet_id) IN ( "\ + "SELECT /*+leading(db, t, m, view1, view2) use_hash(m) use_hash(view1) use_hash(view2)*/ "\ + "m.tenant_id, m.table_id, m.tablet_id FROM %s m, %s t, %s db WHERE t.table_id = m.table_id AND t.tenant_id = m.tenant_id AND t.part_level > 0 "\ "AND t.tenant_id = db.tenant_id AND t.database_id = db.database_id AND db.database_name != '__recyclebin' "\ "AND NOT EXISTS (SELECT 1 FROM %s p WHERE p.table_id = m.table_id AND p.tenant_id = m.tenant_id AND p.tablet_id = m.tablet_id) "\ "AND NOT EXISTS (SELECT 1 FROM %s sp WHERE sp.table_id = m.table_id AND sp.tenant_id = m.tenant_id AND sp.tablet_id = m.tablet_id)) "\ diff --git a/src/sql/optimizer/ob_log_table_scan.cpp b/src/sql/optimizer/ob_log_table_scan.cpp index 0c7a6810ef..26f801c225 100644 --- a/src/sql/optimizer/ob_log_table_scan.cpp +++ b/src/sql/optimizer/ob_log_table_scan.cpp @@ -1769,6 +1769,10 @@ int ObLogTableScan::print_used_hint(PlanText &plan_text) && OpParallelRule::OP_HINT_DOP == get_op_parallel_rule() && OB_FAIL(table_hint->parallel_hint_->print_hint(plan_text))) { LOG_WARN("failed to print table parallel hint", K(ret)); + } else if (NULL != table_hint->dynamic_sampling_hint_ && + table_hint->dynamic_sampling_hint_->get_dynamic_sampling() != ObGlobalHint::UNSET_DYNAMIC_SAMPLING && + OB_FAIL(table_hint->dynamic_sampling_hint_->print_hint(plan_text))) { + LOG_WARN("failed to print dynamic sampling hint", K(ret)); } else if (NULL != table_hint->use_das_hint_ && use_das() == table_hint->use_das_hint_->is_enable_hint() && OB_FAIL(table_hint->use_das_hint_->print_hint(plan_text))) { diff --git a/src/sql/resolver/dml/ob_hint.cpp b/src/sql/resolver/dml/ob_hint.cpp index 2abf904d91..de91702d85 100644 --- a/src/sql/resolver/dml/ob_hint.cpp +++ b/src/sql/resolver/dml/ob_hint.cpp @@ -958,6 +958,7 @@ const char* ObHint::get_hint_name(ObItemType type, bool is_enable_hint /* defaul case T_DISTINCT_PUSHDOWN: return is_enable_hint ? "DISTINCT_PUSHDOWN" : "NO_DISTINCT_PUSHDOWN"; case T_USE_HASH_SET: return is_enable_hint ? "USE_HASH_SET" : "NO_USE_HASH_SET"; case T_USE_DISTRIBUTED_DML: return is_enable_hint ? "USE_DISTRIBUTED_DML" : "NO_USE_DISTRIBUTED_DML"; + case T_TABLE_DYNAMIC_SAMPLING: return "DYNAMIC_SAMPLING"; default: return NULL; } } diff --git a/src/sql/resolver/dml/ob_hint.h b/src/sql/resolver/dml/ob_hint.h index ad5cc6cdf1..ac45379dca 100644 --- a/src/sql/resolver/dml/ob_hint.h +++ b/src/sql/resolver/dml/ob_hint.h @@ -992,7 +992,7 @@ struct ObDDLSchemaVersionHint class ObTableDynamicSamplingHint : public ObOptHint { public: - ObTableDynamicSamplingHint(ObItemType hint_type) + ObTableDynamicSamplingHint(ObItemType hint_type = T_TABLE_DYNAMIC_SAMPLING) : ObOptHint(hint_type), dynamic_sampling_(ObGlobalHint::UNSET_DYNAMIC_SAMPLING), sample_block_cnt_(0) { set_hint_class(HINT_TABLE_DYNAMIC_SAMPLING);