to issue<53586439>:support set ob_query_timeout in non-nested store routine

This commit is contained in:
obdev
2024-02-07 09:05:08 +00:00
committed by ob-robot
parent 160ff54fe6
commit 6e687799b9
4 changed files with 18 additions and 25 deletions

View File

@ -257,6 +257,23 @@ int ObSPIResultSet::is_set_global_var(ObSQLSessionInfo &session, const ObString
} else if (T_VAR_VAL == set_node->type_ &&
1 == set_node->value_) { // global var
has_global_variable = true;
} else if (set_node->num_child_ > 0 && OB_NOT_NULL(set_node->children_[0])) {
ParseNode *var = set_node->children_[0];
ObString name;
if (T_OBJ_ACCESS_REF == var->type_) { //Oracle mode
const ParseNode *name_node = NULL;
if (OB_ISNULL(name_node = var->children_[0])) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("get unexpected null", K(ret));
} else {
name.assign_ptr(name_node->str_value_, static_cast<int32_t>(name_node->str_len_));
}
} else if (T_SYSTEM_VARIABLE == var->type_) {
name.assign_ptr(var->str_value_, static_cast<int32_t>(var->str_len_));
}
if (OB_SUCC(ret) && 0 == name.case_compare("ob_query_timeout")) {
has_global_variable = true;
}
}
}
}

View File

@ -1199,10 +1199,6 @@ ObSql::TimeoutGuard::TimeoutGuard(ObSQLSessionInfo &session)
{
int ret = OB_SUCCESS;
worker_timeout_ = THIS_WORKER.get_timeout_ts();
if (OB_FAIL(session_.get_query_timeout(query_timeout_))
|| OB_FAIL(session_.get_tx_timeout(trx_timeout_))) {
LOG_ERROR("get timeout failed", KR(ret), K(query_timeout_), K(trx_timeout_));
}
}
ObSql::TimeoutGuard::~TimeoutGuard()
@ -1211,24 +1207,6 @@ ObSql::TimeoutGuard::~TimeoutGuard()
if (THIS_WORKER.get_timeout_ts() != worker_timeout_) {
THIS_WORKER.set_timeout_ts(worker_timeout_);
}
int64_t query_timeout = 0;
int64_t trx_timeout = 0;
if (OB_FAIL(session_.get_query_timeout(query_timeout))
|| OB_FAIL(session_.get_tx_timeout(trx_timeout))) {
LOG_ERROR("get timeout failed", KR(ret), K(query_timeout), K(trx_timeout));
} else {
if (query_timeout != query_timeout_ || trx_timeout != trx_timeout_) {
ObObj query_val, trx_val;
query_val.set_int(query_timeout_);
trx_val.set_int(trx_timeout_);
if (OB_FAIL(ret)) {
} else if (OB_FAIL(session_.update_sys_variable(SYS_VAR_OB_QUERY_TIMEOUT, query_val))) {
LOG_WARN("set sys variable failed", K(ret), K(OB_SV_QUERY_TIMEOUT), K(query_val));
} else if (OB_FAIL(session_.update_sys_variable(SYS_VAR_OB_TRX_TIMEOUT, trx_val))) {
LOG_WARN("set sys variable failed", K(ret), K(OB_SV_TRX_TIMEOUT), K(trx_val));
}
}
}
}
int ObSql::set_timeout_for_pl(ObSQLSessionInfo &session_info, int64_t &abs_timeout_us)

View File

@ -245,8 +245,6 @@ private:
private:
ObSQLSessionInfo &session_;
int64_t worker_timeout_;
int64_t query_timeout_;
int64_t trx_timeout_;
};
private:

View File

@ -484,7 +484,7 @@ select @@session.ob_trx_timeout;
+--------------------------+
| @@session.ob_trx_timeout |
+--------------------------+
| 100000000 |
| 100000001 |
+--------------------------+
set @@session.ob_trx_timeout=100000000;