add for insert values statement split&rewrite batch optimization

This commit is contained in:
yishenglanlingzui
2023-08-14 15:12:40 +00:00
committed by ob-robot
parent 15934d24ac
commit 9b3f07d4ad
37 changed files with 1653 additions and 290 deletions

View File

@ -61,8 +61,20 @@ public:
bool is_insert_select() const { return is_insert_select_; }
virtual bool is_single_value() const override
{
return NULL != get_stmt() && get_stmt()->is_insert_stmt() &&
static_cast<const ObInsertStmt*>(get_stmt())->is_insert_single_value();
bool is_single_values = false;
if (NULL != get_stmt() && get_stmt()->is_insert_stmt() &&
static_cast<const ObInsertStmt*>(get_stmt())->is_insert_single_value()) {
is_single_values = true;
}
// After rewriting the multi-line insert, the SQL statement will become a single-line insert,
// so it is necessary to judge whether it is insert_batch_opt
if (is_single_values && OB_NOT_NULL(get_plan())) {
if (get_plan()->get_optimizer_context().is_do_insert_batch_opt()) {
is_single_values = false;
}
}
return is_single_values;
}
const ObIArray<IndexDMLInfo *> &get_replace_index_dml_infos() const